diff --git a/AY2324S1-CS2103-T16-3_tp_master/authorship.json b/AY2324S1-CS2103-T16-3_tp_master/authorship.json index 39c0e0de..3415be2c 100644 --- a/AY2324S1-CS2103-T16-3_tp_master/authorship.json +++ b/AY2324S1-CS2103-T16-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"# UniCa$h","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp/graph/badge.svg?token\u003dLPKS424C1Y)](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp)","lastModifiedDate":"2023-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"\u003e UniCa$h is a finance tracking application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"## About","lastModifiedDate":"2023-10-02"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"[//]: # (TODO Change this image)","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"User Target Profile: Our application is for university students who want to be more financially conscious about their","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"spending habits, to enable them to make more economical decisions that provide students on a limited budget with more","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"purchasing power.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"Value Proposition: It provides university students with an intuitive and frictionless experience to have transparency on","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"their expenditure to help them better understand their spendings so they can develop better financial habits as they","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"transition into adulthood.","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"## Credits","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"woojiahao":16,"-":7}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"mainClassName \u003d \u0027unicash.Main\u0027","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" archiveFileName \u003d \u0027unicash.jar\u0027","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":70}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"### Woo Jia Hao","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"\u003cimg src\u003d\"images/woojiahao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"[[homepage](https://woojiahao.com/)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"[[github](https://github.com/woojiahao)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"[[portfolio](team/woojiahao.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"* Role: Integrations","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":"### Jamie Toh","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"\u003cimg src\u003d\"images/jamz903.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":"[[github](http://github.com/jamz903)]","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":"[[portfolio](team/jamz903.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":"* Responsibilities: Testing","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"### Tan Lip Wei","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"\u003cimg src\u003d\"images/lipwei1808.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"[[github](http://github.com/lipwei1808)] [[portfolio](team/lipwei1808.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"* Responsibilities: Model","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"### Ernest Liu","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":"\u003cimg src\u003d\"images/elhy1999.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":"[[github](http://github.com/elhy1999)]","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":"[[portfolio](team/elhy1999.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":"* Responsibilities: Documentations","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"### Rubesh Suresh","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cimg src\u003d\"images/sp4ce-cowboy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":"[[github](http://github.com/sp4ce-cowboy)]","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"[[portfolio](team/sp4ce-cowboy.md))]","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"* Responsibilities: Storage","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":6,"lipwei1808":4,"jamz903":6,"-":33,"elhy1999":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"# UniCa$h Developer Guide [CS2103 T16-Group_3 TP]","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"**Name:** UniCa$h","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"**User Target Profile:** Our application is for university students who want to be more financially conscious about their spending habits, to enable them to make more economical decisions that provide students on a limited budget with more purchasing power.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"**Value Proposition:** It provides university students with an intuitive and frictionless experience to have transparency on their expenditure to help them better understand their spendings so they can develop better financial habits as they transition into adulthood. ","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"## Potential Features:","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"- For every user \u003e track individual finances (base)","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"- Input spending \u0026 set budgets (base)","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tag another user and distribute the spendings during outings (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"- Viewing spending habits (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"- Provide price list comparison for all available food outlets near NUS (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"- Allow users to set repeating events (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tagging people for payments gives them a notification (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"## Feature List [v1.2]","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Track Finances","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"- Create transactions - Name, date, location, Tag (type/category)","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" - Input either Income or Expense","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"- Delete transactions - Delete a single transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" - Remove either an Income or an Expense","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"- Clear transactions - Mass delete all transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"- Edit transactions - Modify transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"- Find transaction - Find a transaction by a given keyword ","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tabulate total expenditure - Sum of all expenses \u0026 remaining balance","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Categorize Finances","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"- Add tags – provide category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"- Edit tags - change category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"- Remove tags - delete category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"## Use Cases","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"The following documents use cases for our application","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"For the following Use Cases (unless specified otherwise):","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"- The System is `UniCa$h`","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"- The Actor is `User`","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC01 - Adding a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to add a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h adds the transaction to the transactions list and displays success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" ","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"- 2b. User enters an extremely high number","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" - 2b1. UniCa$h prompts the user with a warning of the input","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" - 2b2. User confirms the request","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 3.","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC02 - Finding a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to find a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h filters all the transactions based on the specified filters and returns","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":"the filtered transaction with a success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" - 1a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"- 3a. UniCa$h does not find any results matching the filter.","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" - 3a1. UniCa$h displays a message saying no results found.","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC03 - Delete a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to delete a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h finds the transaction based on the passed in arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":"4. UniCa$h deletes the transaction.","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":"5. UniCa$h displays success message.","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. UniCa$h does not find any transactions matching the provided arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" - 3a1. UniCa$h displays a message saying no results found.","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"jamz903"},"content":"#### Use Case: UC05 - Listing All Transactions","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to list all transactions with the correct format (i.e. no parameters).","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h retrieves the list of all transactions and displays them for the User.","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":110,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"jamz903"},"content":"- 2a. User enters the command with the incorrect format (i.e. with parameters).","lastModifiedDate":"2023-10-11"},{"lineNumber":112,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for the correct format.","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"jamz903"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. There are no transactions for UniCa$h to retrieve.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"jamz903"},"content":" - 3a1. UniCa$h displays a message informing the User that there are no expenses. ","lastModifiedDate":"2023-10-11"},{"lineNumber":117,"author":{"gitId":"jamz903"},"content":" - Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC06 - Finding a Transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"jamz903"},"content":"1. User enters the command to find transaction with the correct format.","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h filters the transactions based on the specified filters and returns the filtered list of expenses with a success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"jamz903"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-11"},{"lineNumber":129,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for correct format.","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"jamz903"},"content":" - 2a2. User enters command with new format.","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"jamz903"},"content":" ","lastModifiedDate":"2023-10-11"},{"lineNumber":132,"author":{"gitId":"jamz903"},"content":" Steps 2a1-2a2 are repeated until the format entered is correct.","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"jamz903"},"content":" Use case resumes from Step 3.","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"jamz903"},"content":"- 3a. UniCa$h does not find any results matching the filter.","lastModifiedDate":"2023-10-11"},{"lineNumber":137,"author":{"gitId":"jamz903"},"content":" - 3a1. UniCa$h displays a message informing the user that no results were found.","lastModifiedDate":"2023-10-11"},{"lineNumber":138,"author":{"gitId":"jamz903"},"content":" - Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC07 - Tabulate Total Expenditure","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to tabulate total expenditure.","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":144,"author":{"gitId":"jamz903"},"content":"3. UniCa$h tabulates the expenditure based on the parameters passed in.","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"jamz903"},"content":"4. UniCa$h displays the tabulated expenditure.","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":149,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":150,"author":{"gitId":"jamz903"},"content":"- 2a. User detects an issue with the command entered.","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for command to be re-entered.","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"jamz903"},"content":" - 2a2. User enters command again.","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":154,"author":{"gitId":"jamz903"},"content":" Steps 2a1-2a2 are repeated until the command entered is correct.","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":156,"author":{"gitId":"jamz903"},"content":" Use case resumes from Step 3.","lastModifiedDate":"2023-10-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC08 - Clear all transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to clear all transactions with the correct format. (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h deletes all transactions in the transactions list.","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":"4. UniCa$h displays success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. UniCa$h finds an empty transactions list.","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"sp4ce-cowboy"},"content":" - 3a1. UniCa$h displays a message saying that transactions list is empty.","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC09 - Show UniCa$h Help","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to show help with the correct format. (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h displays help message in the help window.","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC10 - Exit UniCa$h","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to exit UniCa$h with the correct format (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request. ","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h displays exit message and application closes","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":204,"author":{"gitId":"sp4ce-cowboy"},"content":"## Links","lastModifiedDate":"2023-09-26"},{"lineNumber":205,"author":{"gitId":"sp4ce-cowboy"},"content":"User Stories: [https://github.com/orgs/AY2324S1-CS2103-T16-3/projects/1/views/2](https://github.com/orgs/AY2324S1-CS2103-T16-3/projects/1/views/2)","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":207,"author":{"gitId":"sp4ce-cowboy"},"content":"Project Website: [https://ay2324s1-cs2103-t16-3.github.io/tp/](https://ay2324s1-cs2103-t16-3.github.io/tp/)","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"sp4ce-cowboy":82,"lipwei1808":38,"jamz903":35,"-":52}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Setting up and getting started","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" 1. Run the `seedu.address.Main` [OR] `unicash.Main` and try a few commands.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":54}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Testing guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g. `unicash.commons.util.StringUtilTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"2. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest` ","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g `unicash.storage.StorageManagerTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"3. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g. `unicash.logic.LogicManagerTest`","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":34}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"UniCa$h is a **is a desktop application used for university students who want to be more financially conscious,","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"GUI). If you can type fast, UniCa$h can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"2. Download the latest `unicash.jar` from [coming soon]().","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your UniCa$h.","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar unicash.jar` command to","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" run the application.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":" * `commands coming soon!`","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"### Create Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"Allows a user to create an expense and all information associated with that expense including the name, amount,","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"category (defaults to \"Others\"), location (optional), and date (defaults to the current date) of the expense.","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"Command: `create \u003cname\u003e -amount \u003cexpense amount\u003e [-category \u003ccategory of expense\u003e] [-date \u003cdate of expense\u003e] [-location \u003clocation of expense\u003e]`","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"Command Argument: `name` represents the name of the expense to be added.","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":"Command Options:","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"| -amount | No | Amount of expense. Currency is SGD. |","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":"| -category | Yes | Category/type of expense, used to group and filter expenses.\u003cbr/\u003eDefaults to \"Others\" if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":"| -date | Yes | Date of when the expense was made. Follows format `dd/MM/yyyy`.\u003cbr/\u003eDefaults to date of creation if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":"| -location | Yes | Location where expense was made.\u003cbr/\u003eDefaults to `NULL` if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, date, location, and category","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy food -amount 7.50 -date 19/09/2023 -location Food Clique -category Food`","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy food\" of category \"Food\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated 19/09/2023.","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, location, and category but without date","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy groceries -amount 14.30 -category Food -location Fairprice`","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy groceries\" of category \"Food\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed.","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, and category but without date and location","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy stuff -amount 13.00 -category Misc`","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy stuff\" of category \"Misc\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed and have a `NULL` location.","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name and amount but without date, location, or category","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy things -amount 10.00`","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy things\" of category \"Others\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed, have a `NULL` location, and be","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":"\u003e assigned to the \"Others\" category by default.","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Missing `name` of expense","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create`","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":"\u003e Cannot create expense without expense name. Please specify the expense name as such: `create \u003cexpense name\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Missing `amount` option of expense","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something!`","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":"\u003e Cannot create expense without amount of expenditure. Please specify the expense amount as such: `create \u003cexpense name\u003e -amount \u003cexpense amount\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Invalid `amount` option value.","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something! -amount hi`","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":"\u003e Failed to create expense as amount is invalid, ensure that it is a number.","lastModifiedDate":"2023-10-05"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Invalid `date` option value.","lastModifiedDate":"2023-10-05"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something! -amount 14.30 -date today`","lastModifiedDate":"2023-10-05"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":"\u003e Failed to create expense as date is invalid, ensure that it is the following format: `dd/MM/yyyy`.","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":"### Edit Expense [coming soon]","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":"Allows a user to make edits to an existing expense, and all associated information.","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"elhy1999"},"content":"Command: `edit \u003cexpense_id\u003e -\u003cname of attribute 1\u003e \u003cnew attribute 1 value\u003e [-\u003cname of attribute N\u003e \u003cnew attribute N value\u003e …]`","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"Command Argument: `expense_id` is the ID of the expense to edit.","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":"Command Options:","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":174,"author":{"gitId":"elhy1999"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"elhy1999"},"content":"|--------------------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"elhy1999"},"content":"| -name of attribute | No | The attribute to make edits to. Possible values: `name`, `amount`, `category`, `date`, `location`\u003cbr/\u003e\u003cbr/\u003eNote: If `name of attribute` is date, then the associated `new attribute value` must be in format: `dd/MM/yyyy`.\u003cbr/\u003eNote: If `name of attribute` is amount, then the associated `new attribute value` must be a number.\u003cbr/\u003eNote: If `name of attribute` is not name or amount, then the associated `new attribute value` can be empty if the user wants to reset the attribute to the default value (NULL for location and Others for category). |","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"elhy1999"},"content":"| ... | Yes | More `name of attribute` `new attribute value` pairs to make more edits to the same expense |","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"elhy1999"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-04"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":"###### Example 1","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Editing one attribute of expense 3","lastModifiedDate":"2023-10-04"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 3 -location online`","lastModifiedDate":"2023-10-04"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":189,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":190,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":191,"author":{"gitId":"elhy1999"},"content":"\u003e Successful edits to expense 3:","lastModifiedDate":"2023-10-04"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":"\u003e location : online","lastModifiedDate":"2023-10-04"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":"###### Example 2","lastModifiedDate":"2023-10-04"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Setting the expense’s category to be default of “Others”","lastModifiedDate":"2023-10-04"},{"lineNumber":198,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 2 -category -location frontier pasta express -amount 5.8","lastModifiedDate":"2023-10-04"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":"`","lastModifiedDate":"2023-10-04"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":204,"author":{"gitId":"elhy1999"},"content":"\u003e Successful edits to expense 1:","lastModifiedDate":"2023-10-04"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":"\u003e category : “Others”","lastModifiedDate":"2023-10-04"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":"\u003e location : frontier pasta express","lastModifiedDate":"2023-10-04"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":"\u003e amount : $5.80","lastModifiedDate":"2023-10-04"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":210,"author":{"gitId":"elhy1999"},"content":"#### Failed Execution","lastModifiedDate":"2023-10-04"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":"###### Example 1","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: No attributes to edit","lastModifiedDate":"2023-10-04"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":216,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 1`","lastModifiedDate":"2023-10-04"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":218,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":219,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":220,"author":{"gitId":"elhy1999"},"content":"\u003e Please input an attribute to edit, and the new value to change the attribute to.","lastModifiedDate":"2023-10-04"},{"lineNumber":221,"author":{"gitId":"elhy1999"},"content":"\u003e Syntax: edit \u003cinteger\u003e -\u003cname of attribute\u003e \u003cnew attribute value\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":222,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":224,"author":{"gitId":"elhy1999"},"content":"###### Example 2","lastModifiedDate":"2023-10-04"},{"lineNumber":225,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":226,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: New attribute value for `name` is empty","lastModifiedDate":"2023-10-04"},{"lineNumber":227,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":228,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 1 -name`","lastModifiedDate":"2023-10-04"},{"lineNumber":229,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":230,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":231,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":232,"author":{"gitId":"elhy1999"},"content":"\u003e Attributes “name” and “amount” cannot be empty","lastModifiedDate":"2023-10-04"},{"lineNumber":233,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":234,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":"###### Example 3","lastModifiedDate":"2023-10-04"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: There are only 10 expenses in the list, but user tries to edit expense 100000","lastModifiedDate":"2023-10-04"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":239,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 100000 -location online`","lastModifiedDate":"2023-10-04"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":241,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":"\u003e There are only 10 expenses. Please provide an integer between 1 and 10 (received: 100000)","lastModifiedDate":"2023-10-04"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":246,"author":{"gitId":"elhy1999"},"content":"###### Example 4","lastModifiedDate":"2023-10-04"},{"lineNumber":247,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":248,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Wrong input format for “date” and “amount” attribute","lastModifiedDate":"2023-10-04"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 2 -date yesterday -amount 5.80.`","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"\u003e Attribute “date” must be of the form dd/MM/yyyy (received: yesterday)","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":"\u003e Attribute “amount” must be a number (received: 5.80.)","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":257,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":258,"author":{"gitId":"sp4ce-cowboy"},"content":"### Delete Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":259,"author":{"gitId":"sp4ce-cowboy"},"content":"Allows a user to delete a previously added expense and all information associated with that expense.","lastModifiedDate":"2023-10-05"},{"lineNumber":260,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":261,"author":{"gitId":"sp4ce-cowboy"},"content":"Command: `delete \u003cname\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":262,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":263,"author":{"gitId":"sp4ce-cowboy"},"content":"Command Argument: `name` represents the exact name of the expense intended to be deleted. ","lastModifiedDate":"2023-10-05"},{"lineNumber":264,"author":{"gitId":"sp4ce-cowboy"},"content":"Has to exactly match a given expense, or else the command will do nothing, ","lastModifiedDate":"2023-10-05"},{"lineNumber":265,"author":{"gitId":"sp4ce-cowboy"},"content":"so as to ensure the integrity of user data.","lastModifiedDate":"2023-10-05"},{"lineNumber":266,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":267,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":268,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":270,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":272,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":273,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense named “friday mcdonalds”","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":275,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete \"friday mcdonalds\"`","lastModifiedDate":"2023-10-05"},{"lineNumber":276,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":277,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":278,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":279,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eSuccessfully deleted expense “friday mcdonalds”!","lastModifiedDate":"2023-10-05"},{"lineNumber":280,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":281,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: The expense will be removed from file","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":283,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Unsuccessful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":284,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":285,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":286,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":287,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense command entered with no argument provided","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":289,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete `","lastModifiedDate":"2023-10-05"},{"lineNumber":290,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":291,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":292,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eNo expense deleted. Delete command must be followed with an expense to be deleted like this: delete \u003cexpense\u003e.","lastModifiedDate":"2023-10-05"},{"lineNumber":294,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":296,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":297,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":298,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":299,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense command entered with no matching expense name","lastModifiedDate":"2023-10-05"},{"lineNumber":300,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":301,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete asdf`","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":303,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":304,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":305,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eNo expense deleted. Delete command must be followed with a valid expense name.","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":308,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":309,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":310,"author":{"gitId":"sp4ce-cowboy"},"content":"### Mass Delete Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":311,"author":{"gitId":"sp4ce-cowboy"},"content":"Allows a user to delete all added expenses, and all associated information.","lastModifiedDate":"2023-10-05"},{"lineNumber":312,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"sp4ce-cowboy"},"content":"Command: `delete_all_expenses`","lastModifiedDate":"2023-10-05"},{"lineNumber":314,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"sp4ce-cowboy"},"content":"Command Argument: No arguments are needed for this command. ","lastModifiedDate":"2023-10-05"},{"lineNumber":316,"author":{"gitId":"sp4ce-cowboy"},"content":"The command is intentionally lengthy to ensure that mass deletion of all expenses is done intentionally.","lastModifiedDate":"2023-10-05"},{"lineNumber":317,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":318,"author":{"gitId":"sp4ce-cowboy"},"content":"Remarks: Confirmation for mass deletion to be implemented at a later date.","lastModifiedDate":"2023-10-05"},{"lineNumber":319,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":320,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":322,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":323,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":324,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":326,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete all expenses","lastModifiedDate":"2023-10-05"},{"lineNumber":327,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":328,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete_all_expenses`","lastModifiedDate":"2023-10-05"},{"lineNumber":329,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":330,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":332,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eSuccessfully deleted all expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: All expenses will be removed from file","lastModifiedDate":"2023-10-05"},{"lineNumber":335,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":336,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Unsuccessful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":337,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":338,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":340,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Mass deletion command entered improperly","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete_all `","lastModifiedDate":"2023-10-05"},{"lineNumber":343,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e Invalid command.","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":351,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Wrong delete command entered","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete`","lastModifiedDate":"2023-10-05"},{"lineNumber":355,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":356,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":358,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e No expense deleted. Delete command must be followed with an expense to be deleted like this: delete \u003cexpense\u003e.","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file. ","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e The above error is the same as the one for the simple “delete” function. ","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e In the above example, the delete_all_expenses functionality is ","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e intentionally obfuscated to prevent the user from accidental mass deletions. ","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e The rationale is that a user unsure of a basic command like delete is probably a new user, ","lastModifiedDate":"2023-10-05"},{"lineNumber":365,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e and a new user should not be directed to mass delete information. ","lastModifiedDate":"2023-10-05"},{"lineNumber":366,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e There are other, more proper ways to convey this information, such as this User Guide.","lastModifiedDate":"2023-10-05"},{"lineNumber":367,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":368,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":369,"author":{"gitId":"jamz903"},"content":"### List Expenses [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":370,"author":{"gitId":"jamz903"},"content":"Allows a user to retrieve a list of all their past expenses with details on where it was spent, type of spending and how much was spent.","lastModifiedDate":"2023-10-05"},{"lineNumber":371,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":372,"author":{"gitId":"jamz903"},"content":"Command: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":373,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":374,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":375,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":376,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":377,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":378,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":379,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":380,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command when there are no existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":381,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":383,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":384,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":385,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":386,"author":{"gitId":"jamz903"},"content":"\u003eYou have no expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":387,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":388,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":389,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":390,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":391,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":392,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":394,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":395,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":397,"author":{"gitId":"jamz903"},"content":"\u003e1. buy groceries 23/09/23 - $15.20 (groceries)","lastModifiedDate":"2023-10-05"},{"lineNumber":398,"author":{"gitId":"jamz903"},"content":"\u003e2. lunch at fc 23/09/23 - $5.50 (meals)","lastModifiedDate":"2023-10-05"},{"lineNumber":399,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":400,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":401,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":403,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":404,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with any parameters","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list 5`","lastModifiedDate":"2023-10-05"},{"lineNumber":407,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"jamz903"},"content":"\u003eCommand not recognised. Try using the command “list” instead.","lastModifiedDate":"2023-10-05"},{"lineNumber":411,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":412,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":413,"author":{"gitId":"jamz903"},"content":"### Find Expenses [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"jamz903"},"content":"Allows a user to retrieve the expense(s) that contain/matches any of the given keywords.","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"jamz903"},"content":"Command: `find \u003ckeyword\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"jamz903"},"content":"Command Parameters: `\u003ckeyword\u003e` is the keyword to look for in any of the stored expenses, it can be a single word or multiple words separated by spaces.","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":423,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":424,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command when there are no matching expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find chicken`","lastModifiedDate":"2023-10-05"},{"lineNumber":429,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":430,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":431,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":432,"author":{"gitId":"jamz903"},"content":"\u003eYou have no matching expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":433,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":434,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":435,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":436,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":437,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with keywords that match existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":438,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":439,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find lunch`","lastModifiedDate":"2023-10-05"},{"lineNumber":440,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":441,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":442,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":443,"author":{"gitId":"jamz903"},"content":"\u003e2 expenses found containing the word(s) “groceries”:","lastModifiedDate":"2023-10-05"},{"lineNumber":444,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":445,"author":{"gitId":"jamz903"},"content":"\u003e1. lunch at holland 16/09/23 - $15.20 (groceries)","lastModifiedDate":"2023-10-05"},{"lineNumber":446,"author":{"gitId":"jamz903"},"content":"\u003e4. lunch at fc 23/09/23 - $5.50 (meals)","lastModifiedDate":"2023-10-05"},{"lineNumber":447,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":448,"author":{"gitId":"jamz903"},"content":"\u003e**Note:** Index of retrieved list is respective to the order of the full expense list so index of 4 is the 4th expense stored in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":449,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":450,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":451,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":452,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":453,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command without any parameters","lastModifiedDate":"2023-10-05"},{"lineNumber":454,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":455,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find`","lastModifiedDate":"2023-10-05"},{"lineNumber":456,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":457,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":458,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":459,"author":{"gitId":"jamz903"},"content":"\u003eThe “find” command requires at least one word to search.","lastModifiedDate":"2023-10-05"},{"lineNumber":460,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":461,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":462,"author":{"gitId":"jamz903"},"content":"### Tabulate Total Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":463,"author":{"gitId":"jamz903"},"content":"Allows a user to view their total expenditure, filtered by category of spending or by month.","lastModifiedDate":"2023-10-05"},{"lineNumber":464,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":465,"author":{"gitId":"jamz903"},"content":"Command: `total [-category \u003ccategory\u003e] [-month \u003cmonth\u003e]`","lastModifiedDate":"2023-10-05"},{"lineNumber":466,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":467,"author":{"gitId":"jamz903"},"content":"Command Options:","lastModifiedDate":"2023-10-05"},{"lineNumber":468,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":469,"author":{"gitId":"jamz903"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-05"},{"lineNumber":470,"author":{"gitId":"jamz903"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":471,"author":{"gitId":"jamz903"},"content":"| -category | Yes | Category / type of expense. Defaults to accounting for all categories if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":472,"author":{"gitId":"jamz903"},"content":"| -month | Yes | Month of expenditure. Can either be the shorthand of the name like Sep or full name like September. \u003cbr/\u003e\u003cbr/\u003eDefaults to all months if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":473,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":474,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":475,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":476,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":477,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":478,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":479,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":480,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with no options.","lastModifiedDate":"2023-10-05"},{"lineNumber":481,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":482,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total`","lastModifiedDate":"2023-10-05"},{"lineNumber":483,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":484,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":485,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":486,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded is $1388.","lastModifiedDate":"2023-10-05"},{"lineNumber":487,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":488,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":489,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":490,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":491,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified category.","lastModifiedDate":"2023-10-05"},{"lineNumber":492,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":493,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food`","lastModifiedDate":"2023-10-05"},{"lineNumber":494,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":495,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":496,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":497,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for food is $780.","lastModifiedDate":"2023-10-05"},{"lineNumber":498,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":499,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":500,"author":{"gitId":"jamz903"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":501,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":502,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified month.","lastModifiedDate":"2023-10-05"},{"lineNumber":503,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":504,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -month June`","lastModifiedDate":"2023-10-05"},{"lineNumber":505,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":506,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":507,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":508,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for June is $400.","lastModifiedDate":"2023-10-05"},{"lineNumber":509,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":510,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":511,"author":{"gitId":"jamz903"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":512,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":513,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified category and month.","lastModifiedDate":"2023-10-05"},{"lineNumber":514,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":515,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food -month June`","lastModifiedDate":"2023-10-05"},{"lineNumber":516,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":517,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":518,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":519,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for food in June is $230.","lastModifiedDate":"2023-10-05"},{"lineNumber":520,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":521,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":522,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":523,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":524,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":525,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a category that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":526,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":527,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category chicken -month june`","lastModifiedDate":"2023-10-05"},{"lineNumber":528,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":529,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":530,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":531,"author":{"gitId":"jamz903"},"content":"\u003eThe category \"chicken\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":532,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":533,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":534,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":535,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a month that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":536,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":537,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food -month juely`","lastModifiedDate":"2023-10-05"},{"lineNumber":538,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":539,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":540,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":541,"author":{"gitId":"jamz903"},"content":"\u003eThe month \"juely\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":542,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":543,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":544,"author":{"gitId":"jamz903"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":545,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a category and month that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":546,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":547,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category chicken -month juely`","lastModifiedDate":"2023-10-05"},{"lineNumber":548,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":549,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":550,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":551,"author":{"gitId":"jamz903"},"content":"\u003eThe category \"chicken\" and month \"juely\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":552,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":554,"author":{"gitId":"lipwei1808"},"content":"### Create Income","lastModifiedDate":"2023-09-27"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":556,"author":{"gitId":"lipwei1808"},"content":"Allows a user to register an inflow of money (income) into the application.","lastModifiedDate":"2023-09-27"},{"lineNumber":557,"author":{"gitId":"lipwei1808"},"content":"Our application will store an income based on the name, value, date.","lastModifiedDate":"2023-09-27"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":559,"author":{"gitId":"lipwei1808"},"content":"Command: `create_income \u003cname\u003e [-value \u003cvalue of income\u003e] [-date \u003cdate of expense\u003e]`","lastModifiedDate":"2023-09-27"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":561,"author":{"gitId":"lipwei1808"},"content":"Command Argument: `name` represents the name of the income to be added.","lastModifiedDate":"2023-09-27"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":563,"author":{"gitId":"lipwei1808"},"content":"Command Options:","lastModifiedDate":"2023-09-27"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":565,"author":{"gitId":"lipwei1808"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-09-27"},{"lineNumber":566,"author":{"gitId":"lipwei1808"},"content":"|-------------|-----------|------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":567,"author":{"gitId":"lipwei1808"},"content":"| -value | No | Value of expense. Represents a positive number (integer/ float). |","lastModifiedDate":"2023-09-27"},{"lineNumber":568,"author":{"gitId":"lipwei1808"},"content":"| -date | Yes | Date of when the expense was made. Follows format dd/MM/yyyy \u003cbr\u003e\u003cbr\u003e Defaults to date of creation if not specified. |","lastModifiedDate":"2023-09-27"},{"lineNumber":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":570,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":572,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":573,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":574,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":576,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Create “work at lifo” income dated 19/09/2023 with value of 900.","lastModifiedDate":"2023-09-27"},{"lineNumber":577,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":578,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income work at liho -date 19/09/2023 -value 900`","lastModifiedDate":"2023-09-27"},{"lineNumber":579,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":580,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully created income “work at liho”!","lastModifiedDate":"2023-09-27"},{"lineNumber":581,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":582,"author":{"gitId":"lipwei1808"},"content":"\u003e**Remark**: The income will be dated 19/09/2023.","lastModifiedDate":"2023-09-27"},{"lineNumber":583,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":584,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":586,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":588,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":589,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":590,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":591,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":592,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income without income name.","lastModifiedDate":"2023-09-27"},{"lineNumber":593,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `create_income \u003cname\u003e -value \u003cvalue\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":595,"author":{"gitId":"lipwei1808"},"content":"###### Example 2","lastModifiedDate":"2023-09-27"},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":597,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `value` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":598,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":599,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working`","lastModifiedDate":"2023-09-27"},{"lineNumber":600,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":601,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income without income value.","lastModifiedDate":"2023-09-27"},{"lineNumber":602,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `create_income \u003cname\u003e -value \u003cvalue\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":604,"author":{"gitId":"lipwei1808"},"content":"###### Example 3","lastModifiedDate":"2023-09-27"},{"lineNumber":605,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":606,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `value` form (not positive number)","lastModifiedDate":"2023-09-27"},{"lineNumber":607,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":608,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working -value hi`","lastModifiedDate":"2023-09-27"},{"lineNumber":609,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":610,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income due to invalid income value type. Ensure that it is a positive number.","lastModifiedDate":"2023-09-27"},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":612,"author":{"gitId":"lipwei1808"},"content":"###### Example 4","lastModifiedDate":"2023-09-27"},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":614,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `date` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":615,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":616,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working -value 1300 -date today`","lastModifiedDate":"2023-09-27"},{"lineNumber":617,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":618,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income due to invalid date format. Ensure that it follows dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":620,"author":{"gitId":"lipwei1808"},"content":"### Delete Income","lastModifiedDate":"2023-09-27"},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":622,"author":{"gitId":"lipwei1808"},"content":"Allows a user to delete an income previously added into the application.","lastModifiedDate":"2023-09-27"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":624,"author":{"gitId":"lipwei1808"},"content":"Command: `delete_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":626,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":627,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":628,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":629,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":630,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":631,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":632,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Delete “work at liho” income.","lastModifiedDate":"2023-09-27"},{"lineNumber":633,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":634,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `delete_income work at liho`","lastModifiedDate":"2023-09-27"},{"lineNumber":635,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":636,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully deleted expense “work at liho”","lastModifiedDate":"2023-09-27"},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":638,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":639,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":640,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":641,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":642,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":643,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":644,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `delete_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":645,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":646,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot delete income without income `name`.","lastModifiedDate":"2023-09-27"},{"lineNumber":647,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `delete_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":648,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":649,"author":{"gitId":"lipwei1808"},"content":"### Find Income","lastModifiedDate":"2023-09-27"},{"lineNumber":650,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":651,"author":{"gitId":"lipwei1808"},"content":"Allows a user to search for an income(s) that was previously entered.","lastModifiedDate":"2023-09-27"},{"lineNumber":652,"author":{"gitId":"lipwei1808"},"content":"User can find income(s) through name.","lastModifiedDate":"2023-09-27"},{"lineNumber":653,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":654,"author":{"gitId":"lipwei1808"},"content":"Command: `find_income [-name \u003cname of income\u003e] [-value_more \u003cvalue of income\u003e] [-value_less \u003cvalue of income\u003e] [-date \u003cdate of income\u003e]`","lastModifiedDate":"2023-09-27"},{"lineNumber":655,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":656,"author":{"gitId":"lipwei1808"},"content":"Command Options:","lastModifiedDate":"2023-09-27"},{"lineNumber":657,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":658,"author":{"gitId":"lipwei1808"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-09-27"},{"lineNumber":659,"author":{"gitId":"lipwei1808"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":660,"author":{"gitId":"lipwei1808"},"content":"| -name | Yes | Name of income to find. |","lastModifiedDate":"2023-09-27"},{"lineNumber":661,"author":{"gitId":"lipwei1808"},"content":"| -value_more | Yes | Value of income, used to filter income more than value. |","lastModifiedDate":"2023-09-27"},{"lineNumber":662,"author":{"gitId":"lipwei1808"},"content":"| -value_less | Yes | Value of income, used to filter income less than value. |","lastModifiedDate":"2023-09-27"},{"lineNumber":663,"author":{"gitId":"lipwei1808"},"content":"| -date | Yes | Date of when the income was made. Follows format dd/MM/yyyy.\u003cbr\u003e\u003cbr\u003eFilters income added on that date. |","lastModifiedDate":"2023-09-27"},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":665,"author":{"gitId":"lipwei1808"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Note:**","lastModifiedDate":"2023-09-27"},{"lineNumber":666,"author":{"gitId":"lipwei1808"},"content":"If no options are specified, all income is returned.","lastModifiedDate":"2023-09-27"},{"lineNumber":667,"author":{"gitId":"lipwei1808"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":668,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":669,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":671,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":672,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":673,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":674,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":675,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Find “work at liho” income.","lastModifiedDate":"2023-09-27"},{"lineNumber":676,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":677,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income work at liho`","lastModifiedDate":"2023-09-27"},{"lineNumber":678,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":679,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully found income “work at liho”. Display information related to the income","lastModifiedDate":"2023-09-27"},{"lineNumber":680,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":681,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":682,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":683,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":685,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":686,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":687,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":688,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":689,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot find income without income name.","lastModifiedDate":"2023-09-27"},{"lineNumber":690,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `find_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":692,"author":{"gitId":"lipwei1808"},"content":"###### Example 2","lastModifiedDate":"2023-09-27"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":694,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `date` format","lastModifiedDate":"2023-09-27"},{"lineNumber":695,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":696,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income work at liho -date tomorrow`","lastModifiedDate":"2023-09-27"},{"lineNumber":697,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":698,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot find income due to invalid date format. Ensure that it follows dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":700,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"woojiahao"},"content":"**Q**: How do I transfer my data to another Computer?","lastModifiedDate":"2023-10-05"},{"lineNumber":709,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":710,"author":{"gitId":"woojiahao"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains","lastModifiedDate":"2023-10-05"},{"lineNumber":711,"author":{"gitId":"woojiahao"},"content":"the data of your previous UniCa$h home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":715,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":717,"author":{"gitId":"jamz903"},"content":"1. Currently no known issues!","lastModifiedDate":"2023-10-04"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":719,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":721,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"jamz903"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-10-05"},{"lineNumber":724,"author":{"gitId":"jamz903"},"content":"|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":725,"author":{"gitId":"jamz903"},"content":"| **Create Expense** | `create \u003cname\u003e -amount \u003cexpense amount\u003e [-category \u003ccategory of expense\u003e] [-date \u003cdate of expense\u003e] [-location \u003clocation of expense\u003e]` \u003cbr\u003e e.g., `create buy food -amount 7.50 -date 19/09/2023 -location Food Clique -category Food` |","lastModifiedDate":"2023-10-05"},{"lineNumber":726,"author":{"gitId":"jamz903"},"content":"| **Delete Expense** | `delete \u003cname\u003e`\u003cbr\u003e e.g., `delete grabfood_lunch` | |","lastModifiedDate":"2023-10-05"},{"lineNumber":727,"author":{"gitId":"jamz903"},"content":"| **Mass Delete Expenses** | `delete_all_expenses` |","lastModifiedDate":"2023-10-05"},{"lineNumber":728,"author":{"gitId":"jamz903"},"content":"| **Edit Expenses** | `edit \u003cexpense_id\u003e -\u003cname of attribute 1\u003e \u003cnew attribute 1 value\u003e [-\u003cname of attribute N\u003e \u003cnew attribute N value\u003e …​]`\u003cbr\u003e e.g.,`edit 3 -location online` |","lastModifiedDate":"2023-10-05"},{"lineNumber":729,"author":{"gitId":"jamz903"},"content":"| **List Expenses** | `list` |","lastModifiedDate":"2023-10-05"},{"lineNumber":730,"author":{"gitId":"jamz903"},"content":"| **Find Expenses** | `find \u003ckeyword\u003e` \u003cbr\u003e e.g., `find lunch` |","lastModifiedDate":"2023-10-05"},{"lineNumber":731,"author":{"gitId":"jamz903"},"content":"| **Tabulate Total Expense** | `total [-category \u003ccategory\u003e] [-month \u003cmonth\u003e]` \u003cbr\u003e e.g., `total -category Food -month June` |","lastModifiedDate":"2023-10-05"},{"lineNumber":732,"author":{"gitId":"jamz903"},"content":"| **Create Income** | `create_income \u003cname\u003e [-value \u003cvalue of income\u003e] [-date \u003cdate of expense\u003e]` \u003cbr\u003e e.g., `create_income work at liho -date 19/09/2023 -value 900` |","lastModifiedDate":"2023-10-05"},{"lineNumber":733,"author":{"gitId":"jamz903"},"content":"| **Delete Income** | `delete_income \u003cname\u003e` |","lastModifiedDate":"2023-10-05"},{"lineNumber":734,"author":{"gitId":"jamz903"},"content":"| **Find Income** | `find_income \u003cname\u003e [-value_more \u003cvalue of income\u003e] [-value_less \u003cvalue of income\u003e] [-date \u003cdate of income\u003e]` \u003cbr\u003e e.g., `find_income work at liho` |","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"sp4ce-cowboy":111,"woojiahao":136,"lipwei1808":103,"jamz903":198,"-":92,"elhy1999":94}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"woojiahao"},"content":" content: \"UniCa$h\";","lastModifiedDate":"2023-10-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"woojiahao":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"title: UniCa$h","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103-T16-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103-T16-3/tp/actions)","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp/graph/badge.svg?token\u003dLPKS424C1Y)](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp)","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"\u003e UniCa$h is a finance tracking application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"## About","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"[//]: # (TODO Change this image)","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"User Target Profile: Our application is for university students who want to be more financially conscious about their","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"spending habits, to enable them to make more economical decisions that provide students on a limited budget with more","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"purchasing power.","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"Value Proposition: It provides university students with an intuitive and frictionless experience to have transparency on","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"their expenditure to help them better understand their spendings so they can develop better financial habits as they","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"transition into adulthood.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"## Navigation","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"* If you are interested in using UniCa$h, head over to the","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"* If you are interested about developing UniCa$h, the [**Developer Guide**](DeveloperGuide.html) is a good place to","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" start.","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"## Acknowledgements","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"### Libraries","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"* [JavaFX](https://openjfx.io/)","lastModifiedDate":"2023-10-02"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"* [Jackson](https://github.com/FasterXML/jackson)","lastModifiedDate":"2023-10-02"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"* [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"woojiahao":28,"-":11}},{"path":"docs/team/elhy1999.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"title: Ernest\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"elhy1999"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"elhy1999"},"content":"UniCa$h is a desktop application used for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"elhy1999"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"elhy1999"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"elhy1999"},"content":" * What it does: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"elhy1999"},"content":" * Justification: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":" * Highlights: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"elhy1999"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"elhy1999":37}},{"path":"docs/team/jamz903.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jamz903"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"jamz903"},"content":"title: Jamie\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"jamz903"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":"UniCa$h is a desktop application used for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" * What it does: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" * Justification: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" * Highlights: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" * Managed releases `v1.1` (1 release) on GitHub","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"jamz903"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"jamz903":37}},{"path":"docs/team/lipwei1808.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"title: Tan Lip Wei\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"#### Overview","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"UniCa$h is a desktop application for university students who want to be more financially conscious.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"The project is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"#### Contributions","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"* **Project management**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"* **Enhancements to existing features**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Added documentation for the features related to `income` [to be added]()","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * Added implementation details of `income` related feature.","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"* **Community**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"* **Tools**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"lipwei1808":33}},{"path":"docs/team/sp4ce-cowboy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"title: Rubesh Suresh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Overview","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"UniCa$h is a desktop application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" * Storage","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * Responsible for the Storage functionality","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Project management**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Enhancements to existing features**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Added documentation for `expense` [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" * Migrated details of the Developer Guide from an external source and consolidated them in GitHub.","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Community**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Tools**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"sp4ce-cowboy":37}},{"path":"docs/team/woojiahao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"title: Jia Hao\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"woojiahao":46}},{"path":"src/main/java/unicash/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.FileUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":69}},{"path":"src/main/java/unicash/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2019-02-08"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * as a named module. We don\u0027t use JavaFX via the module system so it can\u0027t","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // packed into a FAT Jar file (as we do), which means this warning will persist even then.","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":39}},{"path":"src/main/java/unicash/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Version;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ConfigUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.LogicManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.Storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.StorageManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.UniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.UserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.ui.Ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.ui.UiManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Version VERSION \u003d new Version(1, 2, 0, true);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing UniCa$h ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" UniCashStorage uniCashStorage \u003d new JsonUniCashStorage(userPrefs.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Using data file : \" + storage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e uniCashOptional;","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash initialData;","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" uniCashOptional \u003d storage.readUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" if (uniCashOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Creating a new data file \" + storage.getUniCashFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" + \" populated with a sample UniCash.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" initialData \u003d uniCashOptional.orElseGet(SampleDataUtil::getSampleUniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" logger.warning(\"Data file at \" + storage.getUniCashFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" + \" Will be starting with an empty UniCash.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" initialData \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" if (configOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" if (prefsOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"Starting UniCa$h \" + MainApp.VERSION);","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Regular.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Medium.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Bold.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-SemiBold.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping UniCa$h ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":35,"woojiahao":13,"-":143}},{"path":"src/main/java/unicash/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Config values used by the app","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":64}},{"path":"src/main/java/unicash/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final double DEFAULT_HEIGHT \u003d 600;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final double DEFAULT_WIDTH \u003d 740;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":80}},{"path":"src/main/java/unicash/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String LOG_FILE \u003d \"addressbook.log\";","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":105}},{"path":"src/main/java/unicash/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a version with major, minor and patch number","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public int getMajor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return major;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public int getMinor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public int getPatch() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":120}},{"path":"src/main/java/unicash/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core.index;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":67}},{"path":"src/main/java/unicash/commons/enums/BudgetInterval.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.commons.enums;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents the budget interval for a given {@code Budget}.","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public enum BudgetInterval {","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" DAY(\"day\"),","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" WEEK(\"week\"),","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" MONTH(\"month\");","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private final String budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Constructs a BudgetInterval enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * @param budgetInterval the value representing the string value of the enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" BudgetInterval(String budgetInterval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" this.budgetInterval \u003d budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Returns the BudgetInterval object from a given string.","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @param budgetInterval a string value of the enum represented by the value provided.","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" * @return a BudgetInterval object of a transaction.","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public static BudgetInterval parseInterval(String budgetInterval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" .filter(type -\u003e type.budgetInterval.equals(budgetInterval))","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" .findFirst().orElseThrow();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Returns a boolean value if a given string is a valid BudgetInterval.","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param test a string value to be tested.","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" * @return a boolean value if the given string is a valid enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidBudgetInterval(String test) {","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" .anyMatch(type -\u003e type.budgetInterval.equals(test));","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" * Returns a list of all possible budget intervals separated by commas.","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public static String listBudgetIntervals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" StringJoiner stringJoiner \u003d new StringJoiner(\", \");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" for (BudgetInterval type : values()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" stringJoiner.add(type.budgetInterval);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" return stringJoiner.toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" * Returns the string value of a {@code BudgetInterval}.","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * @return the string representation of a BudgetInterval.","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" return budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":67}},{"path":"src/main/java/unicash/commons/enums/TransactionType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.enums;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents the transaction type for a given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public enum TransactionType {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" EXPENSE(\"expense\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" INCOME(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private final String transactionType;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Constructs a TransactionType enum.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param transactionType the value representing the string value of the enum.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" TransactionType(String transactionType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" this.transactionType \u003d transactionType;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Returns the TransactionType object from a given string.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * @param transactionType a string value of the enum represented by the value provided.","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @return a TransactionType object of a transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public static TransactionType parseType(String transactionType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" .filter(type -\u003e type.transactionType.equals(transactionType))","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" .findFirst().orElseThrow();","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Returns a boolean value if a given string is a valid TransactionType.","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" * @param test a string value to be tested.","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @return a boolean value if the given string is a valid enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidTransactionType(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" .anyMatch(type -\u003e type.transactionType.equals(test));","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" * Returns a list of all transaction types separated by commas.","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public static String listTransactionTypes() {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" StringJoiner stringJoiner \u003d new StringJoiner(\", \");","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" for (TransactionType type : values()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" stringJoiner.add(type.transactionType);","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" return stringJoiner.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" * Returns the string value of a {@code TransactionType}.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" * @return the string representation of a TransactionType.","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" return transactionType;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":1,"lipwei1808":65}},{"path":"src/main/java/unicash/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-06-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error during loading of data from a file.","lastModifiedDate":"2023-06-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-06-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class DataLoadingException extends Exception {","lastModifiedDate":"2023-06-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public DataLoadingException(Exception cause) {","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(cause);","lastModifiedDate":"2023-06-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-06-14"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":10}},{"path":"src/main/java/unicash/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param cause of the main exception","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public IllegalValueException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":20}},{"path":"src/main/java/unicash/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A container for App specific utility functions","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * This private constructor is declared to support a constructor initialisation","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * by code coverage.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private AppUtil() {}","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":6,"-":40}},{"path":"src/main/java/unicash/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private CollectionUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" * @see #requireAllNonNull(Collection)","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":7,"-":33}},{"path":"src/main/java/unicash/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A class for accessing the Config File.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigUtil {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private ConfigUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":20}},{"path":"src/main/java/unicash/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" private FileUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":4,"-":82}},{"path":"src/main/java/unicash/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Converts a Java object instance to JSON and vice versa","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" private JsonUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":141}},{"path":"src/main/java/unicash/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private StringUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":4,"-":66}},{"path":"src/main/java/unicash/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":52}},{"path":"src/main/java/unicash/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Returns the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" * Returns an unmodifiable view of the filtered list of transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":9,"lipwei1808":2,"-":28}},{"path":"src/main/java/unicash/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.UniCashParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.Storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" private final UniCashParser uniCashParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" uniCashParser \u003d new UniCashParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" Command command \u003d uniCashParser.parseCommand(commandText);","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" storage.saveUniCash(model.getUniCash());","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" return model.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" return model.getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"sp4ce-cowboy":14,"woojiahao":3,"lipwei1808":5,"-":60}},{"path":"src/main/java/unicash/logic/UniCashMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * Container for user visible messages.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashMessages {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n\\n%1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The transaction index provided is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_TRANSACTIONS_LISTED_OVERVIEW \u003d \"%1$d transactions listed!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_INVALID_MONTH \u003d \"Month must be between 1 and 12 (inclusive).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" * Formats the {@code transaction} for display to the user.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String formatTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" builder.append(transaction.getName())","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nType: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getType())","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nAmount: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getAmount())","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nDate: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getDateTime())","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nLocation: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" .append(transaction.getLocation())","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nCategory: \");","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" transaction.getCategories().forEach(builder::append);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" return builder.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":51,"woojiahao":1,"lipwei1808":2}},{"path":"src/main/java/unicash/logic/commands/AddTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.CliSyntax;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Adds a transaction to UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"add_transaction\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a transaction to UniCa$h. \\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_TYPE + \"TYPE \"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_AMOUNT + \"AMOUNT \"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_DATETIME + \"DATETIME \"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"[\" + CliSyntax.PREFIX_CATEGORY + \"CATEGORY]...\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_NAME + \"Buying groceries \"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_TYPE + \"expense \"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_AMOUNT + \"300 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_DATETIME + \"18-08-2001 19:30 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_LOCATION + \"ntuc \"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" + CliSyntax.PREFIX_CATEGORY + \"household\";","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New transaction added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private final Transaction toAdd;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" * Creates an AddTransactionCommand to add the specified {@code Transaction}","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public AddTransactionCommand(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" toAdd \u003d transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, UniCashMessages.formatTransaction(toAdd)));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof AddTransactionCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand otherCommand \u003d (AddTransactionCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" return toAdd.equals(otherCommand.toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":23,"lipwei1808":53}},{"path":"src/main/java/unicash/logic/commands/ClearTransactionsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" * Clears all transactions in UniCash.","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ClearTransactionsCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"clear_transactions\";","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"All transactions have been cleared!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" model.setUniCash(new UniCash());","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":23}},{"path":"src/main/java/unicash/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public abstract CommandResult execute(Model model) throws CommandException;","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":17}},{"path":"src/main/java/unicash/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":80}},{"path":"src/main/java/unicash/logic/commands/DeleteTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" * This class handles the deletion of a Transaction from the UniCa$h database.","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"delete_transaction\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \": Deletes the transaction identified by the index number used in the displayed transaction list.\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_DELETE_TRANSACTION_SUCCESS \u003d \"Deleted Transaction: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public DeleteTransactionCommand(Index targetIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cTransaction\u003e lastShownList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new CommandException(UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" model.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete)));","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!(other instanceof DeleteTransactionCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand otherDeleteCommand \u003d (DeleteTransactionCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":72}},{"path":"src/main/java/unicash/logic/commands/EditTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.Model.PREDICATE_SHOW_ALL_TRANSACTIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"elhy1999"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"elhy1999"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"elhy1999"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" * Edits the details of an existing transaction in the transactions list.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":" public static final String COMMAND_WORD \u003d \"edit_transaction\";","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the transaction identified \"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" + \"by the index number used in the displayed transaction list.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Existing values will be overwritten by the input values!\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_TYPE + \"TYPE] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_DATETIME + \"DATETIME] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" + \"[\" + PREFIX_LOCATION + \"LOCATION]\"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" + \"[\" + PREFIX_CATEGORY + \"CATEGORY]...\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":" + PREFIX_NAME + \"Buying groceries \"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":" + PREFIX_TYPE + \"expense \"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"elhy1999"},"content":" + PREFIX_AMOUNT + \"300 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" + PREFIX_DATETIME + \"18-08-2001 19:30 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" + PREFIX_LOCATION + \"ntuc\"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" + PREFIX_CATEGORY + \"household expenses \";","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_EDIT_TRANSACTION_SUCCESS \u003d \"Edited Transaction: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" private final Index index;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionDescriptor editTransactionDescriptor;","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" * @param index of the transaction in the filtered transaction list to edit","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" * @param editTransactionDescriptor details to edit the transaction with","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" public EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" Index index,","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" EditTransactionDescriptor editTransactionDescriptor","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" requireNonNull(editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" this.editTransactionDescriptor \u003d new EditTransactionDescriptor(editTransactionDescriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" List\u003cTransaction\u003e lastShownList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" throw new CommandException(MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" Transaction transactionToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d createEditedTransaction(transactionToEdit, editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"elhy1999"},"content":" model.setTransaction(transactionToEdit, editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" model.updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction)));","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"elhy1999"},"content":" * Creates and returns a {@code Transaction} with the details of {@code transactionToEdit}","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"elhy1999"},"content":" * edited with {@code editTransactionDescriptor}.","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" private static Transaction createEditedTransaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" Transaction transactionToEdit,","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" EditTransactionDescriptor editTransactionDescriptor","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"elhy1999"},"content":" assert transactionToEdit !\u003d null;","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"elhy1999"},"content":" Name updatedName \u003d editTransactionDescriptor.getName().orElse(transactionToEdit.getName());","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"elhy1999"},"content":" Amount updatedAmount \u003d editTransactionDescriptor.getAmount().orElse(transactionToEdit.getAmount());","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"elhy1999"},"content":" DateTime updatedDateTime \u003d editTransactionDescriptor.getDateTime().orElse(transactionToEdit.getDateTime());","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"elhy1999"},"content":" Location updatedLocation \u003d editTransactionDescriptor.getLocation().orElse(transactionToEdit.getLocation());","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"elhy1999"},"content":" Type updatedType \u003d editTransactionDescriptor.getType().orElse(transactionToEdit.getType());","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList updatedCategories \u003d editTransactionDescriptor.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" .orElse(transactionToEdit.getCategories());","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(updatedName, updatedType, updatedAmount, updatedDateTime,","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" updatedLocation, updatedCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"elhy1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"elhy1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":" if (!(other instanceof EditTransactionCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"elhy1999"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand otherEditTransactionCommand \u003d (EditTransactionCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"elhy1999"},"content":" return index.equals(otherEditTransactionCommand.index)","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 editTransactionDescriptor.equals(otherEditTransactionCommand.editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"elhy1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"elhy1999"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"elhy1999"},"content":" .add(\"editTransactionDescriptor\", editTransactionDescriptor)","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"elhy1999"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"elhy1999"},"content":" * Stores the details to edit the transaction with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":" * corresponding field value of the transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"elhy1999"},"content":" public static class EditTransactionDescriptor {","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" private Name name;","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"elhy1999"},"content":" private Amount amount;","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"elhy1999"},"content":" private DateTime datetime;","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"elhy1999"},"content":" private Location location;","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"elhy1999"},"content":" private Type type;","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" private UniqueCategoryList categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" public EditTransactionDescriptor() {","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"elhy1999"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" public EditTransactionDescriptor(EditTransactionDescriptor toCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"elhy1999"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":" setAmount(toCopy.amount);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":" setDateTime(toCopy.datetime);","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":" setType(toCopy.type);","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" setCategories(toCopy.categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"elhy1999"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" return CollectionUtil.isAnyNonNull(name, amount, datetime, location, type, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"elhy1999"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"elhy1999"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":" public void setAmount(Amount amount) {","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-14"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":190,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cAmount\u003e getAmount() {","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(amount);","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":" public void setDateTime(DateTime datetime) {","lastModifiedDate":"2023-10-14"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":" this.datetime \u003d datetime;","lastModifiedDate":"2023-10-14"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":198,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cDateTime\u003e getDateTime() {","lastModifiedDate":"2023-10-14"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(datetime);","lastModifiedDate":"2023-10-14"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2023-10-14"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-14"},{"lineNumber":204,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2023-10-14"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2023-10-14"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":210,"author":{"gitId":"elhy1999"},"content":" public void setType(Type type) {","lastModifiedDate":"2023-10-14"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-14"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cType\u003e getType() {","lastModifiedDate":"2023-10-14"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(type);","lastModifiedDate":"2023-10-14"},{"lineNumber":216,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":218,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"lipwei1808"},"content":" * Sets {@code categories} to this object\u0027s {@code categories}.","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"lipwei1808"},"content":" * A defensive copy of {@code categories} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(UniqueCategoryList categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"lipwei1808"},"content":" this.categories \u003d categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable category set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-16"},{"lineNumber":228,"author":{"gitId":"lipwei1808"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code Optional#empty()} if {@code categories} is null.","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"lipwei1808"},"content":" public Optional\u003cUniqueCategoryList\u003e getCategories() {","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"lipwei1808"},"content":" return Optional.ofNullable(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":239,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":241,"author":{"gitId":"elhy1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":242,"author":{"gitId":"woojiahao"},"content":" if (!(other instanceof EditTransactionDescriptor)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" var otherEditTransactionDescriptor \u003d (EditTransactionDescriptor) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"elhy1999"},"content":" return Objects.equals(name, otherEditTransactionDescriptor.name)","lastModifiedDate":"2023-10-14"},{"lineNumber":248,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(amount, otherEditTransactionDescriptor.amount)","lastModifiedDate":"2023-10-14"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(datetime, otherEditTransactionDescriptor.datetime)","lastModifiedDate":"2023-10-14"},{"lineNumber":250,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(location, otherEditTransactionDescriptor.location)","lastModifiedDate":"2023-10-14"},{"lineNumber":251,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 Objects.equals(type, otherEditTransactionDescriptor.type)","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 Objects.equals(categories, otherEditTransactionDescriptor.categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":257,"author":{"gitId":"elhy1999"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":258,"author":{"gitId":"elhy1999"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-14"},{"lineNumber":259,"author":{"gitId":"elhy1999"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-14"},{"lineNumber":260,"author":{"gitId":"elhy1999"},"content":" .add(\"datetime\", datetime)","lastModifiedDate":"2023-10-14"},{"lineNumber":261,"author":{"gitId":"elhy1999"},"content":" .add(\"location\", location)","lastModifiedDate":"2023-10-14"},{"lineNumber":262,"author":{"gitId":"elhy1999"},"content":" .add(\"type\", type)","lastModifiedDate":"2023-10-14"},{"lineNumber":263,"author":{"gitId":"lipwei1808"},"content":" .add(\"categories\", categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"elhy1999"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":265,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":266,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":267,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":268,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":22,"woojiahao":17,"lipwei1808":34,"elhy1999":195}},{"path":"src/main/java/unicash/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" * Terminates UniCa$h.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting UniCa$h as requested ...\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":15}},{"path":"src/main/java/unicash/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" * Finds and lists all transactions in UniCa$h whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all transactions whose names contain any of \"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" + \"Example: \" + COMMAND_WORD + \" chicken rice\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jamz903"},"content":" private final TransactionNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":" public FindCommand(TransactionNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" model.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":" String.format(UniCashMessages.MESSAGE_TRANSACTIONS_LISTED_OVERVIEW,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" model.getFilteredTransactionList().size()));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":7,"jamz903":8,"-":45,"elhy1999":1}},{"path":"src/main/java/unicash/logic/commands/GetTotalExpenditureCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_MONTH;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.time.Month;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * Calculates and returns the total expenditure of a user in a given month and (optionally) category.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" public static final String COMMAND_WORD \u003d \"get_total_expenditure\";","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" + \": Retrieves the total expenditure by month with optional filters for category.\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" + PREFIX_MONTH + \"MONTH \"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" + PREFIX_CATEGORY + \"CATEGORY\\n\";","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Your total expenditure in %1$s was %2$.2f\";","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" // TODO: Allow users to specify the year as well","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" private final int month;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private final Category categoryFilter;","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Creates GetTotalExpenditureCommand.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public GetTotalExpenditureCommand(int month, Category categoryFilter) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" this.month \u003d month;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" this.categoryFilter \u003d categoryFilter;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" if (month \u003c 1 || month \u003e 12) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" throw new CommandException(UniCashMessages.MESSAGE_INVALID_MONTH);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" model.updateFilteredTransactionList(transaction -\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" boolean isExpense \u003d transaction.getType().type.equals(TransactionType.EXPENSE);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" boolean isSameMonth \u003d transaction.getDateTime().getDateTime().getMonthValue() \u003d\u003d month;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" if (categoryFilter \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" // No category filter so just get all expenses of the month","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" return isExpense \u0026\u0026 isSameMonth;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" // If category filter exists and expense contains no category, it will not have the category","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" // Note: If the stream is empty then false is returned and the predicate is not evaluated.","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" boolean hasCategory \u003d transaction.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(categoryFilter));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" return isExpense \u0026\u0026 isSameMonth \u0026\u0026 hasCategory;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" });","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" var filteredList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" double totalExpenditure \u003d filteredList","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" .stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" .reduce(0.0, (acc, cur) -\u003e acc + cur.getAmount().amount, Double::sum);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" // TODO: Capitalize maybe?","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" String monthString \u003d Month.of(month).name();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, monthString, totalExpenditure));","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" if (!(other instanceof GetTotalExpenditureCommand)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" GetTotalExpenditureCommand otherCommand \u003d (GetTotalExpenditureCommand) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" if (categoryFilter \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" return month \u003d\u003d otherCommand.month \u0026\u0026 otherCommand.categoryFilter \u003d\u003d null;","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" return month \u003d\u003d otherCommand.month \u0026\u0026 categoryFilter.equals(otherCommand.categoryFilter);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" .add(\"month\", month)","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" .add(\"categoryFilter\", categoryFilter)","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":87,"lipwei1808":5}},{"path":"src/main/java/unicash/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows UniCa$h usage instructions.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened UniCa$h help window.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":17}},{"path":"src/main/java/unicash/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"import java.util.logging.Level;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all transactions\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" private static final Logger logger \u003d Logger.getLogger(\"ListCommandLogger\");","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all transactions in UniCa$h. \\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Example: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + COMMAND_WORD;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_FAILURE \u003d \"Command not recognised. Try using the command \" + COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":" + \" without any parameters instead.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":" logger.log(Level.INFO, \"Executing list command\");","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(Model.PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" logger.log(Level.INFO, \"List command executed successfully\");","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" if (other \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" // Nothing to compare so all ListCommand instances are equal to each other","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" return other instanceof ListCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":10,"jamz903":12,"-":18}},{"path":"src/main/java/unicash/logic/commands/ResetCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.util.SampleDataUtil.getSampleUniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" * Resets UniCa$h to initial state by replacing the current UniCa$h","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" * storage data and populating it with the default UniCa$h containing","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * typical transactions from {@code SampleDataUtil}.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ResetCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"reset_unicash\";","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_SUCCESS \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" \"UniCa$h has been successfully restored to its original state!\";","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" model.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"sp4ce-cowboy":26}},{"path":"src/main/java/unicash/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":16}},{"path":"src/main/java/unicash/logic/parser/AddTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses input arguments and creates a new AddTransactionCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"public class AddTransactionCommandParser implements Parser\u003cAddTransactionCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * and returns an AddTransactionCommand object for execution.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" public AddTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_CATEGORY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" // Check if mandatory fields (name, amount, type) are present","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_AMOUNT, PREFIX_TYPE)","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" AddTransactionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // Check for duplicates","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT,","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" PREFIX_DATETIME, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" Name name \u003d ParserUtil.parseTransactionName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amount \u003d ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" Type type \u003d ParserUtil.parseType(argMultimap.getValue(PREFIX_TYPE).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" String dateTimeString \u003d argMultimap.getValue(PREFIX_DATETIME).orElse(\"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" DateTime dateTime \u003d ParserUtil.parseDateTime(dateTimeString);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" String locationString \u003d argMultimap.getValue(PREFIX_LOCATION).orElse(\"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" Location location \u003d ParserUtil.parseLocation(locationString);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList uniqueCategoryList \u003d ParserUtil.parseCategories(argMultimap.getAllValues(PREFIX_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction \u003d new Transaction(name, type, amount, dateTime, location, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" return new AddTransactionCommand(transaction);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":70,"lipwei1808":6}},{"path":"src/main/java/unicash/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(UniCashMessages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":1,"-":74}},{"path":"src/main/java/unicash/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":147}},{"path":"src/main/java/unicash/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_AMOUNT \u003d new Prefix(\"amt/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_DATETIME \u003d new Prefix(\"dt/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_TYPE \u003d new Prefix(\"type/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_CATEGORY \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" public static final Prefix PREFIX_MONTH \u003d new Prefix(\"month/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"year/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":2,"lipwei1808":5,"-":9}},{"path":"src/main/java/unicash/logic/parser/DeleteTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses input arguments and creates a new DeleteTransactionCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandParser implements Parser\u003cDeleteTransactionCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" * DeleteTransactionCommand and returns a DeleteTransactionCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public DeleteTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" return new DeleteTransactionCommand(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTransactionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":30,"woojiahao":2}},{"path":"src/main/java/unicash/logic/parser/EditTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":" * Parses input arguments and creates a new EditTransactionCommand object","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandParser implements Parser\u003cEditTransactionCommand\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":" * Parses the given {@code String} of arguments in the context of the EditTransactionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" * and returns an EditTransactionCommand object for execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" public EditTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_CATEGORY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" Index index;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.EditTransactionDescriptor editTransactionDescriptor \u003d new EditTransactionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":" .EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setName(","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseTransactionName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_TYPE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setType(","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseType(argMultimap.getValue(PREFIX_TYPE).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_AMOUNT).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setAmount(","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_DATETIME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setDateTime(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_DATETIME).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setLocation(","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" parseCategoriesForEdit(argMultimap.getAllValues(PREFIX_CATEGORY))","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" .ifPresent(editTransactionDescriptor::setCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" if (!editTransactionDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(EditTransactionCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"elhy1999"},"content":" return new EditTransactionCommand(index, editTransactionDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * Parses {@code Collection\u003cString\u003e categories} into a {@code Set\u003cCategory\u003e} if {@code categories} is non-empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" * If {@code categories} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" * {@code Set\u003cCategory\u003e} containing zero categories.","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" private Optional\u003cUniqueCategoryList\u003e parseCategoriesForEdit(Collection\u003cString\u003e categories) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categories);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (categories.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" Collection\u003cString\u003e categoriesSet \u003d categories.size() \u003d\u003d 1","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 categories.contains(\"\")","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" ? Collections.emptySet()","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" : categories;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" return Optional.of(ParserUtil.parseCategories(categoriesSet));","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":26,"woojiahao":7,"lipwei1808":25,"elhy1999":48}},{"path":"src/main/java/unicash/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":" return new FindCommand(new TransactionNameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"sp4ce-cowboy":5,"jamz903":1,"-":27}},{"path":"src/main/java/unicash/logic/parser/GetTotalExpenditureCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_MONTH;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" * Parses get_total_expenditure command to extract parameters.","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandParser implements Parser\u003cGetTotalExpenditureCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" public GetTotalExpenditureCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" // TODO: Support PREFIX_YEAR","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONTH, PREFIX_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" if (argMultimap.getValue(PREFIX_MONTH).isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GetTotalExpenditureCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_MONTH, PREFIX_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoryString \u003d argMultimap.getValue(PREFIX_CATEGORY).orElse(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Category category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" if (categoryString !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" category \u003d ParserUtil.parseCategory(categoryString);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" String monthString \u003d argMultimap.getValue(PREFIX_MONTH).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" int month \u003d Integer.parseInt(monthString);","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" return new GetTotalExpenditureCommand(month, category);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(\"Invalid month value, must be number!\");","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":10,"woojiahao":29,"lipwei1808":4}},{"path":"src/main/java/unicash/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":" * Parses input arguments for the list command.","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" public ListCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":" //list command must not have any additional arguments","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" if (!userInput.trim().isBlank()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":" throw new ParseException(ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" return new ListCommand();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":3,"jamz903":21}},{"path":"src/main/java/unicash/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":13}},{"path":"src/main/java/unicash/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private ParserUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public static Name parseTransactionName(String name) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String amount} into an {@code Amount}.","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code amount} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public static Amount parseAmount(String amount) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(amount);","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" String trimmedAmount \u003d amount.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" double castedAmount;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" castedAmount \u003d Double.parseDouble(trimmedAmount);","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" if (!Amount.isValidAmount(castedAmount)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" return new Amount(castedAmount);","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String type} into a {@code Type}.","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code type} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public static Type parseType(String type) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" String trimmedType \u003d type.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" if (!Type.isValidType(trimmedType)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" return new Type(trimmedType);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String datetime} into an {@code LocalDateTime}.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code dateTimeString} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" public static DateTime parseDateTime(String dateTimeString) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(dateTimeString);","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" String trimmedDateTime \u003d dateTimeString.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" if (!trimmedDateTime.isBlank() \u0026\u0026 !DateTime.isValidDateTime(trimmedDateTime)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(DateTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" return new DateTime(trimmedDateTime);","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String location} into a {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" public static Location parseLocation(String location) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" String trimmedLocation \u003d location.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" if (!trimmedLocation.isBlank() \u0026\u0026 !Location.isValidLocation(trimmedLocation)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" return new Location(trimmedLocation);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String category} into a {@code Category}.","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code category} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" public static Category parseCategory(String category) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(category);","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" String trimmedCategory \u003d category.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" if (!Category.isValidCategory(trimmedCategory)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" return new Category(trimmedCategory);","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" * Parses {@code Collection\u003cString\u003e categories} into a {@code Set\u003cCategory\u003e}.","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" public static UniqueCategoryList parseCategories(Collection\u003cString\u003e categories) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" final List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" for (String categoryName : categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(parseCategory(categoryName));","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" if (!UniqueCategoryList.categoriesAreUnique(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(UniqueCategoryList.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" if (UniqueCategoryList.isMoreThanMax(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(UniqueCategoryList.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" return new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"sp4ce-cowboy":9,"woojiahao":6,"lipwei1808":108,"-":41}},{"path":"src/main/java/unicash/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * E.g. \u0027t/\u0027 in \u0027add James t/ friend\u0027.","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":41}},{"path":"src/main/java/unicash/logic/parser/UniCashParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ClearTransactionsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ResetCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashParser {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UniCashParser.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" final String commandWord \u003d matcher.group(\"commandWord\").toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" case AddTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" return new AddTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" case EditTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" return new EditTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" case DeleteTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" return new DeleteTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" case GetTotalExpenditureCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" return new GetTotalExpenditureCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" case ClearTransactionsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ClearTransactionsCommand();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" case ResetCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ResetCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ExitCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":29,"woojiahao":2,"lipwei1808":2,"jamz903":1,"-":59,"elhy1999":2}},{"path":"src/main/java/unicash/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a parse error encountered by a parser.","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ParseException extends IllegalValueException {","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public ParseException(String message) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public ParseException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":15}},{"path":"src/main/java/unicash/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * {@code Predicate} that always evaluates to true","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" Predicate\u003cTransaction\u003e PREDICATE_SHOW_ALL_TRANSACTIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" * Replaces the given transaction {@code target} with {@code editedTransaction}.","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":" * {@code target} must exist in the transaction list.","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" * The transaction identity of {@code editedTransaction} must not be the same as another existing transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" void setTransaction(Transaction target, Transaction editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" * Returns the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" * Sets the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" void setUniCashFilePath(Path uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" * Replaces UniCash data with the data in {@code uniCash}.","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" void setUniCash(ReadOnlyUniCash uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" * Returns UniCash","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" ReadOnlyUniCash getUniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * Deletes the given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" * The transaction must exist in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" void deleteTransaction(Transaction target);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" * Adds the given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" void addTransaction(Transaction transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a transaction with the same identity as {@code transaction} exists in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" boolean hasTransaction(Transaction transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" * Returns an unmodifiable view of the filtered transaction list","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" * Updates the filter of the filtered UniCash to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate);","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":20,"lipwei1808":32,"-":31,"elhy1999":7}},{"path":"src/main/java/unicash/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" private final FilteredList\u003cTransaction\u003e filteredTransactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Initializes a ModelManager with the given userPrefs and UniCash.","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" public ModelManager(ReadOnlyUniCash uniCash, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(uniCash, userPrefs);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" logger.fine(\"Initializing with UniCash: \" + uniCash + \" and user prefs \" + userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" this.uniCash \u003d new UniCash(uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" filteredTransactions \u003d new FilteredList\u003c\u003e(this.uniCash.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" this(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" return userPrefs.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path uniCashFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UniCash \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash(ReadOnlyUniCash uniCash) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" this.uniCash.resetData(uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(target, editedTransaction);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":" uniCash.setTransaction(target, editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" return uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" return uniCash.hasTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction(Transaction target) {","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" uniCash.removeTransaction(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Transaction List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable view of the list of {@code Transaction} backed by the internal list of","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-08"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" return filteredTransactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" public void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-08"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" filteredTransactions.setPredicate(predicate);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" return uniCash.equals(otherModelManager.uniCash)","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 filteredTransactions.equals(otherModelManager.filteredTransactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":16,"lipwei1808":64,"-":53,"elhy1999":6}},{"path":"src/main/java/unicash/model/ReadOnlyUniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public interface ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable view of the transaction list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":14}},{"path":"src/main/java/unicash/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":1,"-":12}},{"path":"src/main/java/unicash/model/UniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Wraps all data in UniCash","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class UniCash implements ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private final TransactionList transactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * among constructors.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" transactions \u003d new TransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public UniCash() {}","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Creates an UniCash using the Transactions in the {@code toBeCopied}","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public UniCash(ReadOnlyUniCash toBeCopied) {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" this();","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of the Transaction list with {@code transactions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" * {@code transactions} must not contain any null.","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(List\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" this.transactions.setTransactions(transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" * Resets the existing data of this {@code UniCash} with {@code newData}.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public void resetData(ReadOnlyUniCash newData) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" setTransactions(newData.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" //// Transaction-level operations","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a Transaction with the same identity as {@code Transaction} exists in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return transactions.contains(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * Adds a transaction to UniCash","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction p) {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" transactions.add(p);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" * Replaces the given Transaction {@code target} in the list with {@code editedTransaction}.","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" transactions.setTransaction(target, editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Removes {@code key} from this {@code UniCash}.","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * {@code key} must exist in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void removeTransaction(Transaction key) {","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" transactions.remove(key);","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" //// util methods","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" .add(\"transactions\", transactions)","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" return transactions.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof UniCash)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" UniCash otherUniCash \u003d (UniCash) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" return transactions.equals(otherUniCash.transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" return transactions.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":121}},{"path":"src/main/java/unicash/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" private Path uniCashFilePath \u003d Paths.get(\"data\", \"unicash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public UserPrefs() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" setUniCashFilePath(newUserPrefs.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" return uniCashFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path uniCashFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" this.uniCashFilePath \u003d uniCashFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" \u0026\u0026 uniCashFilePath.equals(otherUserPrefs.uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" return Objects.hash(guiSettings, uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" sb.append(\"\\nLocal data file location : \" + uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":12,"-":75}},{"path":"src/main/java/unicash/model/budget/Budget.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * Represents a Budget in UniCash.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"public class Budget {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" private final Amount amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Interval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Constructs a Budget with all fields populated.","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Budget(Amount amount, Interval interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public Amount getAmount() {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" return amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public Interval getInterval() {","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return Objects.hash(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Returns true if both budgets have the same data fields.","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Budget)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" Budget otherBudget \u003d (Budget) other;","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" return amount.equals(otherBudget.amount)","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 interval.equals(otherBudget.interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" .add(\"interval\", interval)","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":67}},{"path":"src/main/java/unicash/model/budget/Interval.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import unicash.commons.enums.BudgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Represents a Budget\u0027s interval.","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class Interval {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String.format(\"Transaction must be of the following intervals: %s\", BudgetInterval.listBudgetIntervals());","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public final BudgetInterval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Interval}.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param interval A valid interval.","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Interval(String interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" checkArgument(isValidInterval(interval), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d BudgetInterval.parseInterval(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid interval for a transaction.","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidInterval(String test) {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return BudgetInterval.isValidBudgetInterval(test);","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return interval.hashCode();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Interval)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return interval.equals(((Interval) other).interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return interval.getOriginalString();","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":59}},{"path":"src/main/java/unicash/model/category/Category.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Category in UnICash.","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: immutable; categoryName is valid as declared in {@link #isValidCategory(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class Category {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" \"Category names should be alphanumeric and up to 15 characters long.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" // Category can only be up to 15 characters long","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}{1,15}$\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public final String category;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Category}.","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * @param category A valid category name.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public Category(String category) {","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(category);","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidCategory(category), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid category.","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidCategory(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Category)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" Category otherCategory \u003d (Category) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return category.equals(otherCategory.category);","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return category.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" return category;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":5,"lipwei1808":58}},{"path":"src/main/java/unicash/model/category/UniqueCategoryList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.CategoryNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.DuplicateCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.MaxCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * A list of categories that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * A category is considered unique by comparing using {@code Category#equals(Category)}. As such, adding and updating of","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * categories uses Category#equals(Category) for equality so as to ensure that the category being added or updated is","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * unique in terms of identity in the UniqueCategoryList.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"public class UniqueCategoryList implements Iterable\u003cCategory\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" \"There should only be a maximum of 5 unique categories.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public static final int MAX_CATEGORIES \u003d 5;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cCategory\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cCategory\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Default constructor to create an empty category list.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList() {}","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Constructs a category list from a List of {@code Category}.","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param categoryList the category list to be constructed into.","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList(List\u003cCategory\u003e categoryList) {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (!categoriesAreUnique(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (isMoreThanMax(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code true} if the list contains an equivalent category as the given argument.","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" public boolean contains(Category toCheck) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" * Returns true is the storage is full, false otherwise.","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" public boolean isMax() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return internalList.size() \u003d\u003d MAX_CATEGORIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * Adds a category to the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" * The category must not already exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" public void add(Category toAdd) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" if (isMax()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Replaces the category {@code target} in the list with {@code editedCategory}.","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" * The category identity of {@code editedCategory} must not be the same as another existing category in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" public void setCategory(Category target, Category editedCategory) {","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(target, editedCategory);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" throw new CategoryNotFoundException();","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (!target.equals(editedCategory) \u0026\u0026 contains(editedCategory)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" internalList.set(index, editedCategory);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" * Removes the equivalent category from the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" * The category exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" public void remove(Category toRemove) {","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" throw new CategoryNotFoundException();","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code categories}.","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(UniqueCategoryList replacement) {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code categories}.","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" * {@code categories} must not contain duplicate categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" if (!categoriesAreUnique(categories)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" if (isMoreThanMax(categories)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cCategory\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" public Iterator\u003cCategory\u003e iterator() {","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" return other \u003d\u003d this","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" || (other instanceof UniqueCategoryList","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 new HashSet\u003c\u003e(internalList).equals(new HashSet\u003c\u003e(((UniqueCategoryList) other).internalList)));","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given list of categories is less than the maximum allowed categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" public static boolean isMoreThanMax(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" return categories.size() \u003e MAX_CATEGORIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code true} if {@code categories} contains only unique categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" public static boolean categoriesAreUnique(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" HashSet\u003cCategory\u003e set \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" for (Category category : categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" if (set.contains(category)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":" set.add(category);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":189}},{"path":"src/main/java/unicash/model/category/exceptions/CategoryNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation is unable to find the specified category.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class CategoryNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Constructs a CategoryNotFoundException.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public CategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"Category not found\");","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/unicash/model/category/exceptions/DuplicateCategoryException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation will result in duplicate Categories (Categories are considered duplicates","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" * if they have the same identity).","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class DuplicateCategoryException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Creates a new DuplicateTagException","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public DuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" super(\"Operation would result in duplicate categories\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":14}},{"path":"src/main/java/unicash/model/category/exceptions/MaxCategoryException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Represents an error when the maximum number of categories has been added for","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" * a transaction.","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class MaxCategoryException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Constructs a MaxCategoryException.","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public MaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" super(\"Maximum number of categories added.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":14}},{"path":"src/main/java/unicash/model/commons/Amount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.commons;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s amount.","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class Amount {","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" \"Amounts must be positive.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public final double amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param amount A valid amount.","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public Amount(double amount) {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidAmount(amount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given amount is a non-negative value.","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidAmount(double amount) {","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" return amount \u003e\u003d 0.00;","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return Double.hashCode(amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Amount)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return amount \u003d\u003d ((Amount) other).amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns a rounded two-decimal precision String version of an {@code Amount}.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String amountToDecimalString(Amount amt) {","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" double roundedAmount \u003d Math.round(amt.amount * 100.0) / 100.0;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" String formattedNumberString \u003d String.format(\"%.2f\", roundedAmount);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" return formattedNumberString;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return Double.toString(amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":12,"lipwei1808":52}},{"path":"src/main/java/unicash/model/transaction/DateTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.time.Clock;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s dateTime.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class DateTime {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public static final String DATETIME_PATTERN \u003d \"dd-MM-uuuu HH:mm\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" \"DateTime should be in the following format \" + DATETIME_PATTERN;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" .ofPattern(DATETIME_PATTERN);","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code DateTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Defaults to current date if not provided.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime A valid date time.","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public DateTime(String dateTime) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(dateTime);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" init(dateTime, Clock.systemDefaultZone());","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code DateTime} with a Clock.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Defaults to current date if not provided.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Used for mocking the current Clock used to generate LocalDateTime.now().","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime A valid date time.","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" * @param clock A clock object to configure current time settings.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public DateTime(String dateTime, Clock clock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(dateTime, clock);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" init(dateTime, clock);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" * Initialises the DateTime object when called by constructors.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" * Sets the dateTime based on given {@code dateTime} and {@code clock}.","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime the dateTime string to be set.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" * @param clock the clock object of the system.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" private void init(String dateTime, Clock clock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" if (dateTime.isBlank()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d LocalDateTime.now(clock);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return;","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidDateTime(dateTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTime, DATETIME_FORMATTER);","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" return dateTime;","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" * Helper method to stringify LocalDateTime objects into original text string","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * pass by the user.","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" * @return text string of the LocalDateTime object","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" public String originalString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_PATTERN));","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid dateTime.","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidDateTime(String dateString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime.parse(dateString, DATETIME_FORMATTER.withResolverStyle(ResolverStyle.STRICT));","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"HHmm, MMM d yyyy\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof DateTime)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" DateTime otherDateTime \u003d (DateTime) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" return Objects.equals(this.dateTime, otherDateTime.dateTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" return this.dateTime.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":6,"lipwei1808":108}},{"path":"src/main/java/unicash/model/transaction/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s location.","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public class Location {","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" \"Locations should only contain alphanumeric characters, spaces, (, ), _, -, #, \u0026, ., and \u0027,\u0027, \"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" /*","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * The first character of the location must not be a whitespace,","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}_\u0026#.,()-][\\\\p{Alnum} _\u0026#.,()-]*\";","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public final String location;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Location}.","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * @param location A valid location.","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public Location(String location) {","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" if (location.isBlank()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d \"-\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid location.","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return location;","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return location.equals(otherLocation.location);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" return location.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":65}},{"path":"src/main/java/unicash/model/transaction/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s name.","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * The first character of the transaction must not be a whitespace,","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":2,"-":61}},{"path":"src/main/java/unicash/model/transaction/Transaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction in UniCash.","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class Transaction {","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Name name;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private final Amount amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" private final DateTime dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" private final Location location;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" private final Type type;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private final UniqueCategoryList categories \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Constructs a Transaction with all fields populated.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public Transaction(","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" Name name,","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Type type,","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" Amount amount,","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" Location location,","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categories","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" ) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(name, type, amount, categories, dateTime, location);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" this.categories.setCategories(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public Name getName() {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" return name;","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public Amount getAmount() {","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" return amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public DateTime getDateTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return dateTime;","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return location;","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public Type getType() {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return type;","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList getCategories() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" return Objects.hash(name, amount, dateTime, location, type, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Returns true if both transactions have the same data fields.","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" * This defines a stronger notion of equality between two transactions.","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Transaction)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" Transaction otherTransaction \u003d (Transaction) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" return name.equals(otherTransaction.name)","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 type.equals(otherTransaction.type)","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 amount.equals(otherTransaction.amount)","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 categories.equals(otherTransaction.categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 dateTime.equals(otherTransaction.dateTime)","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 location.equals(otherTransaction.location);","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" .add(\"type\", type)","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" .add(\"dateTime\", dateTime)","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" .add(\"location\", location)","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" .add(\"categories\", categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":103,"elhy1999":1}},{"path":"src/main/java/unicash/model/transaction/TransactionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * A list of Transactions that does not allow nulls.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class TransactionList implements Iterable\u003cTransaction\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Returns true if the list contains an equivalent Transaction as the given argument.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public boolean contains(Transaction toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" * Adds a Transaction to the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void add(Transaction toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * Replaces the Transaction {@code target} in the list with {@code editedTransaction}.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(target, editedTransaction);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" throw new TransactionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" internalList.set(index, editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" * Removes the equivalent Transaction from the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" * The Transaction must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void remove(Transaction toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" throw new TransactionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code replacement}","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * @param replacement the TransactionList to replace with","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(TransactionList replacement) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code transactions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" * {@code transactions} must not contain null.","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(List\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(transactions);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" public Iterator\u003cTransaction\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof TransactionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" TransactionList otherTransactionList \u003d (TransactionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" return internalList.equals(otherTransactionList.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"lipwei1808":114}},{"path":"src/main/java/unicash/model/transaction/TransactionNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" * Tests that a {@code Transactions}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionNameContainsKeywordsPredicate","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" implements Predicate\u003cTransaction\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public TransactionNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean test(Transaction transaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" transaction.getName().fullName, keyword));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!(other instanceof TransactionNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" (TransactionNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":47}},{"path":"src/main/java/unicash/model/transaction/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s type.","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class Type {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String.format(\"Transaction must be of the following types: %s\", TransactionType.listTransactionTypes());","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public final TransactionType type;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Type}.","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param type A valid type.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Type(String type) {","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidType(type), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d TransactionType.parseType(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid type for a transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return TransactionType.isValidTransactionType(test);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return type.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Type)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return type.equals(((Type) other).type);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return type.getOriginalString();","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":55}},{"path":"src/main/java/unicash/model/transaction/exceptions/TransactionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation is unable to find the specified transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class TransactionNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":1,"lipwei1808":7}},{"path":"src/main/java/unicash/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" * Contains utility methods for populating {@code UniCash} with sample data.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * This private constructor is declared to support a constructor initialisation","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * by code coverage.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private SampleDataUtil() {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public static Transaction[] getSampleTransactions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" return new Transaction[]{","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" new Transaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Lunch at McDonalds\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(17.40),","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"15-09-2023 11:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Clementi Mall\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" ),","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" new Transaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Buy clothes\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(109.00),","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 18:30\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Uniqlo Bugis\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"shopping\")","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" ),","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" new Transaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Intern allowance september\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" new Type(\"income\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(1800.00),","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 00:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" new Location(\"\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"salary\")","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" ),","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" new Transaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Evening with friends\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(49.50),","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 00:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Clarke Quay\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"social\")","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" };","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" public static ReadOnlyUniCash getSampleUniCash() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" UniCash sample \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" for (var transaction : getSampleTransactions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" sample.addTransaction(transaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" return sample;","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" * Returns a category set containing the list of strings given.","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" public static UniqueCategoryList getCategoryList(String... strings) {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d Arrays.stream(strings)","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" .map(Category::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" return new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"sp4ce-cowboy":33,"woojiahao":20,"lipwei1808":25,"-":10}},{"path":"src/main/java/unicash/storage/JsonAdaptedCategory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" * Jackson-friendly version of {@link Category}.","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"class JsonAdaptedCategory {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private final String category;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code JsonAdaptedCategory} with the given {@code categoryName}.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" @JsonCreator","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public JsonAdaptedCategory(String category) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public JsonAdaptedCategory(Category source) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" category \u003d source.category;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" @JsonValue","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public String getCategoryName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return category;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Category} object.","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted category.","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public Category toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" if (!Category.isValidCategory(category)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" throw new IllegalValueException(Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return new Category(category);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":3,"lipwei1808":45}},{"path":"src/main/java/unicash/storage/JsonAdaptedTransaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" * Jackson-friendly version of {@link Transaction}.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedTransaction {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Transaction\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private final String name;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private final double amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" private final String dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private final String location;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" private final String type;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" private final List\u003cJsonAdaptedCategory\u003e categories \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonAdaptedTransaction} with the given transaction details.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" public JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"amount\") double amount,","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"dateTime\") String dateTime,","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"location\") String location,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @JsonProperty(\"type\") String type,","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @JsonProperty(\"categories\") List\u003cJsonAdaptedCategory\u003e categories","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" if (categories !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" this.categories.addAll(categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonAdaptedTransaction} with the given transaction details.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" public JsonAdaptedTransaction(Transaction source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" amount \u003d source.getAmount().amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" dateTime \u003d source.getDateTime().originalString();","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" location \u003d source.getLocation().location;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" type \u003d source.getType().type.getOriginalString();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" categories.addAll(source.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" .stream()","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" .map(JsonAdaptedCategory::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" * Converts this Jackson-friendly adapted transaction object into the model\u0027s {@code Transaction} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted format.","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" public Transaction toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(Name.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" if (!Amount.isValidAmount(amount)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" final Amount modelAmount \u003d new Amount(amount);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" if (dateTime \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(DateTime.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" if (!DateTime.isValidDateTime(dateTime)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(DateTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" final DateTime modelDateTime \u003d new DateTime(dateTime);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" if (location !\u003d null \u0026\u0026 !Location.isValidLocation(location)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" final Location modelLocation \u003d new Location(location);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(Type.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" if (!Type.isValidType(type)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" final Type modelType \u003d new Type(type);","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" final List\u003cCategory\u003e transactionCategories \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" for (JsonAdaptedCategory category : categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" transactionCategories.add(category.toModelType());","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" final UniqueCategoryList modelCategories \u003d new UniqueCategoryList(transactionCategories);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(modelName, modelType, modelAmount, modelDateTime, modelLocation, modelCategories);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" * Pretty formats missing field message with the class name.","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" private \u003cT\u003e String formatMissingFieldMessage(Class\u003cT\u003e fieldName) {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" return String.format(MISSING_FIELD_MESSAGE_FORMAT, fieldName.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":96,"lipwei1808":21}},{"path":"src/main/java/unicash/storage/JsonSerializableUniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * An Immutable UniCash that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"@JsonRootName(value \u003d \"unicash\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"class JsonSerializableUniCash {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_DUPLICATE_TRANSACTION \u003d \"Transaction list contains duplicate transaction(s).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" private final List\u003cJsonAdaptedTransaction\u003e transactions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonSerializableUniCash} with the given transactions.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public JsonSerializableUniCash(","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"transactions\") List\u003cJsonAdaptedTransaction\u003e transactions","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" this.transactions.addAll(transactions);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * Converts a given {@code ReadOnlyUniCash} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableUniCash}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public JsonSerializableUniCash(ReadOnlyUniCash source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" transactions.addAll(","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" source.getTransactionList()","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" .stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" .map(JsonAdaptedTransaction::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" .collect(Collectors.toList())","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" * Converts this transaction list into the model\u0027s {@code UniCash} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" public UniCash toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" UniCash uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" for (var jsonAdaptedTransaction : transactions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" Transaction transaction \u003d jsonAdaptedTransaction.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" if (uniCash.hasTransaction(transaction)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TRANSACTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" return uniCash;","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":62}},{"path":"src/main/java/unicash/storage/JsonUniCashStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.FileUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" * A class to access UniCash data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class JsonUniCashStorage implements UniCashStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUniCashStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" private final Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public JsonUniCashStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" return readUniCash(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" * Similar to {@link #readUniCash()}.","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" var jsonUniCash \u003d JsonUtil.readJsonFile(filePath, JsonSerializableUniCash.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" if (jsonUniCash.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" return Optional.of(jsonUniCash.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" saveUniCash(uniCash, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" * Similar to {@link #saveUniCash(ReadOnlyUniCash)}.","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" JsonUtil.saveJsonFile(new JsonSerializableUniCash(uniCash), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":72}},{"path":"src/main/java/unicash/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":42}},{"path":"src/main/java/unicash/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"public interface Storage extends UniCashStorage, UserPrefsStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":4,"-":23}},{"path":"src/main/java/unicash/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * Manages storage of UniCash data in local storage.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" private final UniCashStorage uniCashStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private final UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" * Creates a {@code StorageManager} with the given {@code UniCashStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public StorageManager(UniCashStorage uniCashStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" this.uniCashStorage \u003d uniCashStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UniCash methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" return uniCashStorage.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" return readUniCash(uniCashStorage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" return uniCashStorage.readUniCash(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" saveUniCash(uniCash, uniCashStorage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" uniCashStorage.saveUniCash(uniCash, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":17,"-":55}},{"path":"src/main/java/unicash/storage/UniCashStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" * Represents a storage for {@link UniCash}.","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"public interface UniCashStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns UniCash data as a {@link ReadOnlyUniCash}.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" * @see #getUniCashFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Saves the given {@link ReadOnlyUniCash} to the storage.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * @param uniCash cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * @see #saveUniCash(ReadOnlyUniCash)","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":41}},{"path":"src/main/java/unicash/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" * Represents a storage for {@link UserPrefs}.","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Saves the given {@link ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":30}},{"path":"src/main/java/unicash/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":80}},{"path":"src/main/java/unicash/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" * Controller for the pop-up help window","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_URL \u003d \"https://ay2324s1-cs2103-t16-3.github.io/tp/\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USER_GUIDE_URL;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.fine(\"Showing UniCash help page.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" url.putString(USER_GUIDE_URL);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":9,"-":95}},{"path":"src/main/java/unicash/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.awt.Desktop;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.File;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.nio.file.StandardCopyOption;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME_PREFIX \u003d \"userguide_local\";","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME_SUFFIX \u003d \".pdf\";","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME \u003d USER_GUIDE_NAME_PREFIX + USER_GUIDE_NAME_SUFFIX;","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String PATH_TO_USER_GUIDE \u003d \"/documents/\" + USER_GUIDE_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FILE_ERROR_MESSAGE \u003d \"A FILE ERROR OCCURRED.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String UNKNOWN_ERROR_MESSAGE \u003d \"AN UNKNOWN ERROR OCCURRED.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" private TransactionListPanel transactionListPanel;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" private MenuItem userGuideMenuItem;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" private StackPane transactionListPanelPlaceholder;","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" setAccelerator(userGuideMenuItem, KeyCombination.valueOf(\"F2\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" transactionListPanel \u003d new TransactionListPanel(logic.getFilteredTransactionList());","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" transactionListPanelPlaceholder.getChildren().add(transactionListPanel.getRoot());","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getUniCashFilePath());","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"sp4ce-cowboy"},"content":" * Opens the local user guide.","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"sp4ce-cowboy"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"sp4ce-cowboy"},"content":" private void handleOpenUserGuide() {","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"sp4ce-cowboy"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"sp4ce-cowboy"},"content":" // Path to the resource inside the jar file","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"sp4ce-cowboy"},"content":" InputStream inputStream \u003d getClass().getResourceAsStream(PATH_TO_USER_GUIDE);","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"sp4ce-cowboy"},"content":" File tempFile \u003d File.createTempFile(USER_GUIDE_NAME_PREFIX, USER_GUIDE_NAME_SUFFIX);","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"sp4ce-cowboy"},"content":" tempFile.deleteOnExit(); // The user guide will be deleted upon JVM exit","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"sp4ce-cowboy"},"content":" Files.copy(inputStream, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING);","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"sp4ce-cowboy"},"content":" Desktop.getDesktop().open(tempFile);","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"sp4ce-cowboy"},"content":" System.err.println(FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.severe(FILE_ERROR_MESSAGE + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"sp4ce-cowboy"},"content":" System.err.println(UNKNOWN_ERROR_MESSAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.severe(UNKNOWN_ERROR_MESSAGE + StringUtil.getDetails(ex));","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":52,"woojiahao":1,"lipwei1808":2,"-":179}},{"path":"src/main/java/unicash/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":27}},{"path":"src/main/java/unicash/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * indicating the current Data Source.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" saveLocationStatus.setText(\"Data source -\u003e \" + Paths.get(\".\").resolve(saveLocation));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":25}},{"path":"src/main/java/unicash/ui/StyleSheet.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" * A class to consolidate and standardize all text styling involved in FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" * Controller classes.","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"public class StyleSheet {","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" // Text colour filling","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_RED \u003d \"-fx-text-fill: red\";","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_GREEN \u003d \"-fx-text-fill: green\";","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_BLACK \u003d \"-fx-text-fill: black\";","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_WHITE \u003d \"-fx-text-fill: white\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" // Font styling","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_BOLD \u003d \"-fx-font-weight: bold\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_REGULAR \u003d \"-fx-font-weight: normal\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_ITALIC \u003d \"-fx-font-style: italic\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" // Custom text formatting","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_ID_SEPARATOR \u003d \". \";","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":23}},{"path":"src/main/java/unicash/ui/TransactionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.FONT_STYLE_BOLD;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_BLACK;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_GREEN;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_RED;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TRANSACTION_ID_SEPARATOR;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * A UI component that displays information of a {@code Transaction}.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"public class TransactionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String FXML \u003d \"TransactionCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public final Transaction transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" private Label name;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private Label id;","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private Label amount;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" private Label dateTime;","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" @FXML","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" private Label transactionLocation;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"jamz903"},"content":" @FXML","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"jamz903"},"content":" private Label categories;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" * Creates a {@code TransactionCard} with the given {@code Transaction} and index to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" * The transaction\u0027s polarity (i.e. direction) depends on whether it\u0027s an expense or an income.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" * All transactions are assumed to be made in dollars.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" public TransactionCard(Transaction transaction, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" super(FXML);","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" this.transaction \u003d transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" this.idStyleFormatter(displayedIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" this.nameStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" this.dateTimeStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" this.transactionLocationStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" this.amountStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" this.categoriesStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the name label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the name of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.name;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the ID label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the ID of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getId() {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.id;","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the amount of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the amount of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getAmount() {","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.amount;","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the date and time label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the date and time of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getDateTime() {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.dateTime;","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the location label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the location of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getTransactionLocation() {","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.transactionLocation;","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the categories label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the categories associated with the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getCategories() {","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.categories;","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" * For better presentation of the transaction amounts, instead of using the","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" * toString method of the transaction amount directly, a dollar symbol is prepended","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" * to the transaction, along with the polarity of the transaction depending on whether","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" * it is an income or expense type, Accordingly, text fill styles are also used to","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":" * set the color of the amount Label text based on their type.","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" private void amountStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionAmountWithDecimal \u003d Amount.amountToDecimalString(transaction.getAmount());","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" String dollarTransactionWithDecimal \u003d \"$\" + transactionAmountWithDecimal;","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionType \u003d transaction.getType().toString().toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionPolarity \u003d transactionType.equals(\"expense\") ? \"-\" : \"+\";","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionCardString \u003d transactionPolarity + dollarTransactionWithDecimal;","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setText(transactionCardString);","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" if (transactionPolarity.equals(\"-\")) { // Set color to red or green depending on amt","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_RED);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (transactionPolarity.equals(\"+\")) {","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_GREEN);","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_BLACK);","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" * For better presentation of the transaction category, instead of using the","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":" * toString method of the UniqueCategoryList directly, the leading and trailing","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" * square brackets are trimmed, and prepended with a \"hashtag\".","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" private void categoriesStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoriesToString \u003d transaction.getCategories().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" int categoriesToStringLength \u003d categoriesToString.length();","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" String trimmedCategoriesToString \u003d categoriesToString","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"sp4ce-cowboy"},"content":" .substring(1, categoriesToStringLength - 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoriesToStringWithHashTag \u003d \"#\" + trimmedCategoriesToString;","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.setText(categoriesToStringWithHashTag);","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.setStyle(FONT_STYLE_BOLD);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize transactionLocation label style","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"sp4ce-cowboy"},"content":" private void transactionLocationStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionLocationToString \u003d transaction.getLocation().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"sp4ce-cowboy"},"content":" transactionLocation.setText(transactionLocationToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize dateTime label style","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"sp4ce-cowboy"},"content":" private void dateTimeStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" String dateTimeToString \u003d transaction.getDateTime().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" dateTime.setText(dateTimeToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize name label style","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"sp4ce-cowboy"},"content":" private void nameStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"sp4ce-cowboy"},"content":" String nameToString \u003d transaction.getName().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"sp4ce-cowboy"},"content":" name.setText(nameToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize id label style","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":" private void idStyleFormatter(int displayedIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" String idToString \u003d String.valueOf(displayedIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"sp4ce-cowboy"},"content":" String idWithSeparator \u003d idToString + TRANSACTION_ID_SEPARATOR;","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"sp4ce-cowboy"},"content":" id.setText(idWithSeparator);","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":144,"lipwei1808":41,"jamz903":7}},{"path":"src/main/java/unicash/ui/TransactionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class TransactionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String FXML \u003d \"TransactionListPanel.fxml\";","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TransactionListPanel.class);","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private ListView\u003cTransaction\u003e transactionListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code TransactionListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public TransactionListPanel(ObservableList\u003cTransaction\u003e transactionList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" super(FXML);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" transactionListView.setItems(transactionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" transactionListView.setCellFactory(listView -\u003e new TransactionListViewCell());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Transaction} using a {@code TransactionCard}.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" class TransactionListViewCell extends ListCell\u003cTransaction\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" protected void updateItem(Transaction transaction, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" super.updateItem(transaction, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" if (empty || transaction \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" setText(null);","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" setGraphic(new TransactionCard(transaction, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":45}},{"path":"src/main/java/unicash/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * API of UI component","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /** Starts the UI (and the App). */","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":12}},{"path":"src/main/java/unicash/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String ICON_APPLICATION \u003d \"/images/wallet_icon.png\";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":82}},{"path":"src/main/java/unicash/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"jamz903"},"content":" background-color: #F3F3F3; /* Used in the default.html file */","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" -fx-base: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" -fx-control-inner-background: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 44%);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 80%);","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 24%);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":".cell_small_label_bold {","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":143,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"jamz903"},"content":"/* outer box */","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":148,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 10%);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":".pane-with-black-border {","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 25%);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":198,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 50%);","lastModifiedDate":"2023-10-17"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":235,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"jamz903"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"jamz903"},"content":" -fx-border-color: black, black;","lastModifiedDate":"2023-10-17"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":261,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 25%);","lastModifiedDate":"2023-10-17"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"jamz903"},"content":" -fx-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":295,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 50%);","lastModifiedDate":"2023-10-17"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#979191, 89%);","lastModifiedDate":"2023-10-17"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"jamz903"},"content":" -fx-border-insets: 3;","lastModifiedDate":"2023-10-17"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: #575757;","lastModifiedDate":"2023-10-17"},{"lineNumber":342,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"jamz903"},"content":" -fx-background-color: transparent, derive(#F3F3F3, 90%), transparent, derive(#F3F3F3, 90%);","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":351,"author":{"gitId":"jamz903"},"content":" -fx-border-color: transparent, derive(#979191, 75%), transparent, derive(#979191, 75%);","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"jamz903"},"content":" -fx-border-width: 1;","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":369,"author":{"gitId":"jamz903"},"content":"#categories {","lastModifiedDate":"2023-10-17"},{"lineNumber":370,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":371,"author":{"gitId":"jamz903"},"content":" -fx-label-padding: 2 3 2 3;","lastModifiedDate":"2023-10-17"},{"lineNumber":372,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #FFD43E;","lastModifiedDate":"2023-10-17"},{"lineNumber":373,"author":{"gitId":"jamz903"},"content":" -fx-background-radius: 4;","lastModifiedDate":"2023-10-17"},{"lineNumber":374,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":375,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-19"},{"lineNumber":376,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":377,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":378,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":379,"author":{"gitId":"sp4ce-cowboy"},"content":".bold-label {","lastModifiedDate":"2023-10-18"},{"lineNumber":380,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-18"},{"lineNumber":381,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":382,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":383,"author":{"gitId":"sp4ce-cowboy"},"content":".normal-label {","lastModifiedDate":"2023-10-19"},{"lineNumber":384,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: normal;","lastModifiedDate":"2023-10-19"},{"lineNumber":385,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":386,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":387,"author":{"gitId":"sp4ce-cowboy"},"content":".bold-label-menubar {","lastModifiedDate":"2023-10-19"},{"lineNumber":388,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":389,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":390,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":391,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":392,"author":{"gitId":"sp4ce-cowboy"},"content":".status-bar-color {","lastModifiedDate":"2023-10-19"},{"lineNumber":393,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":394,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":395,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":396,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":397,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 10pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":398,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":399,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":400,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-name {","lastModifiedDate":"2023-10-19"},{"lineNumber":401,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":402,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-19"},{"lineNumber":403,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":404,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":405,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":406,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":407,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-id {","lastModifiedDate":"2023-10-19"},{"lineNumber":408,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":409,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-19"},{"lineNumber":410,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":411,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":412,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":413,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":414,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-subtitle {","lastModifiedDate":"2023-10-19"},{"lineNumber":415,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":416,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2023-10-19"},{"lineNumber":417,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":418,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-19"},{"lineNumber":419,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":420,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":421,"author":{"gitId":"sp4ce-cowboy"},"content":".big-money {","lastModifiedDate":"2023-10-19"},{"lineNumber":422,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":423,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":424,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":425,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":426,"author":{"gitId":"sp4ce-cowboy"},"content":".positive-amount {","lastModifiedDate":"2023-10-19"},{"lineNumber":427,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: green;","lastModifiedDate":"2023-10-19"},{"lineNumber":428,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":429,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":430,"author":{"gitId":"sp4ce-cowboy"},"content":".negative-amount {","lastModifiedDate":"2023-10-19"},{"lineNumber":431,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: red;","lastModifiedDate":"2023-10-19"},{"lineNumber":432,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":83,"jamz903":57,"-":292}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":" -fx-background: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" -fx-border-color: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: #2f2f2f; // Your desired color","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar .menu-button {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: transparent; // This is to ensure individual menu items don\u0027t override the MenuBar color","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: white; // Change the text color if needed","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar .menu-button:hover {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: #3f3f3f; // Hover color for individual menu items","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":12,"jamz903":3,"-":18}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: gray;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":15}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Need help with UniCa$h?\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":43}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import java.net.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.image.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.stage.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"UniCa$h\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17.0.2-ea\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cImage url\u003d\"@/images/wallet_icon.png\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" styleClass\u003d\"bold-label-menubar\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" styleClass\u003d\"normal-label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" onAction\u003d\"#handleHelp\" text\u003d\"Help\" styleClass\u003d\"normal-label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"User Guide\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem fx:id\u003d\"userGuideMenuItem\" text\u003d\"Open...\"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" styleClass\u003d\"normal-label\" onAction\u003d\"#handleOpenUserGuide\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c!-- The below code contains the SplitPane, so the MenuBar runs across --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cSplitPane dividerPositions\u003d\"0.7\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox minWidth\u003d\"400\" prefWidth\u003d\"400\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"400\" prefWidth\u003d\"400\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"transactionListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox minWidth\u003d\"300\" prefWidth\u003d\"300\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"310\" minHeight\u003d\"310\" prefHeight\u003d\"310\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"5\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":32,"-":35}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":8}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" styleClass\u003d\"bold-label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":11}},{"path":"src/main/resources/view/TransactionCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" \u003cHBox HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"transaction-id\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"transaction-name\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"amount\" text\u003d\"\\$amount\" styleClass\u003d\"big-money\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"transaction-subtitle\" text\u003d\"Date: \" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" \u003cLabel fx:id\u003d\"dateTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dateTime\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"jamz903"},"content":" \u003cHBox spacing\u003d\"3\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"transaction-subtitle\" text\u003d\"Location: \" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"jamz903"},"content":" \u003cLabel fx:id\u003d\"transactionLocation\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"jamz903"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"cell_small_label_bold categories\" alignment\u003d\"CENTER_LEFT\" fx:id\u003d\"categories\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":6,"lipwei1808":28,"jamz903":17}},{"path":"src/main/resources/view/TransactionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" \u003cListView fx:id\u003d\"transactionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"lipwei1808":1,"-":7}},{"path":"src/test/java/unicash/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertEquals(appParameters, new AppParameters());","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertEquals(appParameters, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertFalse(appParameters.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(appParameters, otherAppParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" private final Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":8,"-":82}},{"path":"src/test/java/unicash/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.util.logging.Level;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertEquals(defaultConfig, defaultConfig);","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertFalse(defaultConfig.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" Config otherConfig \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(defaultConfig, otherConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" otherConfig.setLogLevel(Level.OFF);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(otherConfig, defaultConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" otherConfig \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" otherConfig.setUserPrefsFilePath(Path.of(\"invalid_path.txt\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(otherConfig, defaultConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" public void hashCode_sameConfig_returnsSameHashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(first.hashCode(), second.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" public void hashCode_differentConfig_returnsDifferentHashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" second.setLogLevel(Level.OFF);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(first.hashCode(), second.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":31,"-":24}},{"path":"src/test/java/unicash/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.awt.Point;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" public void getWindowCoordinates() {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" var settings \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" assertNull(settings.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" var settingsWithCoords \u003d new GuiSettings(400, 500, 15, 30);","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertNotNull(settingsWithCoords.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(new Point(15, 30), settingsWithCoords.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" public void hashCode_tests() {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" var settingsOne \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" var settingsTwo \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" assertEquals(settingsOne.hashCode(), settingsTwo.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" var settingsThreeDifferent \u003d new GuiSettings(400, 500, 10, 10);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settingsOne.hashCode(), settingsThreeDifferent.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" var settings \u003d new GuiSettings(400, 500, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertEquals(settings, settings);","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertFalse(settings.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var changedWidth \u003d new GuiSettings(15, 500, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedWidth);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" var changedHeight \u003d new GuiSettings(400, 400, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedHeight);","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var changedCoordinates \u003d new GuiSettings(400, 500, 15, 15);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedCoordinates);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":44,"-":15}},{"path":"src/test/java/unicash/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertTrue(version.isEarlyAccess());","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertEquals(0, one.compareTo(another));","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" assertEquals(0, one.compareTo(another));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" assertEquals(one, another);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertEquals(one, another);","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" public void compareTo_fallThrough_returns1() {","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Version(1, 2, 3, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Version(1, 2, 3, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, first.compareTo(second));","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" public void compareTo_isEarlyAccess_returnsNegative1() {","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Version(1, 2, 3, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Version(1, 2, 3, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" assertEquals(-1, first.compareTo(second));","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" var version \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" assertEquals(version, version);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" assertFalse(version.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" var sameVersion \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" assertEquals(version, sameVersion);","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" var changedMajor \u003d new Version(2, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedMajor);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" var changedMinor \u003d new Version(0, 2, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedMinor);","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" var changedPatch \u003d new Version(0, 0, 2, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedPatch);","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" var changedIsEarlyAccess \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedIsEarlyAccess);","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":42,"-":131}},{"path":"src/test/java/unicash/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core.index;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Index fifthPersonIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, Index.fromOneBased(5));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, Index.fromZeroBased(4));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertFalse(fifthPersonIndex.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(fifthPersonIndex, Index.fromOneBased(1));","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":8,"-":59}},{"path":"src/test/java/unicash/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotNull(AppUtil.getImage(\"/images/wallet_icon.png\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":34}},{"path":"src/test/java/unicash/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CollectionUtilTest {","lastModifiedDate":"2016-12-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void requireAllNonNullVarargs() {","lastModifiedDate":"2017-05-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // no arguments","lastModifiedDate":"2017-01-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown();","lastModifiedDate":"2017-05-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // any non-empty argument list","lastModifiedDate":"2017-01-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"\");","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // argument lists with just one null at the beginning","lastModifiedDate":"2017-01-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, \"\", new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // argument lists with nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), null, null, \"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", null, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // argument lists with one null as the last argument","lastModifiedDate":"2017-01-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object[]) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // confirms nulls inside lists in the argument list are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" List\u003cObject\u003e containingNull \u003d Collections.singletonList((Object) null);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(containingNull, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void requireAllNonNullCollection() {","lastModifiedDate":"2017-05-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // lists containing nulls in the front","lastModifiedDate":"2017-01-14"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertNullPointerExceptionThrown(Collections.singletonList((Object) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(null, new Object(), \"\"));","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // lists containing nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, \"eggs\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // lists containing nulls at the end","lastModifiedDate":"2017-01-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Collection\u003cObject\u003e) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // empty list","lastModifiedDate":"2017-01-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Collections.emptyList());","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // list with all non-null elements","lastModifiedDate":"2017-01-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object(), \"ham\", Integer.valueOf(1)));","lastModifiedDate":"2018-04-01"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertNullPointerExceptionNotThrown(List.of(new Object()));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // confirms nulls inside nested lists are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" List\u003cObject\u003e containingNull \u003d Collections.singletonList((Object) null);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(containingNull, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void isAnyNonNull() {","lastModifiedDate":"2017-06-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull());","lastModifiedDate":"2017-06-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object[]) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object()));","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object(), null));","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Object...)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if {@code objects} or any element of {@code objects} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(objects));","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Collection\u003c?\u003e)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if {@code collection} or any element of {@code collection} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(collection));","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireAllNonNull(objects);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireAllNonNull(collection);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":101}},{"path":"src/test/java/unicash/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ConfigUtilTest {","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"ConfigUtilTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path tempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void read_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e read(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(read(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e read(\"NotJsonFormatConfig.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"TypicalConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"EmptyConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new Config(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void read_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"ExtraValuesConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private Config getTypicalConfig() {","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" config.setLogLevel(Level.INFO);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" config.setUserPrefsFilePath(Paths.get(\"preferences.json\"));","lastModifiedDate":"2018-04-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return config;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private Optional\u003cConfig\u003e read(String configFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ConfigUtil.readConfig(configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void save_nullConfig_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void save_nullFile_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(new Config(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveConfig_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Config original \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Path configFilePath \u003d tempDir.resolve(\"TempConfig.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Config readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" original.setLogLevel(Level.FINE);","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void save(Config config, String configFileInTestDataFolder) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(config, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String configFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return configFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(configFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":112}},{"path":"src/test/java/unicash/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" @TempDir","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" public Path temporaryFolder;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" public void isFileExists_nonExistentFile_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(FileUtil.isFileExists(Path.of(\"invalid\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void createFile_existingFile_earlyReturns() throws IOException {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var path \u003d temporaryFolder.resolve(\"tempfile\");","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" Files.createFile(path);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" FileUtil.createFile(path);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":21,"-":20}},{"path":"src/test/java/unicash/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.SerializableTestClass;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TestUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Tests JSON Read and Write","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":1,"-":42}},{"path":"src/test/java/unicash/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":142}},{"path":"src/test/java/unicash/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.StorageManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" private final Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" var uniCashStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" new JsonUniCashStorage(temporaryFolder.resolve(\"unicash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" StorageManager storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" String deleteCommand \u003d \"delete_transaction 9\";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" public void getFilteredTransactionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTransactionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" public void getGuiSettings() {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(model.getGuiSettings(), new GuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" public void setGuiSettings() {","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" var localModel \u003d new ModelManager();","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" var guiSettings \u003d new GuiSettings(15, 15, 15, 15);","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" localModel.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" assertEquals(localModel.getGuiSettings(), guiSettings);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" // Inject LogicManager with an UniCashStorage that throws the IOException e when saving","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" JsonUniCashStorage uniCashStorage \u003d new JsonUniCashStorage(prefPath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath)","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" StorageManager storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" // Triggers the saveUniCash method by executing an add command","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" String addCommand \u003d AddTransactionCommand.COMMAND_WORD","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":" + TRANSACTION_NAME_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"sp4ce-cowboy"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"sp4ce-cowboy"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"sp4ce-cowboy"},"content":" + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" Transaction expectedTransaction \u003d new TransactionBuilder(NUS).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" expectedModel.addTransaction(expectedTransaction);","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"sp4ce-cowboy":35,"woojiahao":30,"lipwei1808":3,"-":134}},{"path":"src/test/java/unicash/logic/UniCashMessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashMessagesTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_noPrefixes_throwsAssertionError() {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(AssertionError.class, () -\u003e UniCashMessages.getErrorMessageForDuplicatePrefixes());","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_singlePrefix_returnsFormattedMessage() {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" String errorMessage \u003d UniCashMessages.getErrorMessageForDuplicatePrefixes(new Prefix(\"n/\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"Multiple values specified for the following single-valued field(s): n/\", errorMessage);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_multiplePrefixes_returnsFormattedMessage() {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" String errorMessage \u003d UniCashMessages.getErrorMessageForDuplicatePrefixes(new Prefix(\"n/\"), new Prefix(\"p/\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d \"Multiple values specified for the following single-valued field(s): n/ p/\";","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedMessage, errorMessage);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":33}},{"path":"src/test/java/unicash/logic/commands/AddTransactionCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandIntegrationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private Model model;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" @BeforeEach","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public void setUp() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public void execute_newTransaction_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" expectedModel.addTransaction(validTransaction);","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertCommandSuccess(new AddTransactionCommand(validTransaction), model,","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" UniCashMessages.formatTransaction(validTransaction)), expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public void execute_duplicateTransaction_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" Transaction transactionInList \u003d model.getUniCash().getTransactionList().get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" expectedModel.addTransaction(transactionInList);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertCommandSuccess(new AddTransactionCommand(transactionInList), model,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" UniCashMessages.formatTransaction(transactionInList)), expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lipwei1808":50}},{"path":"src/test/java/unicash/logic/commands/AddTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public void constructor_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTransactionCommand(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public void execute_transactionAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" ModelStubAcceptingTransactionAdded modelStub \u003d new ModelStubAcceptingTransactionAdded();","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" CommandResult commandResult \u003d new AddTransactionCommand(validTransaction).execute(modelStub);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(validTransaction)),","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(List.of(validTransaction), modelStub.transactionsAdded);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void execute_duplicateTransaction_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand addTransactionCommand \u003d new AddTransactionCommand(validTransaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" ModelStub modelStub \u003d new ModelStubWithTransaction(validTransaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e addTransactionCommand.execute(modelStub));","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addNusCommand \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addInternCommand \u003d new AddTransactionCommand(INTERN);","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertEquals(addNusCommand, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addNusCommandCopy \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertEquals(addNusCommand, addNusCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" // different Transaction -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" assertNotEquals(addNusCommand, addInternCommand);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" assertFalse(addNusCommand.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" AddTransactionCommand addTransactionCommand \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d AddTransactionCommand.class.getCanonicalName() + \"{toAdd\u003d\" + NUS + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, addTransactionCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-08"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash(ReadOnlyUniCash uniCash) {","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction(Transaction target) {","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" public void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":" * A Model stub that contains a single transaction.","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" private class ModelStubWithTransaction extends AddTransactionCommandTest.ModelStub {","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" private final Transaction transaction;","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" ModelStubWithTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" this.transaction \u003d transaction;","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" return this.transaction.equals(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" * A Model stub that always accept the transaction being added.","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":" private class ModelStubAcceptingTransactionAdded extends AddTransactionCommandTest.ModelStub {","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":" final ArrayList\u003cTransaction\u003e transactionsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":194,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" return transactionsAdded.stream().anyMatch(transaction::equals);","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" transactionsAdded.add(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":" return new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":208,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":209,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":210,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":16,"woojiahao":12,"lipwei1808":170,"elhy1999":12}},{"path":"src/test/java/unicash/logic/commands/ClearTransactionsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ClearTransactionsCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_emptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ClearTransactionsCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" ClearTransactionsCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_nonEmptyUniCash_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(new UniCash());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ClearTransactionsCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" ClearTransactionsCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":34,"woojiahao":1}},{"path":"src/test/java/unicash/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, new CommandResult(\"feedback\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, new CommandResult(\"feedback\", false, false));","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(0.5f, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertFalse(commandResult.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"different\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"feedback\", true, false));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"feedback\", false, true));","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":9,"-":54}},{"path":"src/test/java/unicash/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TRANSACTION_NAME_NUS \u003d \"Work at NUS\";","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" public static final String VALID_TRANSACTION_NAME_INTERN \u003d \"Internship work\";","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TRANSACTION_NAME_SHOPPING \u003d \"Shopping\";","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TYPE_EXPENSE \u003d \"expense\";","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TYPE_INCOME \u003d \"income\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_NUS \u003d 888.8;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_INTERN \u003d 8.8;","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_SHOPPING \u003d 899.8;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_NUS \u003d \"12-12-2021 12:12\";","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_INTERN \u003d \"08-08-2008 08:08\";","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_SHOPPING \u003d \"01-02-2008 11:08\";","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_ENTERTAINMENT \u003d \"entertainment\";","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_EDUCATION \u003d \"education\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_NUS \u003d \"TA\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_LOCATION_ORCHARD \u003d \"orchard\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" public static final String VALID_LOCATION_NUS \u003d \"NUS\";","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_NAME_DESC_NUS \u003d \" \" + PREFIX_NAME + VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_NAME_DESC_INTERN \u003d \" \" + PREFIX_NAME + VALID_TRANSACTION_NAME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String AMOUNT_DESC_NUS \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String AMOUNT_DESC_INTERN \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String DATETIME_DESC_NUS \u003d \" \" + PREFIX_DATETIME + VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String DATETIME_DESC_INTERN \u003d \" \" + PREFIX_DATETIME + VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TYPE_DESC_EXPENSE \u003d \" \" + PREFIX_TYPE + VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TYPE_DESC_INCOME \u003d \" \" + PREFIX_TYPE + VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String CATEGORY_DESC_ENTERTAINMENT \u003d \" \" + PREFIX_CATEGORY + VALID_CATEGORY_ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String CATEGORY_DESC_NUS \u003d \" \" + PREFIX_CATEGORY + VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String LOCATION_DESC_ORCHARD \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String LOCATION_DESC_NUS \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_TRANSACTION_NAME_DESC \u003d \" \" + PREFIX_NAME + \"NUS\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_AMOUNT_DESC \u003d \" \" + PREFIX_AMOUNT + \"-3.0\"; // negative amounts not allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_DATETIME_DESC \u003d \" \" + PREFIX_DATETIME + \"19/13/2001 19:30\"; // invalid date","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_TYPE_DESC \u003d \" \" + PREFIX_TYPE + \"afaf\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_CATEGORY_DESC \u003d \" \" + PREFIX_CATEGORY + \"afraf*\u0026\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION + \"a214faf*\u0026\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" public static final EditTransactionCommand.EditTransactionDescriptor DESC_NUS;","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" public static final EditTransactionCommand.EditTransactionDescriptor DESC_SHOPPING;","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" DESC_NUS \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" DESC_SHOPPING \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_ENTERTAINMENT)","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" public static void assertCommandSuccess(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" Command command,","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" Model actualModel,","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" CommandResult expectedCommandResult,","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" Model expectedModel","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" UniCash expectedUniCash \u003d new UniCash(actualModel.getUniCash());","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" List\u003cTransaction\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredTransactionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" assertEquals(expectedUniCash, actualModel.getUniCash());","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredTransactionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" * Updates {@code model}\u0027s filtered list to show only the transaction at the","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" * given {@code targetIndex} in the {@code model}\u0027s database.","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" public static void showTransactionAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transaction \u003d model.getFilteredTransactionList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" final String[] splitName \u003d transaction.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(splitName[0])));","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(1, model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"sp4ce-cowboy":49,"woojiahao":27,"lipwei1808":14,"-":59,"elhy1999":5}},{"path":"src/test/java/unicash/logic/commands/DeleteTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.showTransactionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * {@code DeleteTransactionCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTransactionList().size() + 1);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandFailure(deleteCommand, model, UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteFirstCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteSecondCommand \u003d new DeleteTransactionCommand(INDEX_SECOND_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteFirstCommandCopy \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, deleteFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" // different transaction -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(deleteFirstCommand, deleteSecondCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(targetIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d DeleteTransactionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d model.getFilteredTransactionList().get(","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(DeleteTransactionCommand.MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete));","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" ModelManager expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d model.getFilteredTransactionList()","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" .get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(DeleteTransactionCommand.MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete));","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" showNoTransaction(expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" // ensures that outOfBoundIndex is still in bounds of transactions list","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c getTypicalUniCash().getTransactionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" * Updates {@code model}\u0027s filtered list to show no transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" private void showNoTransaction(Model model) {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(p -\u003e false);","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(model.getFilteredTransactionList().isEmpty());","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":118,"woojiahao":8,"elhy1999":1}},{"path":"src/test/java/unicash/logic/commands/EditTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.showTransactionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand.EditTransactionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditTransactionCommand.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptor()","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" ));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" public void constructor_nullDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" Index.fromOneBased(9),","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" null","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" ));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" Index.fromOneBased(9),","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptor()","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e command.execute(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTransactionList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" assertCommandFailure(","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" editTransactionCommand,","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" model,","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" * but smaller than size of uni cash","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getUniCash().getTransactionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" outOfBoundIndex,","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" assertCommandFailure(","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" editTransactionCommand,","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" model,","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"elhy1999"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" var editedTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder(editedTransaction).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.formatTransaction(editedTransaction)","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" getTypicalUniCash(),","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" new UserPrefs()","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(model.getFilteredTransactionList().get(0), editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" Index indexLastTransaction \u003d Index.fromOneBased(model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":" Transaction lastTransaction \u003d model.getFilteredTransactionList().get(indexLastTransaction.getZeroBased());","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":" TransactionBuilder transactionInList \u003d new TransactionBuilder(lastTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d transactionInList","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" EditTransactionDescriptor descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(indexLastTransaction, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction));","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(lastTransaction, editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"elhy1999"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION,","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" new EditTransactionDescriptor());","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction editedTransaction \u003d model.getFilteredTransactionList().get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction));","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":" getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" Transaction transactionInFilteredList \u003d model","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" .getFilteredTransactionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" .get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d new TransactionBuilder(transactionInFilteredList)","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" INDEX_FIRST_TRANSACTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.formatTransaction(editedTransaction)","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" getTypicalUniCash(),","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" new UserPrefs()","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(model.getFilteredTransactionList().get(0), editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, command);","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" public void equals_nullOther_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" public void equals_fullShallowCopy_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"woojiahao"},"content":" public void equals_partialShallowCopyDescriptor_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor(DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"woojiahao"},"content":" public void equals_otherDifferentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"woojiahao"},"content":" assertFalse(command.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":230,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"woojiahao"},"content":" public void equals_differentIndex_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_SECOND_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"woojiahao"},"content":" public void equals_differentDescriptor_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_SHOPPING);","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"elhy1999"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" var editTransactionDescriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(index, editTransactionDescriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":" String expected \u003d EditTransactionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" + \"{index\u003d\" + index","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" + \", editTransactionDescriptor\u003d\" + editTransactionDescriptor + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, editTransactionCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":42,"woojiahao":138,"elhy1999":76}},{"path":"src/test/java/unicash/logic/commands/EditTransactionDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_NUS;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.EditTransactionCommand.EditTransactionDescriptor;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class EditTransactionDescriptorTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" assertEquals(DESC_NUS, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public void equals_constructorCopy_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor(DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertEquals(DESC_NUS, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" public void equals_otherNull_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" public void equals_otherDifferentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertFalse(DESC_NUS.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" public void equals_differentName_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withName(VALID_TRANSACTION_NAME_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" public void equals_differentAmount_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withAmount(VALID_AMOUNT_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void equals_differentDateTime_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withDateTime(VALID_DATETIME_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public void equals_differentLocation_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withLocation(VALID_LOCATION_ORCHARD).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withLocation(VALID_TYPE_INCOME).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" public void equals_differentCategories_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withCategories(\"Completely\", \"Different\").build();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" public void isAnyFieldEdited_withNoEdits_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" assertFalse(descriptor.isAnyFieldEdited());","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" public void isAnyFieldEdited_withEdits_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" descriptor.setName(new Name(\"Changed name\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" assertTrue(descriptor.isAnyFieldEdited());","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" String expected \u003d EditTransactionDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" + descriptor.getName().orElse(null) + \", amount\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" + descriptor.getAmount().orElse(null) + \", datetime\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" + descriptor.getDateTime().orElse(null) + \", location\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" + descriptor.getLocation().orElse(null) + \", type\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" + descriptor.getType().orElse(null) + \", categories\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" + descriptor.getCategories().orElse(null) + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, descriptor.toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"woojiahao":104}},{"path":"src/test/java/unicash/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ExitCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_exit_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandResult expectedCommandResult \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" new CommandResult(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ExitCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedCommandResult, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":22,"woojiahao":3}},{"path":"src/test/java/unicash/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_TRANSACTIONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private final Model model \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" private final Model modelWithTransactions \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private final Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":" // different transaction -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertFalse(findFirstCommand.equals(3));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" public void execute_zeroKeywords_noTransactionsFound() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"jamz903"},"content":" String expectedMessage \u003d String.format(MESSAGE_TRANSACTIONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jamz903"},"content":" expectedModel.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"jamz903"},"content":" assertEquals(Collections.emptyList(), model.getFilteredTransactionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" public void execute_oneKeyword_multipleTransactionsFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(MESSAGE_TRANSACTIONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"work\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" expectedModel.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" assertCommandSuccess(command, modelWithTransactions, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" var filteredResult \u003d modelWithTransactions.getFilteredTransactionList();","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" assertEquals(filteredResult.get(0), NUS);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" assertEquals(filteredResult.get(1), INTERN);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d new TransactionNameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" List.of(\"keyword\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":99,"author":{"gitId":"jamz903"},"content":" private TransactionNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"jamz903"},"content":" return new TransactionNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":13,"jamz903":12,"-":47,"elhy1999":22}},{"path":"src/test/java/unicash/logic/commands/GetTotalExpenditureCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Model BASE_MODEL \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(10, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e command.execute(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" public void execute_negativeMonth_throwsCommandException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(-12, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(BASE_MODEL));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void execute_monthGreaterThan12_throwsCommandException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(13, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(BASE_MODEL));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" public void execute_validMonthWithOnlyOneMonth_filtersOnlyExpenses() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"income\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsOnly_filtersOnlySelectedMonths() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" public void execute_expenseWithoutCategoryWithCategoryFilter_notIncludedInFilter() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" // This transaction does not contain any categories even if it\u0027s in August","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withCategories().withType(\"expense\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, filteredResult.size());","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" public void execute_expenseWithoutCategoryWithoutCategoryFilter_includedInFilter() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" // This transaction does not contain any categories even if it\u0027s in August","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" // This should be included this round as no category filter is in place","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withCategories().withType(\"expense\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleCategoriesOnly_filtersOnlySelectedCategory() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" assertTrue(result.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(new Category(\"Food\"))));","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsAndCategories_filtersForSelectedMonthAndCategory() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"23-06-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" assertTrue(result.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(new Category(\"Food\"))));","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsAndCategories_returnsValidTotalExpenditure() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"23-06-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withAmount(133.15).build());","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" var result \u003d command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" assertEquals(","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" String.format(GetTotalExpenditureCommand.MESSAGE_SUCCESS, \"AUGUST\", 123.45 + 133.15),","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" result.getFeedbackToUser()","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleCategories_includedIfOneCategoryFitsFilter() throws CommandException {","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" new TransactionBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" .withType(\"expense\")","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" .withCategories(\"Food\", \"Drinks\", \"Social\")","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories().build());","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"School\", \"Food\").build());","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" for (var res : filteredResult) {","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, res.getType().type);","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" boolean hasMatchingCategory \u003d false;","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" for (var category : res.getCategories()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" if (category.equals(new Category(\"Food\"))) {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" hasMatchingCategory \u003d true;","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" break;","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" assertTrue(hasMatchingCategory);","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" public void toString_noInput_returnsCommandStringFormatted() {","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" var toStringResult \u003d command.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d GetTotalExpenditureCommand.class.getCanonicalName() + \"{month\u003d8, categoryFilter\u003dFood}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, toStringResult);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, command);","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"woojiahao"},"content":" assertFalse(command.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"woojiahao"},"content":" public void equals_sameMonthAndCategoryFilter_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" public void equals_sameMonthDifferentCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Others\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"woojiahao"},"content":" public void equals_differentMonthSameCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"woojiahao"},"content":" public void equals_differentMonthAndCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Others\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"woojiahao"},"content":" public void equals_nullCatFilterOtherNonNullCatFilter_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(7, new Category(\"Others\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":242,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"woojiahao"},"content":" public void equals_nullCatFilterOtherNullCatFilter_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":245,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" private static Model getModel() {","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" return new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":16,"woojiahao":228,"lipwei1808":9}},{"path":"src/test/java/unicash/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class HelpCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_help_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandResult expectedCommandResult \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new HelpCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedCommandResult, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":21,"woojiahao":3}},{"path":"src/test/java/unicash/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" public void equals_nullOther_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(new ListCommand(), null);","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(new ListCommand().equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void equals_otherListCommand_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var first \u003d new ListCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" var second \u003d new ListCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertEquals(first, second);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":23,"-":14}},{"path":"src/test/java/unicash/logic/commands/ResetCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.util.SampleDataUtil.getSampleUniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ResetCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_emptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ResetCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" ResetCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_nonEmptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager(getSampleUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ResetCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" ResetCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"sp4ce-cowboy":36}},{"path":"src/test/java/unicash/logic/parser/AddTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_CATEGORY_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TRANSACTION_NAME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TYPE_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_ORCHARD;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandParserTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" private final AddTransactionCommandParser parser \u003d new AddTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" Transaction expectedTransaction \u003d new TransactionBuilder(NUS).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" + TRANSACTION_NAME_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS,","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" new AddTransactionCommand(expectedTransaction));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" String validExpectedTransactionString \u003d TRANSACTION_NAME_DESC_NUS + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" + AMOUNT_DESC_NUS + DATETIME_DESC_NUS + LOCATION_DESC_ORCHARD + CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" // multiple names","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" // multiple amount","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, AMOUNT_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" // multiple datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, DATETIME_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" // multiple type","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TYPE_DESC_INCOME + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" // multiple location","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, LOCATION_DESC_ORCHARD + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TRANSACTION_NAME_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_AMOUNT_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" // invalid datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_DATETIME_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TYPE_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" // invalid category","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_CATEGORY_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" // invalid location","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_LOCATION_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_TRANSACTION_NAME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_AMOUNT_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" // invalid datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_DATETIME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_TYPE_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" // invalid category","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_CATEGORY_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" // invalid location","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTransactionCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" // missing name prefix","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, VALID_TRANSACTION_NAME_NUS + AMOUNT_DESC_NUS + TYPE_DESC_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" // missing amount prefix","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + VALID_AMOUNT_NUS + TYPE_DESC_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" // missing type prefix","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + VALID_AMOUNT_NUS + VALID_TYPE_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-08"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TRANSACTION_NAME_DESC + AMOUNT_DESC_NUS + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" + TYPE_DESC_EXPENSE, unicash.model.transaction.Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + INVALID_AMOUNT_DESC","lastModifiedDate":"2023-10-13"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" + DATETIME_DESC_NUS + TYPE_DESC_EXPENSE, Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + AMOUNT_DESC_NUS + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" + INVALID_TYPE_DESC, Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":54,"woojiahao":11,"lipwei1808":111}},{"path":"src/test/java/unicash/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":149}},{"path":"src/test/java/unicash/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":" } catch (ParseException | IllegalArgumentException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedMessage, e.getMessage());","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":34,"elhy1999":1}},{"path":"src/test/java/unicash/logic/parser/DeleteTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandParserTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" private final DeleteTransactionCommandParser parser \u003d new DeleteTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parse_validArgs_returnsDeleteTransactionCommand() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand command \u003d parser.parse(\"1\");","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new DeleteTransactionCommand(Index.fromOneBased(1)), command);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" // No number provided","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" // Non-integer input","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\".\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // Negative number","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" // Zero as input (assuming indices are 1-based)","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" // Float as input (assuming indices are 1-based)","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0.5\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":37,"woojiahao":1,"elhy1999":4}},{"path":"src/test/java/unicash/logic/parser/EditTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_CATEGORY_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TRANSACTION_NAME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TYPE_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_ORCHARD;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandParserTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"elhy1999"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditTransactionCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String CATEGORY_EMPTY \u003d \" \" + PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionCommandParser parser \u003d new EditTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":" // no index specified","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(parser, VALID_TRANSACTION_NAME_NUS, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" // no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1\", EditTransactionCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" // negative index","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" \"-5\" + TRANSACTION_NAME_DESC_NUS,","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" MESSAGE_INVALID_FORMAT","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" // zero index","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" \"0\" + TRANSACTION_NAME_DESC_NUS,","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" MESSAGE_INVALID_FORMAT","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"elhy1999"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TRANSACTION_NAME_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" Name.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" ); // invalid name","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_AMOUNT_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" Amount.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" ); // invalid amount","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_CATEGORY_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" Category.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" ); // invalid category","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_DATETIME_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" DateTime.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" ); // invalid datetime","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" Location.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" ); // invalid location","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TYPE_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" Type.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" ); // invalid type","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":" // invalid amount followed by valid category","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_AMOUNT_DESC + CATEGORY_DESC_ENTERTAINMENT,","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" Amount.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"elhy1999"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TRANSACTION_NAME_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" + VALID_AMOUNT_INTERN","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" + VALID_DATETIME_INTERN,","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"elhy1999"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"elhy1999"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" + TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" var expectedTransactionCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedTransactionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + AMOUNT_DESC_INTERN + CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" var expectedTransactionCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedTransactionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" // name","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" var expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":" // amount","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withAmount(VALID_AMOUNT_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":" // category","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withCategories(VALID_CATEGORY_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":" // datetime","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":" // location","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withLocation(VALID_LOCATION_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"elhy1999"},"content":" // type","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withType(VALID_TYPE_INCOME).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"elhy1999"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"elhy1999"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"elhy1999"},"content":" // AddTransactionCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"elhy1999"},"content":" // valid followed by invalid","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_NUS + INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"sp4ce-cowboy"},"content":" assertParseFailure(parser, userInput, UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":" // invalid followed by valid","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_LOCATION_DESC + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"sp4ce-cowboy"},"content":" assertParseFailure(parser, userInput, UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"woojiahao"},"content":" // multiple valid fields repeated","lastModifiedDate":"2023-10-17"},{"lineNumber":244,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":245,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":249,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":252,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":253,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":254,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":255,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_ORCHARD","lastModifiedDate":"2023-10-17"},{"lineNumber":256,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-17"},{"lineNumber":257,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_INTERN","lastModifiedDate":"2023-10-17"},{"lineNumber":258,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_ENTERTAINMENT","lastModifiedDate":"2023-10-17"},{"lineNumber":259,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":260,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":261,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":262,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":263,"author":{"gitId":"woojiahao"},"content":" userInput,","lastModifiedDate":"2023-10-17"},{"lineNumber":264,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-17"},{"lineNumber":265,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_LOCATION,","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_TYPE,","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_AMOUNT,","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"lipwei1808"},"content":" PREFIX_DATETIME","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-17"},{"lineNumber":270,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":271,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"elhy1999"},"content":" // multiple invalid values","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":274,"author":{"gitId":"woojiahao"},"content":" + INVALID_LOCATION_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":275,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":276,"author":{"gitId":"woojiahao"},"content":" + INVALID_DATETIME_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":277,"author":{"gitId":"woojiahao"},"content":" + INVALID_LOCATION_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":278,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":279,"author":{"gitId":"woojiahao"},"content":" + INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":280,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":281,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":282,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":283,"author":{"gitId":"woojiahao"},"content":" userInput,","lastModifiedDate":"2023-10-17"},{"lineNumber":284,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-17"},{"lineNumber":285,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_LOCATION,","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_DATETIME","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-17"},{"lineNumber":288,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":289,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":290,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":291,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":292,"author":{"gitId":"woojiahao"},"content":" public void parse_resetCategories_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":293,"author":{"gitId":"woojiahao"},"content":" Index targetIndex \u003d INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":294,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + CATEGORY_EMPTY;","lastModifiedDate":"2023-10-17"},{"lineNumber":295,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":296,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder().withCategories().build();","lastModifiedDate":"2023-10-17"},{"lineNumber":297,"author":{"gitId":"woojiahao"},"content":" var expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":298,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":299,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":300,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":301,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":56,"woojiahao":141,"lipwei1808":2,"elhy1999":102}},{"path":"src/test/java/unicash/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" * A class to test the FindCommandParser.","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" private final FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseFailure(parser, \" \",","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"\",","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"jamz903"},"content":" new FindCommand(new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Shopping\", \"Work\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseSuccess(parser, \"Shopping Work\", expectedFindCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseSuccess(parser, \" \\n Shopping \\n \\t Work \\t\", expectedFindCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":1,"jamz903":5,"-":23,"elhy1999":2}},{"path":"src/test/java/unicash/logic/parser/GetTotalExpenditureCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandParserTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" private final GetTotalExpenditureCommandParser parser \u003d new GetTotalExpenditureCommandParser();","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" public void parse_noCategory_returnsGetTotalExpenditureCommandWithoutCategoryFilter() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" var result \u003d parser.parse(\" month/1\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new GetTotalExpenditureCommand(1, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, result);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" public void parse_withCategory_returnsGetTotalExpenditureCommandWithCategoryFilter() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" var result \u003d parser.parse(\" month/1 c/Food\");","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new GetTotalExpenditureCommand(1, new Category(\"Food\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, result);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" public void parse_withUnknownArgument_throwsParseException() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" // Parser will treat the month as 1 amt/500 and as such throw an exception","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" month/1 amt/500\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void parse_missingMonth_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var thrown \u003d assertThrows(ParseException.class, () -\u003e parser.parse(\" c/Food\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" assertEquals(","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GetTotalExpenditureCommand.MESSAGE_USAGE),","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" thrown.getMessage()","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" public void parse_nonIntegerMonth_throwsParseException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" month/hi\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":45}},{"path":"src/test/java/unicash/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" private final ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" public void parse_withArgsWord_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" //list with text","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" assertParseFailure(parser, \" abc\", ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" public void parse_withArgsNumber_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" //list with number","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" assertParseFailure(parser, \" 1\", ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public void parse_withExcessSpacing_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" //list with number","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(parser, \" \", new ListCommand());","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":11,"jamz903":16}},{"path":"src/test/java/unicash/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_NAME \u003d \"Ex@pen$e\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_AMOUNT \u003d \"str\";","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_DATETIME \u003d \"18-8-2001\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_CATEGORY \u003d \"$$af$\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_LOCATION \u003d \"^$2af\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_NAME \u003d \"Expense\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_AMOUNT \u003d \"3.0\";","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_DATETIME \u003d \"18-08-2001 18:30\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY \u003d \"hobbies\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_2 \u003d \"entertainment\";","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_3 \u003d \"test\";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_4 \u003d \"test2\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_5 \u003d \"test3\";","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_6 \u003d \"test4\";","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_LOCATION \u003d \"orchard road\";","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" assertEquals(INDEX_FIRST_TRANSACTION, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" assertEquals(INDEX_FIRST_TRANSACTION, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTransactionName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTransactionName(INVALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" Name expectedTransactionName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedTransactionName, ParserUtil.parseTransactionName(VALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" Name expectedTransactionName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedTransactionName, ParserUtil.parseTransactionName(nameWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void parseAmount_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAmount(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void parseAmount_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAmount(INVALID_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" public void parseAmount_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" Amount expectedAmount \u003d new Amount(3.0);","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedAmount, ParserUtil.parseAmount(VALID_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" public void parseAmount_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" String amountWithWhitespace \u003d WHITESPACE + VALID_AMOUNT + WHITESPACE;","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" Amount expectedAmount \u003d new Amount(3.0);","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedAmount, ParserUtil.parseAmount(amountWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" public void parseType_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseType(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" public void parseType_invalidType_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseType(\"hi\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" public void parseType_validValueWithoutWhitespace_returnsType() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" String value \u003d \"expense\";","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" Type expected \u003d new Type(\"expense\");","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, ParserUtil.parseType(value));","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" public void parseType_validValueWithWhitespace_returnsTrimmedType() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":" String value \u003d \" income \";","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":" Type expected \u003d new Type(\"income\");","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, ParserUtil.parseType(value));","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDateTime(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDateTime(INVALID_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" public void parseDateTime_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" DateTime expectedDateTime \u003d new DateTime(VALID_DATETIME);","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedDateTime, ParserUtil.parseDateTime(VALID_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" public void parseDateTime_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" String dateTimeWithWhiteSpace \u003d WHITESPACE + VALID_DATETIME + WHITESPACE;","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" DateTime expectedDateTime \u003d new DateTime(VALID_DATETIME);","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedDateTime, ParserUtil.parseDateTime(dateTimeWithWhiteSpace));","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_empty_doesNotThrow() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseDateTime(\"\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseDateTime(WHITESPACE + WHITESPACE));","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLocation(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLocation(INVALID_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" public void parseLocation_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(VALID_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(VALID_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_validValueWithWhitespace_returnsTrimmedLocation() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" String locationWithWhiteSpace \u003d WHITESPACE + VALID_LOCATION + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(VALID_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(locationWithWhiteSpace));","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_empty_returnsDefaultLocation() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(WHITESPACE);","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(WHITESPACE));","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCategory(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategory(INVALID_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_validValueWithoutWhitespace_returnsCategory() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" Category expectedCategory \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedCategory, ParserUtil.parseCategory(VALID_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_validValueWithWhitespace_returnsTrimmedCategory() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"lipwei1808"},"content":" String categoryWithWhitespace \u003d WHITESPACE + VALID_CATEGORY + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"lipwei1808"},"content":" Category expectedCategory \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedCategory, ParserUtil.parseCategory(categoryWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCategories(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithInvalidCategories_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, INVALID_CATEGORY)));","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_emptyCollection_returnsEmptySet() {","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseCategories(Collections.emptyList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithMoreThanAllowedNumberOfCategories_returnsCategorySet() {","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"lipwei1808"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY_2, VALID_CATEGORY_3, VALID_CATEGORY_4,","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORY_5, VALID_CATEGORY_6)));","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithValidCategories_returnsCategorySet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList actualCategoryList \u003d ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY_2));","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e(","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(new Category(VALID_CATEGORY), new Category(VALID_CATEGORY_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedCategoryList \u003d new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedCategoryList, actualCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithDuplicateCategories_returnsCategorySet() {","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"lipwei1808"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY)));","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"sp4ce-cowboy":33,"woojiahao":38,"lipwei1808":137,"-":42,"elhy1999":3}},{"path":"src/test/java/unicash/logic/parser/UniCashParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ClearTransactionsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ResetCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashParserTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" private final UniCashParser parser \u003d new UniCashParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":" assertEquals(new FindCommand(new TransactionNameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" public void parseCommand_addTransaction() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" String s \u003d TransactionUtil.getAddTransactionCommand(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand command \u003d (AddTransactionCommand) parser.parseCommand(s);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertEquals(new AddTransactionCommand(transaction), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_deleteTransaction() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand command \u003d (DeleteTransactionCommand)","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" parser.parseCommand(","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" + INDEX_FIRST_TRANSACTION.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_clearTransactions() throws Exception {","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD) instanceof ClearTransactionsCommand);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" instanceof ClearTransactionsCommand);","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_resetUniCashCommand() throws Exception {","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ResetCommand.COMMAND_WORD) instanceof ResetCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ResetCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" instanceof ResetCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" public void parseCommand_editTransaction() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" Transaction transaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.EditTransactionDescriptor descriptor \u003d new EditTransactionDescriptorBuilder(transaction)","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" String input \u003d EditTransactionCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TRANSACTION.getOneBased() + \" \";","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"elhy1999"},"content":" input +\u003d TransactionUtil.getEditTransactionDescriptorDetails(descriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand command \u003d (EditTransactionCommand) parser.parseCommand(input);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" public void parseCommand_getTotalExpenditure() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" assertTrue(","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" parser.parseCommand(GetTotalExpenditureCommand.COMMAND_WORD + \" month/8\")","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" instanceof GetTotalExpenditureCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" assertTrue(","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD + \" month/8 c/Food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" instanceof ClearTransactionsCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_helpUniCash() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_exitUniCash() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":" ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" var message \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, message, () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":71,"woojiahao":12,"lipwei1808":8,"jamz903":1,"-":41,"elhy1999":9}},{"path":"src/test/java/unicash/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.Model.PREDICATE_SHOW_ALL_TRANSACTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.UniCashBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertEquals(new UniCash(), new UniCash(modelManager.getUniCash()));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUniCashFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_validPath_setsUniCashFilePath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" modelManager.setUniCashFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" assertEquals(path, modelManager.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUniCash(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTransaction(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionNotInUniCash_returnsFalse() {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" assertFalse(modelManager.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" assertTrue(modelManager.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction_transactionNotInUniCash_throws() {","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e modelManager.deleteTransaction(BUYING_GROCERIES));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction_transactionInUniCash_throws() {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e modelManager.deleteTransaction(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" public void getFilteredUniCash_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTransactionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" UniCash differentUniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" modelManager \u003d new ModelManager(uniCash, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(uniCash, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" assertEquals(modelManager, modelManagerCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" assertEquals(modelManager, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertFalse(modelManager.equals(uniCash));","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" String[] keywords \u003d new String[] {\"internship\"};","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" modelManager.updateFilteredTransactionList(","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" new TransactionNameContainsKeywordsPredicate(Arrays.asList(keywords))","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" assertFalse(modelManager.equals(new ModelManager(uniCash, userPrefs)));","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" modelManager.updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" differentUserPrefs.setUniCashFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(modelManager, new ModelManager(uniCash, differentUserPrefs));","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" // different differentUniCash -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(modelManager, new ModelManager(differentUniCash, userPrefs));","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"sp4ce-cowboy":19,"woojiahao":25,"lipwei1808":40,"-":71,"elhy1999":1}},{"path":"src/test/java/unicash/model/UniCashTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.UniCashBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"public class UniCashTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void constructor() {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertEquals(Collections.emptyList(), uniCash.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.resetData(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public void resetData_withValidReadOnlyUniCash_replacesData() {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" UniCash newData \u003d getTypicalUniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" uniCash.resetData(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertEquals(newData, uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void resetData_withDuplicateTransactions_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" Transaction editedNus \u003d new TransactionBuilder(NUS).withAmount(VALID_AMOUNT_INTERN).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e newTransactions \u003d Arrays.asList(NUS, editedNus);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" UniCashTest.UniCashStub newData \u003d new UniCashTest.UniCashStub(newTransactions);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e uniCash.resetData(newData));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.hasTransaction(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionNotInUniCash_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertFalse(uniCash.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_personInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" assertTrue(uniCash.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.setTransaction(NUS, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_transactionNotInUniCash_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e uniCash.setTransaction(NUS, BUYING_GROCERIES));","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_transactionInUniCash_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e uniCash.setTransaction(NUS, BUYING_GROCERIES));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void removeTransaction_personInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" UniCash transactionList \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" assertTrue(transactionList.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" transactionList.removeTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" public void getUniCash_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e uniCash.getTransactionList().remove(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" String expected \u003d UniCash.class.getCanonicalName() + \"{transactions\u003d\" + uniCash.getTransactionList() + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, uniCash.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" UniCash transactionList \u003d new UniCashBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" // same lists","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" transactionList.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" UniCash anotherList \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" // different lists","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" anotherList \u003d new UniCashBuilder().withTransaction(INTERN).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":" assertFalse(transactionList.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" * A stub ReadOnlyUniCash whose persons list can violate interface constraints.","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" private static class UniCashStub implements ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e transactions \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" UniCashStub(Collection\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" this.transactions.setAll(transactions);","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" return transactions;","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash1 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash2 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash3 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" uniCash3.addTransaction(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" assertEquals(uniCash1.hashCode(), uniCash2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(uniCash1.hashCode(), uniCash3.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":11,"woojiahao":7,"lipwei1808":139}},{"path":"src/test/java/unicash/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setUniCashFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" var userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(userPrefs, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(userPrefs.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" var changedGuiSettings \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" changedGuiSettings.setGuiSettings(new GuiSettings(0, 0, 0, 0));","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(changedGuiSettings, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" var changedUniCashFilePath \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" changedUniCashFilePath.setUniCashFilePath(Path.of(\"invalid_path\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(changedUniCashFilePath, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs1 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs2 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs3 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" userPrefs3.setGuiSettings(new GuiSettings(0, 0, 0, 0));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" assertEquals(userPrefs1.hashCode(), userPrefs2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(userPrefs1.hashCode(), userPrefs3.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":23,"lipwei1808":10,"-":16}},{"path":"src/test/java/unicash/model/budget/BudgetTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.DAILY;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.MONTHLY;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.WEEKLY;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.testutil.BudgetBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"public class BudgetTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" Budget groceriesCopy \u003d new BudgetBuilder(DAILY).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY, groceriesCopy);","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, groceriesCopy);","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(5, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DAILY.equals(5));","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, WEEKLY);","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" // different interval -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" Budget editedDaily \u003d new BudgetBuilder(DAILY).withInterval(\"week\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, editedDaily);","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" // different amount -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" editedDaily \u003d new BudgetBuilder(DAILY).withAmount(1330.15).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, editedDaily);","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" String expected \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" Budget.class.getCanonicalName()","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" + \"{amount\u003d\" + DAILY.getAmount()","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" + \", interval\u003d\" + DAILY.getInterval()","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" + \"}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, DAILY.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY.hashCode(), DAILY.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY.hashCode(), MONTHLY.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":62}},{"path":"src/test/java/unicash/model/budget/IntervalTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class IntervalTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e new Interval(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidInterval_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" String[] invalidIntervals \u003d new String[] {\"\", \"1\", \"Wrong\"};","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" for (String invalidInterval: invalidIntervals) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Interval(invalidInterval));","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void isValidInterval() {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"\")); // empty string","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" \")); // spaces only","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"^\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"peter*\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"transfers\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"day\u0026\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" day \")); // valid day with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" week \")); // valid week with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" month \")); // valid month with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"day\")); // day","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"week\")); // week","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"month\")); // month","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" Interval interval \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" assertEquals(interval, new Interval(\"week\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" assertEquals(interval, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // different intervals -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(5.0f, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" assertFalse(interval.equals(5));","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(interval, new Interval(\"month\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" Interval week \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" Interval week2 \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" Interval month \u003d new Interval(\"month\");","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" assertEquals(week.hashCode(), week2.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(week.hashCode(), month.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":78}},{"path":"src/test/java/unicash/model/category/CategoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public class CategoryTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e new Category(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidCategoryName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" String invalidCategoryName \u003d \"\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Category(invalidCategoryName));","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public void isValidCategoryName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" // null Category name","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e Category.isValidCategory(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" // contains non-alphanumeric","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"ca\u0026**\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" // empty","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" // longer than 15 characters","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"categorycategorycategory\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Category.isValidCategory(\"entertainment\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" Category category \u003d new Category(\"Valid\");","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(category.equals(new Category(\"Valid\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertTrue(category.equals(category));","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(5.0f));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(new Category(\"Another\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":56}},{"path":"src/test/java/unicash/model/category/UniqueCategoryListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalCategories.EDUCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalCategories.ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.CategoryNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.DuplicateCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.MaxCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"public class UniqueCategoryListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" private final UniqueCategoryList uniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void constructor_duplicate_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e new UniqueCategoryList(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public void constructor_moreThanMaximumAllowed_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c\u003d UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e new UniqueCategoryList(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void contains_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.contains(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void contains_categoryNotInList_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" assertFalse(uniqueCategoryList.contains(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" public void contains_categoryInList_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" assertTrue(uniqueCategoryList.contains(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public void add_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.add(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void add_duplicateCategory_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e uniqueCategoryList.add(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" public void add_maxCategory_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e uniqueCategoryList.add(new Category(\"test4\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_nullTargetCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategory(null, ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_nullEditedCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, null));","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_targetCategoryNotInList_throwsCategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" assertThrows(CategoryNotFoundException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryIsSameCategory_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryHasNonUniqueIdentity_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e uniqueCategoryList.setCategory(ENTERTAINMENT, EDUCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" public void remove_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.remove(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" public void remove_categoryDoesNotExist_throwsCategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" assertThrows(CategoryNotFoundException.class, () -\u003e uniqueCategoryList.remove(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" public void remove_existingCategory_removesCategory() {","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.remove(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_nullUniqueCategoryList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategories((UniqueCategoryList) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_uniqueCategoryList_replacesOwnListWithProvidedUniqueCategoryList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(expectedUniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_moreThanMaxAllowed_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c\u003d UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e uniqueCategoryList.setCategories(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategories((List\u003cCategory\u003e) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d Collections.singletonList(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_listWithDuplicateCategories_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e listWithDuplicateCategories \u003d Arrays.asList(ENTERTAINMENT, ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(listWithDuplicateCategories));","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" -\u003e uniqueCategoryList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" assertEquals(uniqueCategoryList.asUnmodifiableObservableList().toString(), uniqueCategoryList.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList1 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList2 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList3 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" categoryList3.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" assertEquals(categoryList1.hashCode(), categoryList2.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(categoryList1.hashCode(), categoryList3.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":205}},{"path":"src/test/java/unicash/model/commons/AmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.commons;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class AmountTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public void constructor_negativeAmount_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Amount(-10));","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public void isValidAmount() {","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Amount.isValidAmount(-1));","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Amount.isValidAmount(-0.000001));","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(0.000));","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(10));","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(12.13));","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Amount amount \u003d new Amount(12.13);","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertEquals(12.13, amount.amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertEquals(amount, amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertEquals(amount, new Amount(12.13));","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(amount, null);","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(amount, new Amount(12.16));","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public void amountToDecimalString_standardConversion_returnsCorrectString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amt \u003d new Amount(1234.5678);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" String result \u003d Amount.amountToDecimalString(amt);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"1234.57\", result);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" public void amountToDecimalString_roundingRequired_returnsRoundedString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amt \u003d new Amount(45.678);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" String result \u003d Amount.amountToDecimalString(amt);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"45.68\", result);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":16,"lipwei1808":33}},{"path":"src/test/java/unicash/model/transaction/DateTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.time.Clock;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.time.Instant;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.ZoneId;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class DateTimeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(\"18-08-2001 18:18\", null));","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(null, null));","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public void constructor_noDateTime_setDefault() {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" Clock clock \u003d Clock.fixed(Instant.parse(\"2014-12-21T10:15:30.00Z\"), ZoneId.of(\"UTC\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" String empty \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" assertEquals(\"1015, Dec 21 2014\", new DateTime(empty, clock).toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public void isValidDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"1-1-2001 18:18\")); // wrong day and month format","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"01-1-2001 17:1\")); // invalid time","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"01-01-2001\")); // missing time","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"18:18\")); // missing date","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"20-31-2001 18:18\")); // invalid date","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"20-01-2001 25:18\")); // invalid time","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"31-02-2001 18:18\")); // invalid date","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public void originalString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime \u003d new DateTime(\"18-12-2023 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" String stringify \u003d dateTime.originalString();","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertEquals(stringify, \"18-12-2023 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" DateTime datetime \u003d new DateTime(\"01-01-2001 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertEquals(datetime, new DateTime(\"01-01-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" assertEquals(datetime, datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(\"hi\", datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-01-2000 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" // different month -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-02-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" // different day -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"02-01-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" // different time -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-01-2001 02:02\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" assertFalse(datetime.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime \u003d new DateTime(\"18-08-2023 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" assertEquals(dateTime.toString(), \"0101, Aug 18 2023\");","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime1 \u003d new DateTime(\"01-01-2001 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime2 \u003d new DateTime(\"01-01-2001 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime3 \u003d new DateTime(\"01-01-2002 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" assertEquals(dateTime1.hashCode(), dateTime2.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(dateTime1.hashCode(), dateTime3.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":10,"lipwei1808":78}},{"path":"src/test/java/unicash/model/transaction/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class LocationTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_noLocation_setDefault() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" assertEquals(\"-\", new Location(\"\").toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" assertEquals(\"-\", new Location(\" \").toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" public void isValidLocation() {","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"\")); // empty string","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\" \")); // spaces only","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"^\")); // only non-allowed characters","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"peter*\")); // contains non-allowed characters","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"fairprice\")); // alphabets only","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"12345\")); // numbers only","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"block 283\")); // alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice\")); // with capital letters","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice at NUS University Town\")); // long names","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice (NUS)\")); // ()","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice #02-160\")); // # and -","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice (NUS_UTown)\")); // _","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Ben \u0026 Jerry\")); // \u0026","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"First Avenue, Block 283\")); // ,","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"First Avenue, Block 28.3\")); // ,","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertTrue(Location.isValidLocation(\"-\")); // Blank location","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" Location name \u003d new Location(\"Valid Location\");","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertEquals(name, new Location(\"Valid Location\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertEquals(name, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" assertFalse(name.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(name, new Location(\"Other Valid Location\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":9,"lipwei1808":58}},{"path":"src/test/java/unicash/model/transaction/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" assertEquals(name, new Name(\"Valid Name\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" assertEquals(name, name);","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, name);","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertFalse(name.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(name, new Name(\"Other Valid Name\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":2,"lipwei1808":8,"-":53}},{"path":"src/test/java/unicash/model/transaction/TransactionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"public class TransactionListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private final TransactionList transactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public void contains_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void contains_transactionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.contains(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public void contains_transactionInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertTrue(transactionList.contains(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void contains_differentTransaction_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" Transaction editedNus \u003d new TransactionBuilder(NUS).withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.contains(editedNus));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public void add_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.add(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void add_duplicateTransaction_doesNotThrow() {","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e transactionList.add(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_nullTargetTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransaction(null, NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_nullEditedTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransaction(NUS, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_targetTransactionNotInList_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e transactionList.setTransaction(NUS, NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_editedTransactionIsSameTransaction_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransaction(NUS, NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedUniqueTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueTransactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_editedTransactionHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransaction(NUS, BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void remove_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.remove(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public void remove_transactionDoesNotExist_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e transactionList.remove(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public void remove_existingTransaction_removesTransaction() {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" transactionList.remove(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_nullTransactionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransactions((TransactionList) null));","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_transactionList_replacesOwnListWithProvidedTransactionList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransactions(expectedTransactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransactions((List\u003cTransaction\u003e) null));","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_uniqueTransactionList_replacesOwnListWithProvidedUniqueTransactionList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransactions(expectedTransactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_listWithDuplicateTransactions_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e listWithDuplicateTransactions \u003d Arrays.asList(NUS, NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e transactionList.setTransactions(listWithDuplicateTransactions));","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" -\u003e transactionList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transactionList.asUnmodifiableObservableList().toString(), transactionList.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" public void iterator() {","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(INTERN);","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" Iterator\u003cTransaction\u003e iterator \u003d transactionList.iterator();","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e actual \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" while (iterator.hasNext()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" actual.add(iterator.next());","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e expectedIterator \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" expectedIterator.add(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" expectedIterator.add(INTERN);","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedIterator, actual);","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" // same lists","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" TransactionList anotherList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" anotherList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" // different lists","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" anotherList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" anotherList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" assertFalse(transactionList.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-13"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList1 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList2 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList3 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" transactionList3.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transactionList1.hashCode(), transactionList2.hashCode());","lastModifiedDate":"2023-10-13"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(transactionList1.hashCode(), transactionList3.hashCode());","lastModifiedDate":"2023-10-13"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":6,"lipwei1808":193}},{"path":"src/test/java/unicash/model/transaction/TransactionNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" // One keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"Food\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food at mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Food\", \"mcdonalds\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Chicken\", \"Rice\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Chicken Rice\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"fOod\", \"McDonalds\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" // Zero keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(predicate.test(new TransactionBuilder().withName(\"Food\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(List.of(\"Food\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(predicate.test(new TransactionBuilder().withName(\"Chicken Rice\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d TransactionNameContainsKeywordsPredicate","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" .class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":81,"woojiahao":9}},{"path":"src/test/java/unicash/model/transaction/TransactionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.DINING_WITH_FRIENDS;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.WORK_AT_LIHO;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction groceriesCopy \u003d new TransactionBuilder(BUYING_GROCERIES).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES, groceriesCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(null, groceriesCopy);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(null, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(5, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(BUYING_GROCERIES.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, DINING_WITH_FRIENDS);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withName(\"Another thing\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" // different amount -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withAmount(10.15).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // different date -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES)","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"01-01-1999 18:18\")","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" // different location -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withLocation(\"UTown\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" // different transaction type -\u003e return false","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withType(\"expense\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" // different categories -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withCategories(\"TEST\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(BUYING_GROCERIES.equals(editedGroceries));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction.class.getCanonicalName()","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"{name\u003d\" + BUYING_GROCERIES.getName()","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", type\u003d\" + BUYING_GROCERIES.getType()","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", amount\u003d\" + BUYING_GROCERIES.getAmount()","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", dateTime\u003d\" + BUYING_GROCERIES.getDateTime()","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", location\u003d\" + BUYING_GROCERIES.getLocation()","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", categories\u003d\" + BUYING_GROCERIES.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"}\";","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, BUYING_GROCERIES.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES.hashCode(), BUYING_GROCERIES.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES.hashCode(), WORK_AT_LIHO.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":85}},{"path":"src/test/java/unicash/model/transaction/TypeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class TypeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Type(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidType_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" String[] invalidTypes \u003d new String[] {\"\", \"1\", \"Wrong\"};","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" for (String invalidType: invalidTypes) {","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Type(invalidType));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void isValidType() {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"\")); // empty string","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\" \")); // spaces only","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"^\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"peter*\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"transfers\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Type.isValidType(\"income\")); // income","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Type.isValidType(\"expense\")); // expense","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" Type type \u003d new Type(\"income\");","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" assertEquals(type, new Type(\"income\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" assertEquals(type, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertFalse(type.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(type, new Type(\"expense\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" Type expense \u003d new Type(\"expense\");","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" Type income \u003d new Type(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" Type income2 \u003d new Type(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" assertEquals(income.hashCode(), income2.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(expense.hashCode(), income.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":8,"lipwei1808":61}},{"path":"src/test/java/unicash/storage/JsonAdaptedCategoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedCategoryTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_CATEGORY \u003d \"@@@\";","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_CATEGORY \u003d \"Food\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidCategory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" var adaptedCategory \u003d new JsonAdaptedCategory(INVALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, adaptedCategory::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public void toModelType_validCategory_returnsCategory() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" var adaptedCategory \u003d new JsonAdaptedCategory(VALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, adaptedCategory.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"woojiahao":27}},{"path":"src/test/java/unicash/storage/JsonAdaptedTransactionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.storage.JsonAdaptedTransaction.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.SHOPPING;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedTransactionTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" private static final double INVALID_AMOUNT \u003d -10;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_CATEGORY \u003d \"@@@\";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_DATETIME \u003d \"hi\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_LOCATION \u003d \"@@@@\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_TYPE \u003d \"others\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_NAME \u003d SHOPPING.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" private static final double VALID_AMOUNT \u003d SHOPPING.getAmount().amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_DATETIME \u003d SHOPPING.getDateTime().originalString();","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_LOCATION \u003d SHOPPING.getLocation().location;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_TYPE \u003d SHOPPING.getType().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private static final List\u003cJsonAdaptedCategory\u003e VALID_CATEGORIES \u003d SHOPPING.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" .asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" .stream()","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" .map(JsonAdaptedCategory::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(SHOPPING);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(SHOPPING, transaction.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" INVALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidAmount_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" INVALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Amount.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void toModelType_invalidCategories_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" List\u003cJsonAdaptedCategory\u003e invalidCategories \u003d new ArrayList\u003c\u003e(VALID_CATEGORIES);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" invalidCategories.add(new JsonAdaptedCategory(INVALID_CATEGORY));","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" JsonAdaptedTransaction transaction \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" INVALID_AMOUNT,","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" invalidCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullCategory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" null","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction2 \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" .withName(VALID_NAME)","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" .withAmount(VALID_AMOUNT)","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" .withDateTime(VALID_DATETIME)","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" .withLocation(VALID_LOCATION)","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" .withType(VALID_TYPE)","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" .withCategories()","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transaction.toModelType(), transaction2);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" INVALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d DateTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, DateTime.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" INVALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" INVALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Type.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullType_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" null,","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Type.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":23,"woojiahao":127,"lipwei1808":52}},{"path":"src/test/java/unicash/storage/JsonSerializableUniCashTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"public class JsonSerializableUniCashTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableUniCashTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" private static final Path TYPICAL_TRANSACTIONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private static final Path INVALID_TRANSACTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Path DUPLICATE_TRANSACTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public void toModelType_typicalTransactionsFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TRANSACTIONS_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" UniCash uniCashFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash typicalTransactionsUniCash \u003d SampleDataUtil.getSampleUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertEquals(uniCashFromFile, typicalTransactionsUniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidTransactionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TRANSACTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public void toModelType_duplicateTransactions_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TRANSACTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, JsonSerializableUniCash.MESSAGE_DUPLICATE_TRANSACTION,","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":41}},{"path":"src/test/java/unicash/storage/JsonUniCashStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"public class JsonUniCashStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUniCashStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e readUniCash(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private java.util.Optional\u003cReadOnlyUniCash\u003e readUniCash(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" return new JsonUniCashStorage(Paths.get(filePath)).readUniCash(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" return prefsFileInTestDataFolder !\u003d null ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder) : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" assertFalse(readUniCash(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"notJsonFormatUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_invalidTransactionUniCash_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"invalidTransactionUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_invalidAndValidTransactionUniCash_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"invalidAndValidTransactionUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" public void readAndSaveUniCash_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" Path filePath \u003d testFolder.resolve(\"TempUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" UniCash original \u003d getTypicalUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" JsonUniCashStorage jsonUniCashStorage \u003d new JsonUniCashStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" original.removeTransaction(INTERN);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash readBack \u003d jsonUniCashStorage.readUniCash(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" original.addTransaction(INTERN);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" original.removeTransaction(BUYING_GROCERIES);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" readBack \u003d jsonUniCashStorage.readUniCash(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" original.addTransaction(BUYING_GROCERIES);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" readBack \u003d jsonUniCashStorage.readUniCash().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash_nullUniCash_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUniCash(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" * Saves {@code UniCash} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" private void saveUniCash(ReadOnlyUniCash uniCash, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" new JsonUniCashStorage(Paths.get(filePath)).saveUniCash(uniCash, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUniCash(new UniCash(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":99}},{"path":"src/test/java/unicash/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"data/unicash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":1,"-":117}},{"path":"src/test/java/unicash/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TypicalTransactions;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" var uniCashStorage \u003d new JsonUniCashStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" var userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" storageManager \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" public void uniCashReadSave() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var original \u003d TypicalTransactions.getTypicalUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" storageManager.saveUniCash(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" var retrieved \u003d storageManager.readUniCash().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" Assertions.assertEquals(original, new UniCash(retrieved));","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public void getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertNotNull(storageManager.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":8,"-":52}},{"path":"src/test/java/unicash/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" System.out.println(thrownException.getMessage());","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":1,"-":33}},{"path":"src/test/java/unicash/testutil/BudgetBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building Budget objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class BudgetBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final double DEFAULT_AMOUNT \u003d 123.45;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_INTERVAL \u003d \"week\";","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" private Amount amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private Interval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code BudgetBuilder} with the default details.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" interval \u003d new Interval(DEFAULT_INTERVAL);","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * Initializes the BudgetBuilder with the data of {@code budgetToCopy}.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder(Budget budgetToCopy) {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" amount \u003d budgetToCopy.getAmount();","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" interval \u003d budgetToCopy.getInterval();","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Amount} of the {@code Budget} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code LocalDateTime} of the {@code Budget} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder withInterval(String interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d new Interval(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public Budget build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" return new Budget(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":53}},{"path":"src/test/java/unicash/testutil/EditTransactionDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"elhy1999"},"content":" * A utility class to help with building EditTransactionDescriptor objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionDescriptorBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionCommand.EditTransactionDescriptor descriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":" descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder(EditTransactionCommand.EditTransactionDescriptor descriptor) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" this.descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor(descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" * Returns an {@code EditTransactionDescriptor} with fields containing {@code transaction}\u0027s details","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder(Transaction transaction) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":" descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":" descriptor.setName(transaction.getName());","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" descriptor.setAmount(transaction.getAmount());","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" descriptor.setDateTime(transaction.getDateTime());","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" descriptor.setLocation(transaction.getLocation());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" descriptor.setType(transaction.getType());","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" descriptor.setCategories(transaction.getCategories());","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Name} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"elhy1999"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Amount} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" descriptor.setAmount(new Amount(amount));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code DateTime} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withDateTime(String dateTime) {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":" descriptor.setDateTime(new DateTime(dateTime));","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Location} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" descriptor.setLocation(new Location(location));","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Type} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withType(String type) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" descriptor.setType(new Type(type));","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Parses the {@code categories} into a {@code Set\u003cCategory\u003e} and set it to the {@code EditTransactionDescriptor}","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public EditTransactionDescriptorBuilder withCategories(String... categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoriesList \u003d Stream.of(categories).map(Category::new).collect(Collectors.toList());","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" descriptor.setCategories(new UniqueCategoryList(categoriesList));","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" public EditTransactionCommand.EditTransactionDescriptor build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" return descriptor;","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":1,"lipwei1808":17,"elhy1999":71}},{"path":"src/test/java/unicash/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A class used to test serialization and deserialization","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":71}},{"path":"src/test/java/unicash/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" return Index.fromOneBased(model.getFilteredTransactionList().size() / 2);","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" return Index.fromOneBased(model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" public static Transaction getTransaction(Model model, Index index) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" return model.getFilteredTransactionList().get(index.getZeroBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":4,"-":47}},{"path":"src/test/java/unicash/testutil/TransactionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building Transaction objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class TransactionBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":" public static final String DEFAULT_NAME \u003d \"Dog food\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public static final double DEFAULT_AMOUNT \u003d 123.45;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_CATEGORY \u003d \"Food\";","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_DATE_TIME \u003d \"18-08-2001 10:10\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_LOCATION \u003d \"Fairprice\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_TYPE \u003d \"income\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" private Amount amount;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private UniqueCategoryList categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private DateTime dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" private Location location;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" private Type type;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code TransactionBuilder} with the default details.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" dateTime \u003d new DateTime(DEFAULT_DATE_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" type \u003d new Type(DEFAULT_TYPE);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" categories \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" categories.add(new Category(DEFAULT_CATEGORY));","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" * Initializes the TransactionBuilder with the data of {@code transactionToCopy}.","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder(Transaction transactionToCopy) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" name \u003d transactionToCopy.getName();","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" amount \u003d transactionToCopy.getAmount();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" dateTime \u003d transactionToCopy.getDateTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" location \u003d transactionToCopy.getLocation();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" type \u003d transactionToCopy.getType();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" categories \u003d transactionToCopy.getCategories();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Name} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withName(String name) {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Amount} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code LocalDateTime} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withDateTime(String dateString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d new DateTime(dateString);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Location} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withLocation(String location) {","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Type} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withType(String type) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d new Type(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" * Parses the {@code categories} into a {@code Set\u003cCategory\u003e} and set it to","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" * the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withCategories(String ... categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" this.categories \u003d SampleDataUtil.getCategoryList(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public Transaction build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(name, type, amount, dateTime, location, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":8,"lipwei1808":101,"elhy1999":1}},{"path":"src/test/java/unicash/testutil/TransactionUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" * A utility class for Transaction.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionUtil {","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns an add command string for adding the {@code transaction}.","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getAddTransactionCommand(Transaction transaction) {","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" return AddTransactionCommand.COMMAND_WORD + \" \" + getTransactionDetails(transaction);","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the part of command string for the given {@code transaction}\u0027s details.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getTransactionDetails(Transaction transaction) {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_NAME).append(transaction.getName().fullName).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_TYPE).append(transaction.getType().type.getOriginalString()).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_AMOUNT).append(transaction.getAmount().toString()).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_DATETIME).append(transaction.getDateTime().originalString()).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_LOCATION).append(transaction.getLocation().location).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" transaction.getCategories().forEach(","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" category -\u003e sb.append(PREFIX_CATEGORY).append(category.category).append(\" \")","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" return sb.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getEditTransactionDescriptorDetails(EditTransactionCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .EditTransactionDescriptor descriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName)","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getType().ifPresent(type -\u003e sb.append(PREFIX_TYPE).append(type.type.getOriginalString())","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getAmount().ifPresent(amount -\u003e sb.append(PREFIX_AMOUNT).append(amount.amount)","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getLocation().ifPresent(location -\u003e sb.append(PREFIX_LOCATION).append(location)","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getDateTime().ifPresent(dateTime -\u003e sb.append(PREFIX_DATETIME).append(dateTime.originalString())","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" if (descriptor.getCategories().isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categories \u003d descriptor.getCategories().get().asUnmodifiableObservableList();","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" if (categories.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_CATEGORY);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.forEach(s -\u003e sb.append(PREFIX_CATEGORY).append(s.category).append(\" \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" return sb.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":67,"lipwei1808":2}},{"path":"src/test/java/unicash/testutil/TypicalBudgets.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A utility class containing a list of {@code Budget} objects to be used in tests.","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class TypicalBudgets {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public static final Budget DAILY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" .withAmount(16.75)","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"day\")","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final Budget WEEKLY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" .withAmount(234.50)","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"week\")","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public static final Budget MONTHLY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" .withAmount(888)","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"month\")","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":23}},{"path":"src/test/java/unicash/testutil/TypicalCategories.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A utility class containing a list of {@code Category} objects to be used in tests.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class TypicalCategories {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public static final Category ENTERTAINMENT \u003d new Category(\"entertainment\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final Category EDUCATION \u003d new Category(\"education\");","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":12}},{"path":"src/test/java/unicash/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_FIRST_TRANSACTION \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_SECOND_TRANSACTION \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_THIRD_TRANSACTION \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":7}},{"path":"src/test/java/unicash/testutil/TypicalTransactions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_EDUCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" * A utility class containing a list of {@code Transaction} objects to be used in tests.","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TypicalTransactions {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction BUYING_GROCERIES \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"Buying groceries\")","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(16.75)","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(\"Sheng Shiong (UTown)\")","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(\"Groceries\")","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction DINING_WITH_FRIENDS \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"End of Semester Celebration\")","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(234.50)","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(\"Poulet\")","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"18-08-2001 18:18\")","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(\"Food\")","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction WORK_AT_LIHO \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"Working at liho\")","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(\"income\")","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(888)","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"18-09-2002 18:17\")","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" // Manually added - Income\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction NUS \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction INTERN \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction SHOPPING \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(VALID_CATEGORY_ENTERTAINMENT, VALID_CATEGORY_EDUCATION)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns a {@code UniCash} with all the typical transactions.","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" public static UniCash getTypicalUniCash() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":" UniCash typicalUnicash \u003d new UniCash();","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" for (Transaction transaction : getTypicalTransactions()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" typicalUnicash.addTransaction(transaction);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" return typicalUnicash;","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" public static List\u003cTransaction\u003e getTypicalTransactions() {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(BUYING_GROCERIES, DINING_WITH_FRIENDS, WORK_AT_LIHO, NUS, INTERN));","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":86,"elhy1999":3}},{"path":"src/test/java/unicash/testutil/UniCashBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building UniCash objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * {@code UniCash uc \u003d new UniCashBuilder().withTransaction(NUS).build();}","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class UniCashBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder(UniCash transactionList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" this.uniCash \u003d transactionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Adds a new {@code Transaction} to the {@code UniCash} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder withTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public UniCash build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" return uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":3,"lipwei1808":31}},{"path":"src/test/java/unicash/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.beans.DefaultProperty;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A test object which can be constructed via an FXML file.","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unlike other JavaFX classes, this class can be constructed without the JavaFX toolkit being initialized.","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"@DefaultProperty(\"text\")","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class TestFxmlObject {","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private String text;","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public TestFxmlObject() {}","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public TestFxmlObject(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" setText(text);","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public String getText() {","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return text;","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setText(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.text \u003d text;","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof TestFxmlObject)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TestFxmlObject otherTestFxmlObject \u003d (TestFxmlObject) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Objects.equals(text, otherTestFxmlObject.text);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":44}},{"path":"src/test/java/unicash/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2019-04-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class UiPartTest {","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String MISSING_FILE_PATH \u003d \"UiPartTest/missingFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_FILE_PATH \u003d \"UiPartTest/invalidFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_PATH \u003d \"UiPartTest/validFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_WITH_FX_ROOT_PATH \u003d \"UiPartTest/validFileWithFxRoot.fxml\";","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final TestFxmlObject VALID_FILE_ROOT \u003d new TestFxmlObject(\"Hello World!\");","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor_nullFileUrl_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_missingFileUrl_throwsAssertionError() throws Exception {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" URL missingFileUrl \u003d new URL(testFolder.toUri().toURL(), MISSING_FILE_PATH);","lastModifiedDate":"2019-04-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor_invalidFileUrl_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" URL invalidFileUrl \u003d getTestFileUrl(INVALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl));","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void constructor_validFileUrl_loadsFile() {","lastModifiedDate":"2016-12-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl).getRoot());","lastModifiedDate":"2016-12-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void constructor_validFileWithFxRootUrl_loadsFile() {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_WITH_FX_ROOT_PATH);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" TestFxmlObject root \u003d new TestFxmlObject();","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl, root).getRoot());","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void constructor_nullFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void constructor_missingFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void constructor_invalidFileName_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private URL getTestFileUrl(String testFilePath) {","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String testFilePathInView \u003d \"/view/\" + testFilePath;","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" URL testFileUrl \u003d MainApp.class.getResource(testFilePathInView);","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertNotNull(testFileUrl, testFilePathInView + \" does not exist.\");","lastModifiedDate":"2019-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return testFileUrl;","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * UiPart used for testing.","lastModifiedDate":"2016-12-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * It should only be used with invalid FXML files or the valid file located at {@link VALID_FILE_PATH}.","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":111}},{"path":"src/test/resources/view/UiPartTest/validFile.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-12-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import unicash.ui.TestFxmlObject?\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":3}},{"path":"src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root type\u003d\"unicash.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"# UniCa$h","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp/graph/badge.svg?token\u003dLPKS424C1Y)](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp)","lastModifiedDate":"2023-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"\u003e UniCa$h is a finance tracking application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"## About","lastModifiedDate":"2023-10-02"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"[//]: # (TODO Change this image)","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"User Target Profile: Our application is for university students who want to be more financially conscious about their","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"spending habits, to enable them to make more economical decisions that provide students on a limited budget with more","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"purchasing power.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"Value Proposition: It provides university students with an intuitive and frictionless experience to have transparency on","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"their expenditure to help them better understand their spendings so they can develop better financial habits as they","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"transition into adulthood.","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"## Credits","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"woojiahao":16,"-":7}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"mainClassName \u003d \u0027unicash.Main\u0027","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" archiveFileName \u003d \u0027unicash.jar\u0027","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":70}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"### Woo Jia Hao","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"\u003cimg src\u003d\"images/woojiahao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"[[homepage](https://woojiahao.com/)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"[[github](https://github.com/woojiahao)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"[[portfolio](team/woojiahao.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"* Role: Integrations","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":"### Jamie Toh","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"\u003cimg src\u003d\"images/jamz903.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":"[[github](http://github.com/jamz903)]","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":"[[portfolio](team/jamz903.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":"* Responsibilities: Testing","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"### Tan Lip Wei","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"\u003cimg src\u003d\"images/lipwei1808.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"[[github](http://github.com/lipwei1808)] [[portfolio](team/lipwei1808.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"* Responsibilities: Model","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"### Ernest Liu","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":"\u003cimg src\u003d\"images/elhy1999.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":"[[github](http://github.com/elhy1999)]","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":"[[portfolio](team/elhy1999.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":"* Responsibilities: Documentations","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"### Rubesh Suresh","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cimg src\u003d\"images/sp4ce-cowboy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":"[[github](http://github.com/sp4ce-cowboy)]","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"[[portfolio](team/sp4ce-cowboy.md))]","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"* Responsibilities: Storage","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":6,"lipwei1808":4,"jamz903":6,"-":33,"elhy1999":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"# UniCa$h Developer Guide [CS2103 T16-Group_3 TP]","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"**Name:** UniCa$h","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"**User Target Profile:** Our application is for university students who want to be more financially conscious about their spending habits, to enable them to make more economical decisions that provide students on a limited budget with more purchasing power.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"**Value Proposition:** It provides university students with an intuitive and frictionless experience to have transparency on their expenditure to help them better understand their spendings so they can develop better financial habits as they transition into adulthood. ","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"## Potential Features:","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"- For every user \u003e track individual finances (base)","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"- Input spending \u0026 set budgets (base)","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tag another user and distribute the spendings during outings (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"- Viewing spending habits (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"- Provide price list comparison for all available food outlets near NUS (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"- Allow users to set repeating events (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tagging people for payments gives them a notification (extension)","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"## Feature List [v1.2]","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Track Finances","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"- Create transactions - Name, date, location, Tag (type/category)","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" - Input either Income or Expense","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"- Delete transactions - Delete a single transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" - Remove either an Income or an Expense","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"- Clear transactions - Mass delete all transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"- Edit transactions - Modify transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"- Find transaction - Find a transaction by a given keyword ","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"- Tabulate total expenditure - Sum of all expenses \u0026 remaining balance","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Categorize Finances","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"- Add tags – provide category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"- Edit tags - change category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"- Remove tags - delete category of transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"## Use Cases","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"The following documents use cases for our application","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"For the following Use Cases (unless specified otherwise):","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"- The System is `UniCa$h`","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"- The Actor is `User`","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC01 - Adding a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to add a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h adds the transaction to the transactions list and displays success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" ","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"- 2b. User enters an extremely high number","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" - 2b1. UniCa$h prompts the user with a warning of the input","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" - 2b2. User confirms the request","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 3.","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC02 - Finding a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to find a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h filters all the transactions based on the specified filters and returns","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":"the filtered transaction with a success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" - 1a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"- 3a. UniCa$h does not find any results matching the filter.","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" - 3a1. UniCa$h displays a message saying no results found.","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC03 - Delete a transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"**MSS:**","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to delete a transaction with the correct format.","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h finds the transaction based on the passed in arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":"4. UniCa$h deletes the transaction.","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":"5. UniCa$h displays success message.","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" Use Case ends","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"**Extensions**","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. UniCa$h does not find any transactions matching the provided arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" - 3a1. UniCa$h displays a message saying no results found.","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"jamz903"},"content":"#### Use Case: UC05 - Listing All Transactions","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to list all transactions with the correct format (i.e. no parameters).","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h retrieves the list of all transactions and displays them for the User.","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":110,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"jamz903"},"content":"- 2a. User enters the command with the incorrect format (i.e. with parameters).","lastModifiedDate":"2023-10-11"},{"lineNumber":112,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for the correct format.","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"jamz903"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. There are no transactions for UniCa$h to retrieve.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"jamz903"},"content":" - 3a1. UniCa$h displays a message informing the User that there are no expenses. ","lastModifiedDate":"2023-10-11"},{"lineNumber":117,"author":{"gitId":"jamz903"},"content":" - Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC06 - Finding a Transaction","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"jamz903"},"content":"1. User enters the command to find transaction with the correct format.","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h filters the transactions based on the specified filters and returns the filtered list of expenses with a success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"jamz903"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-11"},{"lineNumber":129,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for correct format.","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"jamz903"},"content":" - 2a2. User enters command with new format.","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"jamz903"},"content":" ","lastModifiedDate":"2023-10-11"},{"lineNumber":132,"author":{"gitId":"jamz903"},"content":" Steps 2a1-2a2 are repeated until the format entered is correct.","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"jamz903"},"content":" Use case resumes from Step 3.","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"jamz903"},"content":"- 3a. UniCa$h does not find any results matching the filter.","lastModifiedDate":"2023-10-11"},{"lineNumber":137,"author":{"gitId":"jamz903"},"content":" - 3a1. UniCa$h displays a message informing the user that no results were found.","lastModifiedDate":"2023-10-11"},{"lineNumber":138,"author":{"gitId":"jamz903"},"content":" - Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC07 - Tabulate Total Expenditure","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"jamz903"},"content":"**MSS:**","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to tabulate total expenditure.","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"jamz903"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-11"},{"lineNumber":144,"author":{"gitId":"jamz903"},"content":"3. UniCa$h tabulates the expenditure based on the parameters passed in.","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"jamz903"},"content":"4. UniCa$h displays the tabulated expenditure.","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"jamz903"},"content":" Use Case ends.","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":149,"author":{"gitId":"jamz903"},"content":"**Extensions**","lastModifiedDate":"2023-10-11"},{"lineNumber":150,"author":{"gitId":"jamz903"},"content":"- 2a. User detects an issue with the command entered.","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"jamz903"},"content":" - 2a1. UniCa$h displays an error message, requests for command to be re-entered.","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"jamz903"},"content":" - 2a2. User enters command again.","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":154,"author":{"gitId":"jamz903"},"content":" Steps 2a1-2a2 are repeated until the command entered is correct.","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":156,"author":{"gitId":"jamz903"},"content":" Use case resumes from Step 3.","lastModifiedDate":"2023-10-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC08 - Clear all transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to clear all transactions with the correct format. (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h deletes all transactions in the transactions list.","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":"4. UniCa$h displays success message.","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":"- 3a. UniCa$h finds an empty transactions list.","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"sp4ce-cowboy"},"content":" - 3a1. UniCa$h displays a message saying that transactions list is empty.","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use Case resumes at step 1","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC09 - Show UniCa$h Help","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to show help with the correct format. (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request.","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h displays help message in the help window.","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Use Case: UC10 - Exit UniCa$h","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":"**MSS:**","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":"1. User enters the command to exit UniCa$h with the correct format (i.e. no parameters)","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"sp4ce-cowboy"},"content":"2. User submits the request. ","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":"3. UniCa$h displays exit message and application closes","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"sp4ce-cowboy"},"content":" Use Case ends","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"sp4ce-cowboy"},"content":"**Extensions**","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":"- 2a. User enters an incorrect format.","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"sp4ce-cowboy"},"content":" - 2a1. UniCa$h displays an error message with the correct command format.","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"sp4ce-cowboy"},"content":" - Use case resumes at step 1.","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":204,"author":{"gitId":"sp4ce-cowboy"},"content":"## Links","lastModifiedDate":"2023-09-26"},{"lineNumber":205,"author":{"gitId":"sp4ce-cowboy"},"content":"User Stories: [https://github.com/orgs/AY2324S1-CS2103-T16-3/projects/1/views/2](https://github.com/orgs/AY2324S1-CS2103-T16-3/projects/1/views/2)","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":207,"author":{"gitId":"sp4ce-cowboy"},"content":"Project Website: [https://ay2324s1-cs2103-t16-3.github.io/tp/](https://ay2324s1-cs2103-t16-3.github.io/tp/)","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"sp4ce-cowboy":82,"lipwei1808":38,"jamz903":35,"-":52}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Setting up and getting started","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" 1. Run the `seedu.address.Main` [OR] `unicash.Main` and try a few commands.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":54}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Testing guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g. `unicash.commons.util.StringUtilTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"2. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest` ","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g `unicash.storage.StorageManagerTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"3. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" e.g. `unicash.logic.LogicManagerTest`","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":34}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"UniCa$h is a **is a desktop application used for university students who want to be more financially conscious,","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"GUI). If you can type fast, UniCa$h can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"2. Download the latest `unicash.jar` from [coming soon]().","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your UniCa$h.","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar unicash.jar` command to","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" run the application.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":" * `commands coming soon!`","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"### Create Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"Allows a user to create an expense and all information associated with that expense including the name, amount,","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"category (defaults to \"Others\"), location (optional), and date (defaults to the current date) of the expense.","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"Command: `create \u003cname\u003e -amount \u003cexpense amount\u003e [-category \u003ccategory of expense\u003e] [-date \u003cdate of expense\u003e] [-location \u003clocation of expense\u003e]`","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"Command Argument: `name` represents the name of the expense to be added.","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":"Command Options:","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"| -amount | No | Amount of expense. Currency is SGD. |","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":"| -category | Yes | Category/type of expense, used to group and filter expenses.\u003cbr/\u003eDefaults to \"Others\" if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":"| -date | Yes | Date of when the expense was made. Follows format `dd/MM/yyyy`.\u003cbr/\u003eDefaults to date of creation if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":"| -location | Yes | Location where expense was made.\u003cbr/\u003eDefaults to `NULL` if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, date, location, and category","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy food -amount 7.50 -date 19/09/2023 -location Food Clique -category Food`","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy food\" of category \"Food\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated 19/09/2023.","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, location, and category but without date","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy groceries -amount 14.30 -category Food -location Fairprice`","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy groceries\" of category \"Food\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed.","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name, amount, and category but without date and location","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy stuff -amount 13.00 -category Misc`","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy stuff\" of category \"Misc\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed and have a `NULL` location.","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Create expense with name and amount but without date, location, or category","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy things -amount 10.00`","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":"\u003e Successfully created expense \"buy things\" of category \"Others\"!","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":"\u003e **Remark**: The expense will be dated whenever the `create` command was executed, have a `NULL` location, and be","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":"\u003e assigned to the \"Others\" category by default.","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Missing `name` of expense","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create`","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":"\u003e Cannot create expense without expense name. Please specify the expense name as such: `create \u003cexpense name\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Missing `amount` option of expense","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something!`","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":"\u003e Cannot create expense without amount of expenditure. Please specify the expense amount as such: `create \u003cexpense name\u003e -amount \u003cexpense amount\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Invalid `amount` option value.","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something! -amount hi`","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":"\u003e Failed to create expense as amount is invalid, ensure that it is a number.","lastModifiedDate":"2023-10-05"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":"\u003e **Case**: Invalid `date` option value.","lastModifiedDate":"2023-10-05"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"\u003e **Input**: `create buy something! -amount 14.30 -date today`","lastModifiedDate":"2023-10-05"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":"\u003e Failed to create expense as date is invalid, ensure that it is the following format: `dd/MM/yyyy`.","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":"\u003e ```","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":"### Edit Expense [coming soon]","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":"Allows a user to make edits to an existing expense, and all associated information.","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"elhy1999"},"content":"Command: `edit \u003cexpense_id\u003e -\u003cname of attribute 1\u003e \u003cnew attribute 1 value\u003e [-\u003cname of attribute N\u003e \u003cnew attribute N value\u003e …]`","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"Command Argument: `expense_id` is the ID of the expense to edit.","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":"Command Options:","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":174,"author":{"gitId":"elhy1999"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"elhy1999"},"content":"|--------------------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"elhy1999"},"content":"| -name of attribute | No | The attribute to make edits to. Possible values: `name`, `amount`, `category`, `date`, `location`\u003cbr/\u003e\u003cbr/\u003eNote: If `name of attribute` is date, then the associated `new attribute value` must be in format: `dd/MM/yyyy`.\u003cbr/\u003eNote: If `name of attribute` is amount, then the associated `new attribute value` must be a number.\u003cbr/\u003eNote: If `name of attribute` is not name or amount, then the associated `new attribute value` can be empty if the user wants to reset the attribute to the default value (NULL for location and Others for category). |","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"elhy1999"},"content":"| ... | Yes | More `name of attribute` `new attribute value` pairs to make more edits to the same expense |","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"elhy1999"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-04"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":"###### Example 1","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Editing one attribute of expense 3","lastModifiedDate":"2023-10-04"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 3 -location online`","lastModifiedDate":"2023-10-04"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":189,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":190,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":191,"author":{"gitId":"elhy1999"},"content":"\u003e Successful edits to expense 3:","lastModifiedDate":"2023-10-04"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":"\u003e location : online","lastModifiedDate":"2023-10-04"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":"###### Example 2","lastModifiedDate":"2023-10-04"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Setting the expense’s category to be default of “Others”","lastModifiedDate":"2023-10-04"},{"lineNumber":198,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 2 -category -location frontier pasta express -amount 5.8","lastModifiedDate":"2023-10-04"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":"`","lastModifiedDate":"2023-10-04"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":204,"author":{"gitId":"elhy1999"},"content":"\u003e Successful edits to expense 1:","lastModifiedDate":"2023-10-04"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":"\u003e category : “Others”","lastModifiedDate":"2023-10-04"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":"\u003e location : frontier pasta express","lastModifiedDate":"2023-10-04"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":"\u003e amount : $5.80","lastModifiedDate":"2023-10-04"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":210,"author":{"gitId":"elhy1999"},"content":"#### Failed Execution","lastModifiedDate":"2023-10-04"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":"###### Example 1","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: No attributes to edit","lastModifiedDate":"2023-10-04"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":216,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 1`","lastModifiedDate":"2023-10-04"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":218,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":219,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":220,"author":{"gitId":"elhy1999"},"content":"\u003e Please input an attribute to edit, and the new value to change the attribute to.","lastModifiedDate":"2023-10-04"},{"lineNumber":221,"author":{"gitId":"elhy1999"},"content":"\u003e Syntax: edit \u003cinteger\u003e -\u003cname of attribute\u003e \u003cnew attribute value\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":222,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":224,"author":{"gitId":"elhy1999"},"content":"###### Example 2","lastModifiedDate":"2023-10-04"},{"lineNumber":225,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":226,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: New attribute value for `name` is empty","lastModifiedDate":"2023-10-04"},{"lineNumber":227,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":228,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 1 -name`","lastModifiedDate":"2023-10-04"},{"lineNumber":229,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":230,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":231,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":232,"author":{"gitId":"elhy1999"},"content":"\u003e Attributes “name” and “amount” cannot be empty","lastModifiedDate":"2023-10-04"},{"lineNumber":233,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":234,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":"###### Example 3","lastModifiedDate":"2023-10-04"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: There are only 10 expenses in the list, but user tries to edit expense 100000","lastModifiedDate":"2023-10-04"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":239,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 100000 -location online`","lastModifiedDate":"2023-10-04"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":241,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":"\u003e There are only 10 expenses. Please provide an integer between 1 and 10 (received: 100000)","lastModifiedDate":"2023-10-04"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":246,"author":{"gitId":"elhy1999"},"content":"###### Example 4","lastModifiedDate":"2023-10-04"},{"lineNumber":247,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":248,"author":{"gitId":"elhy1999"},"content":"\u003e **Case**: Wrong input format for “date” and “amount” attribute","lastModifiedDate":"2023-10-04"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"elhy1999"},"content":"\u003e**Input**: `edit 2 -date yesterday -amount 5.80.`","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"elhy1999"},"content":"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"elhy1999"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"\u003e Attribute “date” must be of the form dd/MM/yyyy (received: yesterday)","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":"\u003e Attribute “amount” must be a number (received: 5.80.)","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":"\u003e ```","lastModifiedDate":"2023-10-04"},{"lineNumber":257,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":258,"author":{"gitId":"sp4ce-cowboy"},"content":"### Delete Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":259,"author":{"gitId":"sp4ce-cowboy"},"content":"Allows a user to delete a previously added expense and all information associated with that expense.","lastModifiedDate":"2023-10-05"},{"lineNumber":260,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":261,"author":{"gitId":"sp4ce-cowboy"},"content":"Command: `delete \u003cname\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":262,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":263,"author":{"gitId":"sp4ce-cowboy"},"content":"Command Argument: `name` represents the exact name of the expense intended to be deleted. ","lastModifiedDate":"2023-10-05"},{"lineNumber":264,"author":{"gitId":"sp4ce-cowboy"},"content":"Has to exactly match a given expense, or else the command will do nothing, ","lastModifiedDate":"2023-10-05"},{"lineNumber":265,"author":{"gitId":"sp4ce-cowboy"},"content":"so as to ensure the integrity of user data.","lastModifiedDate":"2023-10-05"},{"lineNumber":266,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":267,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":268,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":270,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":272,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":273,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense named “friday mcdonalds”","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":275,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete \"friday mcdonalds\"`","lastModifiedDate":"2023-10-05"},{"lineNumber":276,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":277,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e **Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":278,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":279,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eSuccessfully deleted expense “friday mcdonalds”!","lastModifiedDate":"2023-10-05"},{"lineNumber":280,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":281,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: The expense will be removed from file","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":283,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Unsuccessful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":284,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":285,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":286,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":287,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense command entered with no argument provided","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":289,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete `","lastModifiedDate":"2023-10-05"},{"lineNumber":290,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":291,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":292,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eNo expense deleted. Delete command must be followed with an expense to be deleted like this: delete \u003cexpense\u003e.","lastModifiedDate":"2023-10-05"},{"lineNumber":294,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":296,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":297,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":298,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":299,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete expense command entered with no matching expense name","lastModifiedDate":"2023-10-05"},{"lineNumber":300,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":301,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete asdf`","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":303,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":304,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":305,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eNo expense deleted. Delete command must be followed with a valid expense name.","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":308,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":309,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":310,"author":{"gitId":"sp4ce-cowboy"},"content":"### Mass Delete Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":311,"author":{"gitId":"sp4ce-cowboy"},"content":"Allows a user to delete all added expenses, and all associated information.","lastModifiedDate":"2023-10-05"},{"lineNumber":312,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"sp4ce-cowboy"},"content":"Command: `delete_all_expenses`","lastModifiedDate":"2023-10-05"},{"lineNumber":314,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"sp4ce-cowboy"},"content":"Command Argument: No arguments are needed for this command. ","lastModifiedDate":"2023-10-05"},{"lineNumber":316,"author":{"gitId":"sp4ce-cowboy"},"content":"The command is intentionally lengthy to ensure that mass deletion of all expenses is done intentionally.","lastModifiedDate":"2023-10-05"},{"lineNumber":317,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":318,"author":{"gitId":"sp4ce-cowboy"},"content":"Remarks: Confirmation for mass deletion to be implemented at a later date.","lastModifiedDate":"2023-10-05"},{"lineNumber":319,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":320,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":322,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":323,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":324,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":326,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Delete all expenses","lastModifiedDate":"2023-10-05"},{"lineNumber":327,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":328,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete_all_expenses`","lastModifiedDate":"2023-10-05"},{"lineNumber":329,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":330,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":332,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003eSuccessfully deleted all expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: All expenses will be removed from file","lastModifiedDate":"2023-10-05"},{"lineNumber":335,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":336,"author":{"gitId":"sp4ce-cowboy"},"content":"##### Unsuccessful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":337,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":338,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":340,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Mass deletion command entered improperly","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete_all `","lastModifiedDate":"2023-10-05"},{"lineNumber":343,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e Invalid command.","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file.","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"sp4ce-cowboy"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":351,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Case**: Wrong delete command entered","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Input**: `delete`","lastModifiedDate":"2023-10-05"},{"lineNumber":355,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e ","lastModifiedDate":"2023-10-05"},{"lineNumber":356,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":358,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e No expense deleted. Delete command must be followed with an expense to be deleted like this: delete \u003cexpense\u003e.","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e**Remark**: No expenses will be removed and no changes made to file. ","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e The above error is the same as the one for the simple “delete” function. ","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e In the above example, the delete_all_expenses functionality is ","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e intentionally obfuscated to prevent the user from accidental mass deletions. ","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e The rationale is that a user unsure of a basic command like delete is probably a new user, ","lastModifiedDate":"2023-10-05"},{"lineNumber":365,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e and a new user should not be directed to mass delete information. ","lastModifiedDate":"2023-10-05"},{"lineNumber":366,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003e There are other, more proper ways to convey this information, such as this User Guide.","lastModifiedDate":"2023-10-05"},{"lineNumber":367,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":368,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":369,"author":{"gitId":"jamz903"},"content":"### List Expenses [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":370,"author":{"gitId":"jamz903"},"content":"Allows a user to retrieve a list of all their past expenses with details on where it was spent, type of spending and how much was spent.","lastModifiedDate":"2023-10-05"},{"lineNumber":371,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":372,"author":{"gitId":"jamz903"},"content":"Command: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":373,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":374,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":375,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":376,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":377,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":378,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":379,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":380,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command when there are no existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":381,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":383,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":384,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":385,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":386,"author":{"gitId":"jamz903"},"content":"\u003eYou have no expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":387,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":388,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":389,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":390,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":391,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":392,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":394,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":395,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":397,"author":{"gitId":"jamz903"},"content":"\u003e1. buy groceries 23/09/23 - $15.20 (groceries)","lastModifiedDate":"2023-10-05"},{"lineNumber":398,"author":{"gitId":"jamz903"},"content":"\u003e2. lunch at fc 23/09/23 - $5.50 (meals)","lastModifiedDate":"2023-10-05"},{"lineNumber":399,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":400,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":401,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":403,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":404,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with any parameters","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `list 5`","lastModifiedDate":"2023-10-05"},{"lineNumber":407,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"jamz903"},"content":"\u003eCommand not recognised. Try using the command “list” instead.","lastModifiedDate":"2023-10-05"},{"lineNumber":411,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":412,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":413,"author":{"gitId":"jamz903"},"content":"### Find Expenses [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"jamz903"},"content":"Allows a user to retrieve the expense(s) that contain/matches any of the given keywords.","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"jamz903"},"content":"Command: `find \u003ckeyword\u003e`","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"jamz903"},"content":"Command Parameters: `\u003ckeyword\u003e` is the keyword to look for in any of the stored expenses, it can be a single word or multiple words separated by spaces.","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":423,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":424,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command when there are no matching expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find chicken`","lastModifiedDate":"2023-10-05"},{"lineNumber":429,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":430,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":431,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":432,"author":{"gitId":"jamz903"},"content":"\u003eYou have no matching expenses!","lastModifiedDate":"2023-10-05"},{"lineNumber":433,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":434,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":435,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":436,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":437,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with keywords that match existing expenses.","lastModifiedDate":"2023-10-05"},{"lineNumber":438,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":439,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find lunch`","lastModifiedDate":"2023-10-05"},{"lineNumber":440,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":441,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":442,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":443,"author":{"gitId":"jamz903"},"content":"\u003e2 expenses found containing the word(s) “groceries”:","lastModifiedDate":"2023-10-05"},{"lineNumber":444,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":445,"author":{"gitId":"jamz903"},"content":"\u003e1. lunch at holland 16/09/23 - $15.20 (groceries)","lastModifiedDate":"2023-10-05"},{"lineNumber":446,"author":{"gitId":"jamz903"},"content":"\u003e4. lunch at fc 23/09/23 - $5.50 (meals)","lastModifiedDate":"2023-10-05"},{"lineNumber":447,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":448,"author":{"gitId":"jamz903"},"content":"\u003e**Note:** Index of retrieved list is respective to the order of the full expense list so index of 4 is the 4th expense stored in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":449,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":450,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":451,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":452,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":453,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command without any parameters","lastModifiedDate":"2023-10-05"},{"lineNumber":454,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":455,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `find`","lastModifiedDate":"2023-10-05"},{"lineNumber":456,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":457,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":458,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":459,"author":{"gitId":"jamz903"},"content":"\u003eThe “find” command requires at least one word to search.","lastModifiedDate":"2023-10-05"},{"lineNumber":460,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":461,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":462,"author":{"gitId":"jamz903"},"content":"### Tabulate Total Expense [coming soon]","lastModifiedDate":"2023-10-05"},{"lineNumber":463,"author":{"gitId":"jamz903"},"content":"Allows a user to view their total expenditure, filtered by category of spending or by month.","lastModifiedDate":"2023-10-05"},{"lineNumber":464,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":465,"author":{"gitId":"jamz903"},"content":"Command: `total [-category \u003ccategory\u003e] [-month \u003cmonth\u003e]`","lastModifiedDate":"2023-10-05"},{"lineNumber":466,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":467,"author":{"gitId":"jamz903"},"content":"Command Options:","lastModifiedDate":"2023-10-05"},{"lineNumber":468,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":469,"author":{"gitId":"jamz903"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-10-05"},{"lineNumber":470,"author":{"gitId":"jamz903"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":471,"author":{"gitId":"jamz903"},"content":"| -category | Yes | Category / type of expense. Defaults to accounting for all categories if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":472,"author":{"gitId":"jamz903"},"content":"| -month | Yes | Month of expenditure. Can either be the shorthand of the name like Sep or full name like September. \u003cbr/\u003e\u003cbr/\u003eDefaults to all months if not specified. |","lastModifiedDate":"2023-10-05"},{"lineNumber":473,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":474,"author":{"gitId":"jamz903"},"content":"#### Expected Outputs","lastModifiedDate":"2023-10-05"},{"lineNumber":475,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":476,"author":{"gitId":"jamz903"},"content":"##### Successful Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":477,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":478,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":479,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":480,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with no options.","lastModifiedDate":"2023-10-05"},{"lineNumber":481,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":482,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total`","lastModifiedDate":"2023-10-05"},{"lineNumber":483,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":484,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":485,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":486,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded is $1388.","lastModifiedDate":"2023-10-05"},{"lineNumber":487,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":488,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":489,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":490,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":491,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified category.","lastModifiedDate":"2023-10-05"},{"lineNumber":492,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":493,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food`","lastModifiedDate":"2023-10-05"},{"lineNumber":494,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":495,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":496,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":497,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for food is $780.","lastModifiedDate":"2023-10-05"},{"lineNumber":498,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":499,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":500,"author":{"gitId":"jamz903"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":501,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":502,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified month.","lastModifiedDate":"2023-10-05"},{"lineNumber":503,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":504,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -month June`","lastModifiedDate":"2023-10-05"},{"lineNumber":505,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":506,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":507,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":508,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for June is $400.","lastModifiedDate":"2023-10-05"},{"lineNumber":509,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":510,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":511,"author":{"gitId":"jamz903"},"content":"###### Example 4","lastModifiedDate":"2023-10-05"},{"lineNumber":512,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":513,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a specified category and month.","lastModifiedDate":"2023-10-05"},{"lineNumber":514,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":515,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food -month June`","lastModifiedDate":"2023-10-05"},{"lineNumber":516,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":517,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":518,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":519,"author":{"gitId":"jamz903"},"content":"\u003eYour total expenditure recorded for food in June is $230.","lastModifiedDate":"2023-10-05"},{"lineNumber":520,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":521,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":522,"author":{"gitId":"jamz903"},"content":"##### Failed Execution","lastModifiedDate":"2023-10-05"},{"lineNumber":523,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":524,"author":{"gitId":"jamz903"},"content":"###### Example 1","lastModifiedDate":"2023-10-05"},{"lineNumber":525,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a category that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":526,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":527,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category chicken -month june`","lastModifiedDate":"2023-10-05"},{"lineNumber":528,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":529,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":530,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":531,"author":{"gitId":"jamz903"},"content":"\u003eThe category \"chicken\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":532,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":533,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":534,"author":{"gitId":"jamz903"},"content":"###### Example 2","lastModifiedDate":"2023-10-05"},{"lineNumber":535,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a month that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":536,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":537,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category food -month juely`","lastModifiedDate":"2023-10-05"},{"lineNumber":538,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":539,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":540,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":541,"author":{"gitId":"jamz903"},"content":"\u003eThe month \"juely\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":542,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":543,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":544,"author":{"gitId":"jamz903"},"content":"###### Example 3","lastModifiedDate":"2023-10-05"},{"lineNumber":545,"author":{"gitId":"jamz903"},"content":"\u003e**Case**: Calling the command with a category and month that doesn’t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":546,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":547,"author":{"gitId":"jamz903"},"content":"\u003e**Input**: `total -category chicken -month juely`","lastModifiedDate":"2023-10-05"},{"lineNumber":548,"author":{"gitId":"jamz903"},"content":"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":549,"author":{"gitId":"jamz903"},"content":"\u003e**Output**:","lastModifiedDate":"2023-10-05"},{"lineNumber":550,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":551,"author":{"gitId":"jamz903"},"content":"\u003eThe category \"chicken\" and month \"juely\" doesn\u0027t exist.","lastModifiedDate":"2023-10-05"},{"lineNumber":552,"author":{"gitId":"jamz903"},"content":"\u003e```","lastModifiedDate":"2023-10-05"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":554,"author":{"gitId":"lipwei1808"},"content":"### Create Income","lastModifiedDate":"2023-09-27"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":556,"author":{"gitId":"lipwei1808"},"content":"Allows a user to register an inflow of money (income) into the application.","lastModifiedDate":"2023-09-27"},{"lineNumber":557,"author":{"gitId":"lipwei1808"},"content":"Our application will store an income based on the name, value, date.","lastModifiedDate":"2023-09-27"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":559,"author":{"gitId":"lipwei1808"},"content":"Command: `create_income \u003cname\u003e [-value \u003cvalue of income\u003e] [-date \u003cdate of expense\u003e]`","lastModifiedDate":"2023-09-27"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":561,"author":{"gitId":"lipwei1808"},"content":"Command Argument: `name` represents the name of the income to be added.","lastModifiedDate":"2023-09-27"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":563,"author":{"gitId":"lipwei1808"},"content":"Command Options:","lastModifiedDate":"2023-09-27"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":565,"author":{"gitId":"lipwei1808"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-09-27"},{"lineNumber":566,"author":{"gitId":"lipwei1808"},"content":"|-------------|-----------|------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":567,"author":{"gitId":"lipwei1808"},"content":"| -value | No | Value of expense. Represents a positive number (integer/ float). |","lastModifiedDate":"2023-09-27"},{"lineNumber":568,"author":{"gitId":"lipwei1808"},"content":"| -date | Yes | Date of when the expense was made. Follows format dd/MM/yyyy \u003cbr\u003e\u003cbr\u003e Defaults to date of creation if not specified. |","lastModifiedDate":"2023-09-27"},{"lineNumber":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":570,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":572,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":573,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":574,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":576,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Create “work at lifo” income dated 19/09/2023 with value of 900.","lastModifiedDate":"2023-09-27"},{"lineNumber":577,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":578,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income work at liho -date 19/09/2023 -value 900`","lastModifiedDate":"2023-09-27"},{"lineNumber":579,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":580,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully created income “work at liho”!","lastModifiedDate":"2023-09-27"},{"lineNumber":581,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":582,"author":{"gitId":"lipwei1808"},"content":"\u003e**Remark**: The income will be dated 19/09/2023.","lastModifiedDate":"2023-09-27"},{"lineNumber":583,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":584,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":586,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":588,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":589,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":590,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":591,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":592,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income without income name.","lastModifiedDate":"2023-09-27"},{"lineNumber":593,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `create_income \u003cname\u003e -value \u003cvalue\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":595,"author":{"gitId":"lipwei1808"},"content":"###### Example 2","lastModifiedDate":"2023-09-27"},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":597,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `value` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":598,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":599,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working`","lastModifiedDate":"2023-09-27"},{"lineNumber":600,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":601,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income without income value.","lastModifiedDate":"2023-09-27"},{"lineNumber":602,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `create_income \u003cname\u003e -value \u003cvalue\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":604,"author":{"gitId":"lipwei1808"},"content":"###### Example 3","lastModifiedDate":"2023-09-27"},{"lineNumber":605,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":606,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `value` form (not positive number)","lastModifiedDate":"2023-09-27"},{"lineNumber":607,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":608,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working -value hi`","lastModifiedDate":"2023-09-27"},{"lineNumber":609,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":610,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income due to invalid income value type. Ensure that it is a positive number.","lastModifiedDate":"2023-09-27"},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":612,"author":{"gitId":"lipwei1808"},"content":"###### Example 4","lastModifiedDate":"2023-09-27"},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":614,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `date` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":615,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":616,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `create_income working -value 1300 -date today`","lastModifiedDate":"2023-09-27"},{"lineNumber":617,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":618,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot create income due to invalid date format. Ensure that it follows dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":620,"author":{"gitId":"lipwei1808"},"content":"### Delete Income","lastModifiedDate":"2023-09-27"},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":622,"author":{"gitId":"lipwei1808"},"content":"Allows a user to delete an income previously added into the application.","lastModifiedDate":"2023-09-27"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":624,"author":{"gitId":"lipwei1808"},"content":"Command: `delete_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":626,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":627,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":628,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":629,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":630,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":631,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":632,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Delete “work at liho” income.","lastModifiedDate":"2023-09-27"},{"lineNumber":633,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":634,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `delete_income work at liho`","lastModifiedDate":"2023-09-27"},{"lineNumber":635,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":636,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully deleted expense “work at liho”","lastModifiedDate":"2023-09-27"},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":638,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":639,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":640,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":641,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":642,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":643,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":644,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `delete_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":645,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":646,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot delete income without income `name`.","lastModifiedDate":"2023-09-27"},{"lineNumber":647,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `delete_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":648,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":649,"author":{"gitId":"lipwei1808"},"content":"### Find Income","lastModifiedDate":"2023-09-27"},{"lineNumber":650,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":651,"author":{"gitId":"lipwei1808"},"content":"Allows a user to search for an income(s) that was previously entered.","lastModifiedDate":"2023-09-27"},{"lineNumber":652,"author":{"gitId":"lipwei1808"},"content":"User can find income(s) through name.","lastModifiedDate":"2023-09-27"},{"lineNumber":653,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":654,"author":{"gitId":"lipwei1808"},"content":"Command: `find_income [-name \u003cname of income\u003e] [-value_more \u003cvalue of income\u003e] [-value_less \u003cvalue of income\u003e] [-date \u003cdate of income\u003e]`","lastModifiedDate":"2023-09-27"},{"lineNumber":655,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":656,"author":{"gitId":"lipwei1808"},"content":"Command Options:","lastModifiedDate":"2023-09-27"},{"lineNumber":657,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":658,"author":{"gitId":"lipwei1808"},"content":"| Option Name | Optional? | Purpose |","lastModifiedDate":"2023-09-27"},{"lineNumber":659,"author":{"gitId":"lipwei1808"},"content":"|-------------|-----------|--------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":660,"author":{"gitId":"lipwei1808"},"content":"| -name | Yes | Name of income to find. |","lastModifiedDate":"2023-09-27"},{"lineNumber":661,"author":{"gitId":"lipwei1808"},"content":"| -value_more | Yes | Value of income, used to filter income more than value. |","lastModifiedDate":"2023-09-27"},{"lineNumber":662,"author":{"gitId":"lipwei1808"},"content":"| -value_less | Yes | Value of income, used to filter income less than value. |","lastModifiedDate":"2023-09-27"},{"lineNumber":663,"author":{"gitId":"lipwei1808"},"content":"| -date | Yes | Date of when the income was made. Follows format dd/MM/yyyy.\u003cbr\u003e\u003cbr\u003eFilters income added on that date. |","lastModifiedDate":"2023-09-27"},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":665,"author":{"gitId":"lipwei1808"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Note:**","lastModifiedDate":"2023-09-27"},{"lineNumber":666,"author":{"gitId":"lipwei1808"},"content":"If no options are specified, all income is returned.","lastModifiedDate":"2023-09-27"},{"lineNumber":667,"author":{"gitId":"lipwei1808"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":668,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":669,"author":{"gitId":"lipwei1808"},"content":"#### Expected Outputs","lastModifiedDate":"2023-09-27"},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":671,"author":{"gitId":"lipwei1808"},"content":"##### Successful Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":672,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":673,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":674,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":675,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Find “work at liho” income.","lastModifiedDate":"2023-09-27"},{"lineNumber":676,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":677,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income work at liho`","lastModifiedDate":"2023-09-27"},{"lineNumber":678,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":679,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Successfully found income “work at liho”. Display information related to the income","lastModifiedDate":"2023-09-27"},{"lineNumber":680,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":681,"author":{"gitId":"lipwei1808"},"content":"##### Failed Execution","lastModifiedDate":"2023-09-27"},{"lineNumber":682,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":683,"author":{"gitId":"lipwei1808"},"content":"###### Example 1","lastModifiedDate":"2023-09-27"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":685,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Missing `name` of income","lastModifiedDate":"2023-09-27"},{"lineNumber":686,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":687,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income`","lastModifiedDate":"2023-09-27"},{"lineNumber":688,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":689,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot find income without income name.","lastModifiedDate":"2023-09-27"},{"lineNumber":690,"author":{"gitId":"lipwei1808"},"content":"\u003e Please specify the income name as such: `find_income \u003cname\u003e`","lastModifiedDate":"2023-09-27"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":692,"author":{"gitId":"lipwei1808"},"content":"###### Example 2","lastModifiedDate":"2023-09-27"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":694,"author":{"gitId":"lipwei1808"},"content":"\u003e **Case**: Invalid `date` format","lastModifiedDate":"2023-09-27"},{"lineNumber":695,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":696,"author":{"gitId":"lipwei1808"},"content":"\u003e**Input**: `find_income work at liho -date tomorrow`","lastModifiedDate":"2023-09-27"},{"lineNumber":697,"author":{"gitId":"lipwei1808"},"content":"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":698,"author":{"gitId":"lipwei1808"},"content":"\u003e**Output**: Cannot find income due to invalid date format. Ensure that it follows dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":700,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"woojiahao"},"content":"**Q**: How do I transfer my data to another Computer?","lastModifiedDate":"2023-10-05"},{"lineNumber":709,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":710,"author":{"gitId":"woojiahao"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains","lastModifiedDate":"2023-10-05"},{"lineNumber":711,"author":{"gitId":"woojiahao"},"content":"the data of your previous UniCa$h home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":715,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":717,"author":{"gitId":"jamz903"},"content":"1. Currently no known issues!","lastModifiedDate":"2023-10-04"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":719,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":721,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"jamz903"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-10-05"},{"lineNumber":724,"author":{"gitId":"jamz903"},"content":"|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":725,"author":{"gitId":"jamz903"},"content":"| **Create Expense** | `create \u003cname\u003e -amount \u003cexpense amount\u003e [-category \u003ccategory of expense\u003e] [-date \u003cdate of expense\u003e] [-location \u003clocation of expense\u003e]` \u003cbr\u003e e.g., `create buy food -amount 7.50 -date 19/09/2023 -location Food Clique -category Food` |","lastModifiedDate":"2023-10-05"},{"lineNumber":726,"author":{"gitId":"jamz903"},"content":"| **Delete Expense** | `delete \u003cname\u003e`\u003cbr\u003e e.g., `delete grabfood_lunch` | |","lastModifiedDate":"2023-10-05"},{"lineNumber":727,"author":{"gitId":"jamz903"},"content":"| **Mass Delete Expenses** | `delete_all_expenses` |","lastModifiedDate":"2023-10-05"},{"lineNumber":728,"author":{"gitId":"jamz903"},"content":"| **Edit Expenses** | `edit \u003cexpense_id\u003e -\u003cname of attribute 1\u003e \u003cnew attribute 1 value\u003e [-\u003cname of attribute N\u003e \u003cnew attribute N value\u003e …​]`\u003cbr\u003e e.g.,`edit 3 -location online` |","lastModifiedDate":"2023-10-05"},{"lineNumber":729,"author":{"gitId":"jamz903"},"content":"| **List Expenses** | `list` |","lastModifiedDate":"2023-10-05"},{"lineNumber":730,"author":{"gitId":"jamz903"},"content":"| **Find Expenses** | `find \u003ckeyword\u003e` \u003cbr\u003e e.g., `find lunch` |","lastModifiedDate":"2023-10-05"},{"lineNumber":731,"author":{"gitId":"jamz903"},"content":"| **Tabulate Total Expense** | `total [-category \u003ccategory\u003e] [-month \u003cmonth\u003e]` \u003cbr\u003e e.g., `total -category Food -month June` |","lastModifiedDate":"2023-10-05"},{"lineNumber":732,"author":{"gitId":"jamz903"},"content":"| **Create Income** | `create_income \u003cname\u003e [-value \u003cvalue of income\u003e] [-date \u003cdate of expense\u003e]` \u003cbr\u003e e.g., `create_income work at liho -date 19/09/2023 -value 900` |","lastModifiedDate":"2023-10-05"},{"lineNumber":733,"author":{"gitId":"jamz903"},"content":"| **Delete Income** | `delete_income \u003cname\u003e` |","lastModifiedDate":"2023-10-05"},{"lineNumber":734,"author":{"gitId":"jamz903"},"content":"| **Find Income** | `find_income \u003cname\u003e [-value_more \u003cvalue of income\u003e] [-value_less \u003cvalue of income\u003e] [-date \u003cdate of income\u003e]` \u003cbr\u003e e.g., `find_income work at liho` |","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"sp4ce-cowboy":111,"woojiahao":136,"lipwei1808":103,"jamz903":198,"-":92,"elhy1999":94}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"woojiahao"},"content":" content: \"UniCa$h\";","lastModifiedDate":"2023-10-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"woojiahao":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"title: UniCa$h","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103-T16-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103-T16-3/tp/actions)","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp/graph/badge.svg?token\u003dLPKS424C1Y)](https://codecov.io/gh/AY2324S1-CS2103-T16-3/tp)","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"\u003e UniCa$h is a finance tracking application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"## About","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"[//]: # (TODO Change this image)","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"User Target Profile: Our application is for university students who want to be more financially conscious about their","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"spending habits, to enable them to make more economical decisions that provide students on a limited budget with more","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"purchasing power.","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"Value Proposition: It provides university students with an intuitive and frictionless experience to have transparency on","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"their expenditure to help them better understand their spendings so they can develop better financial habits as they","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"transition into adulthood.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"## Navigation","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"* If you are interested in using UniCa$h, head over to the","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"* If you are interested about developing UniCa$h, the [**Developer Guide**](DeveloperGuide.html) is a good place to","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" start.","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"## Acknowledgements","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"### Libraries","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"* [JavaFX](https://openjfx.io/)","lastModifiedDate":"2023-10-02"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"* [Jackson](https://github.com/FasterXML/jackson)","lastModifiedDate":"2023-10-02"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"* [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"woojiahao":28,"-":11}},{"path":"docs/team/elhy1999.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"title: Ernest\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"elhy1999"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"elhy1999"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"elhy1999"},"content":"UniCa$h is a desktop application used for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"elhy1999"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"elhy1999"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"elhy1999"},"content":" * What it does: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"elhy1999"},"content":" * Justification: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":" * Highlights: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"elhy1999"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"elhy1999":37}},{"path":"docs/team/jamz903.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jamz903"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"jamz903"},"content":"title: Jamie\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"jamz903"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":"UniCa$h is a desktop application used for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" * What it does: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" * Justification: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" * Highlights: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" * Managed releases `v1.1` (1 release) on GitHub","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"jamz903"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" * *to be added*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"jamz903":37}},{"path":"docs/team/lipwei1808.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"title: Tan Lip Wei\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"#### Overview","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"UniCa$h is a desktop application for university students who want to be more financially conscious.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"The project is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"#### Contributions","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"* **Project management**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"* **Enhancements to existing features**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Added documentation for the features related to `income` [to be added]()","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * Added implementation details of `income` related feature.","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"* **Community**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"* **Tools**: *to be added*","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"lipwei1808":33}},{"path":"docs/team/sp4ce-cowboy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"title: Rubesh Suresh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"### Project: UniCa$h","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Overview","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"UniCa$h is a desktop application for university students who want to be more financially conscious.","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"#### Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"* **New Feature**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Code contributed**: [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" * Storage","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * Responsible for the Storage functionality","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Project management**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Enhancements to existing features**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Added documentation for `expense` [to be added]()","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" * Migrated details of the Developer Guide from an external source and consolidated them in GitHub.","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Community**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"* **Tools**: *to be added*","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"sp4ce-cowboy":37}},{"path":"docs/team/woojiahao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"title: Jia Hao\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"woojiahao":46}},{"path":"src/main/java/unicash/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.FileUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":69}},{"path":"src/main/java/unicash/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2019-02-08"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * as a named module. We don\u0027t use JavaFX via the module system so it can\u0027t","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // packed into a FAT Jar file (as we do), which means this warning will persist even then.","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":39}},{"path":"src/main/java/unicash/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Version;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ConfigUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.LogicManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.Storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.StorageManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.UniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.UserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.ui.Ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.ui.UiManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Version VERSION \u003d new Version(1, 2, 0, true);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing UniCa$h ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" UniCashStorage uniCashStorage \u003d new JsonUniCashStorage(userPrefs.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Using data file : \" + storage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e uniCashOptional;","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash initialData;","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" uniCashOptional \u003d storage.readUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" if (uniCashOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Creating a new data file \" + storage.getUniCashFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" + \" populated with a sample UniCash.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" initialData \u003d uniCashOptional.orElseGet(SampleDataUtil::getSampleUniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" logger.warning(\"Data file at \" + storage.getUniCashFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" + \" Will be starting with an empty UniCash.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" initialData \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" if (configOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" if (prefsOptional.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"Starting UniCa$h \" + MainApp.VERSION);","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Regular.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Medium.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-Bold.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Inter-SemiBold.ttf\"), 12);","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping UniCa$h ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":35,"woojiahao":13,"-":143}},{"path":"src/main/java/unicash/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Config values used by the app","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":64}},{"path":"src/main/java/unicash/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final double DEFAULT_HEIGHT \u003d 600;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final double DEFAULT_WIDTH \u003d 740;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":80}},{"path":"src/main/java/unicash/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String LOG_FILE \u003d \"addressbook.log\";","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":105}},{"path":"src/main/java/unicash/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a version with major, minor and patch number","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public int getMajor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return major;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public int getMinor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public int getPatch() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":120}},{"path":"src/main/java/unicash/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core.index;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":67}},{"path":"src/main/java/unicash/commons/enums/BudgetInterval.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.commons.enums;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents the budget interval for a given {@code Budget}.","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public enum BudgetInterval {","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" DAY(\"day\"),","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" WEEK(\"week\"),","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" MONTH(\"month\");","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private final String budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Constructs a BudgetInterval enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * @param budgetInterval the value representing the string value of the enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" BudgetInterval(String budgetInterval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" this.budgetInterval \u003d budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Returns the BudgetInterval object from a given string.","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @param budgetInterval a string value of the enum represented by the value provided.","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" * @return a BudgetInterval object of a transaction.","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public static BudgetInterval parseInterval(String budgetInterval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" .filter(type -\u003e type.budgetInterval.equals(budgetInterval))","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" .findFirst().orElseThrow();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Returns a boolean value if a given string is a valid BudgetInterval.","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param test a string value to be tested.","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" * @return a boolean value if the given string is a valid enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidBudgetInterval(String test) {","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" .anyMatch(type -\u003e type.budgetInterval.equals(test));","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" * Returns a list of all possible budget intervals separated by commas.","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public static String listBudgetIntervals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" StringJoiner stringJoiner \u003d new StringJoiner(\", \");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" for (BudgetInterval type : values()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" stringJoiner.add(type.budgetInterval);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" return stringJoiner.toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" * Returns the string value of a {@code BudgetInterval}.","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * @return the string representation of a BudgetInterval.","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" return budgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":67}},{"path":"src/main/java/unicash/commons/enums/TransactionType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.enums;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents the transaction type for a given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public enum TransactionType {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" EXPENSE(\"expense\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" INCOME(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private final String transactionType;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Constructs a TransactionType enum.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param transactionType the value representing the string value of the enum.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" TransactionType(String transactionType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" this.transactionType \u003d transactionType;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Returns the TransactionType object from a given string.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * @param transactionType a string value of the enum represented by the value provided.","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @return a TransactionType object of a transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public static TransactionType parseType(String transactionType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" .filter(type -\u003e type.transactionType.equals(transactionType))","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" .findFirst().orElseThrow();","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Returns a boolean value if a given string is a valid TransactionType.","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" * @param test a string value to be tested.","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @return a boolean value if the given string is a valid enum.","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidTransactionType(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" return Arrays.stream(values())","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" .anyMatch(type -\u003e type.transactionType.equals(test));","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" * Returns a list of all transaction types separated by commas.","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public static String listTransactionTypes() {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" StringJoiner stringJoiner \u003d new StringJoiner(\", \");","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" for (TransactionType type : values()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" stringJoiner.add(type.transactionType);","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" return stringJoiner.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" * Returns the string value of a {@code TransactionType}.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" * @return the string representation of a TransactionType.","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" return transactionType;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":1,"lipwei1808":65}},{"path":"src/main/java/unicash/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-06-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error during loading of data from a file.","lastModifiedDate":"2023-06-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-06-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class DataLoadingException extends Exception {","lastModifiedDate":"2023-06-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public DataLoadingException(Exception cause) {","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(cause);","lastModifiedDate":"2023-06-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-06-14"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":10}},{"path":"src/main/java/unicash/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param cause of the main exception","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public IllegalValueException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":20}},{"path":"src/main/java/unicash/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A container for App specific utility functions","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * This private constructor is declared to support a constructor initialisation","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * by code coverage.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private AppUtil() {}","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":6,"-":40}},{"path":"src/main/java/unicash/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private CollectionUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" * @see #requireAllNonNull(Collection)","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":7,"-":33}},{"path":"src/main/java/unicash/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A class for accessing the Config File.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigUtil {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private ConfigUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":20}},{"path":"src/main/java/unicash/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" private FileUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":4,"-":82}},{"path":"src/main/java/unicash/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Converts a Java object instance to JSON and vice versa","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" private JsonUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":141}},{"path":"src/main/java/unicash/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" private StringUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":4,"-":66}},{"path":"src/main/java/unicash/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":52}},{"path":"src/main/java/unicash/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Returns the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" * Returns an unmodifiable view of the filtered list of transactions","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":9,"lipwei1808":2,"-":28}},{"path":"src/main/java/unicash/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.UniCashParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.Storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" private final UniCashParser uniCashParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" uniCashParser \u003d new UniCashParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" Command command \u003d uniCashParser.parseCommand(commandText);","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" storage.saveUniCash(model.getUniCash());","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" return model.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" return model.getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"sp4ce-cowboy":14,"woojiahao":3,"lipwei1808":5,"-":60}},{"path":"src/main/java/unicash/logic/UniCashMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * Container for user visible messages.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashMessages {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n\\n%1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The transaction index provided is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_TRANSACTIONS_LISTED_OVERVIEW \u003d \"%1$d transactions listed!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_INVALID_MONTH \u003d \"Month must be between 1 and 12 (inclusive).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" * Formats the {@code transaction} for display to the user.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String formatTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" builder.append(transaction.getName())","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nType: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getType())","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nAmount: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getAmount())","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nDate: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(transaction.getDateTime())","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nLocation: \")","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" .append(transaction.getLocation())","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\"; \\nCategory: \");","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" transaction.getCategories().forEach(builder::append);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" return builder.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":51,"woojiahao":1,"lipwei1808":2}},{"path":"src/main/java/unicash/logic/commands/AddTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.CliSyntax;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Adds a transaction to UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"add_transaction\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a transaction to UniCa$h. \\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_TYPE + \"TYPE \"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_AMOUNT + \"AMOUNT \"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_DATETIME + \"DATETIME \"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"[\" + CliSyntax.PREFIX_CATEGORY + \"CATEGORY]...\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_NAME + \"Buying groceries \"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_TYPE + \"expense \"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_AMOUNT + \"300 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_DATETIME + \"18-08-2001 19:30 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" + CliSyntax.PREFIX_LOCATION + \"ntuc \"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" + CliSyntax.PREFIX_CATEGORY + \"household\";","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New transaction added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private final Transaction toAdd;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" * Creates an AddTransactionCommand to add the specified {@code Transaction}","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public AddTransactionCommand(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" toAdd \u003d transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, UniCashMessages.formatTransaction(toAdd)));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof AddTransactionCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand otherCommand \u003d (AddTransactionCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" return toAdd.equals(otherCommand.toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":23,"lipwei1808":53}},{"path":"src/main/java/unicash/logic/commands/ClearTransactionsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" * Clears all transactions in UniCash.","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ClearTransactionsCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"clear_transactions\";","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"All transactions have been cleared!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" model.setUniCash(new UniCash());","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":23}},{"path":"src/main/java/unicash/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public abstract CommandResult execute(Model model) throws CommandException;","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":17}},{"path":"src/main/java/unicash/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":80}},{"path":"src/main/java/unicash/logic/commands/DeleteTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" * This class handles the deletion of a Transaction from the UniCa$h database.","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"delete_transaction\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \": Deletes the transaction identified by the index number used in the displayed transaction list.\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_DELETE_TRANSACTION_SUCCESS \u003d \"Deleted Transaction: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public DeleteTransactionCommand(Index targetIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cTransaction\u003e lastShownList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new CommandException(UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" model.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete)));","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!(other instanceof DeleteTransactionCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand otherDeleteCommand \u003d (DeleteTransactionCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":72}},{"path":"src/main/java/unicash/logic/commands/EditTransactionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.Model.PREDICATE_SHOW_ALL_TRANSACTIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"elhy1999"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"elhy1999"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"elhy1999"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" * Edits the details of an existing transaction in the transactions list.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":" public static final String COMMAND_WORD \u003d \"edit_transaction\";","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the transaction identified \"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" + \"by the index number used in the displayed transaction list.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Existing values will be overwritten by the input values!\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_TYPE + \"TYPE] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":" + \"[\" + PREFIX_DATETIME + \"DATETIME] \"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" + \"[\" + PREFIX_LOCATION + \"LOCATION]\"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" + \"[\" + PREFIX_CATEGORY + \"CATEGORY]...\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":" + PREFIX_NAME + \"Buying groceries \"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":" + PREFIX_TYPE + \"expense \"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"elhy1999"},"content":" + PREFIX_AMOUNT + \"300 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" + PREFIX_DATETIME + \"18-08-2001 19:30 \"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" + PREFIX_LOCATION + \"ntuc\"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" + PREFIX_CATEGORY + \"household expenses \";","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_EDIT_TRANSACTION_SUCCESS \u003d \"Edited Transaction: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" private final Index index;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionDescriptor editTransactionDescriptor;","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" * @param index of the transaction in the filtered transaction list to edit","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" * @param editTransactionDescriptor details to edit the transaction with","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" public EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" Index index,","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" EditTransactionDescriptor editTransactionDescriptor","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" requireNonNull(editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" this.editTransactionDescriptor \u003d new EditTransactionDescriptor(editTransactionDescriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" List\u003cTransaction\u003e lastShownList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" throw new CommandException(MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" Transaction transactionToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d createEditedTransaction(transactionToEdit, editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"elhy1999"},"content":" model.setTransaction(transactionToEdit, editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" model.updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction)));","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"elhy1999"},"content":" * Creates and returns a {@code Transaction} with the details of {@code transactionToEdit}","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"elhy1999"},"content":" * edited with {@code editTransactionDescriptor}.","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" private static Transaction createEditedTransaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" Transaction transactionToEdit,","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" EditTransactionDescriptor editTransactionDescriptor","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"elhy1999"},"content":" assert transactionToEdit !\u003d null;","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"elhy1999"},"content":" Name updatedName \u003d editTransactionDescriptor.getName().orElse(transactionToEdit.getName());","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"elhy1999"},"content":" Amount updatedAmount \u003d editTransactionDescriptor.getAmount().orElse(transactionToEdit.getAmount());","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"elhy1999"},"content":" DateTime updatedDateTime \u003d editTransactionDescriptor.getDateTime().orElse(transactionToEdit.getDateTime());","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"elhy1999"},"content":" Location updatedLocation \u003d editTransactionDescriptor.getLocation().orElse(transactionToEdit.getLocation());","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"elhy1999"},"content":" Type updatedType \u003d editTransactionDescriptor.getType().orElse(transactionToEdit.getType());","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList updatedCategories \u003d editTransactionDescriptor.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" .orElse(transactionToEdit.getCategories());","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(updatedName, updatedType, updatedAmount, updatedDateTime,","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" updatedLocation, updatedCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"elhy1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"elhy1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":" if (!(other instanceof EditTransactionCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"elhy1999"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand otherEditTransactionCommand \u003d (EditTransactionCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"elhy1999"},"content":" return index.equals(otherEditTransactionCommand.index)","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 editTransactionDescriptor.equals(otherEditTransactionCommand.editTransactionDescriptor);","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"elhy1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"elhy1999"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"elhy1999"},"content":" .add(\"editTransactionDescriptor\", editTransactionDescriptor)","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"elhy1999"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"elhy1999"},"content":" * Stores the details to edit the transaction with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":" * corresponding field value of the transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"elhy1999"},"content":" public static class EditTransactionDescriptor {","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" private Name name;","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"elhy1999"},"content":" private Amount amount;","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"elhy1999"},"content":" private DateTime datetime;","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"elhy1999"},"content":" private Location location;","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"elhy1999"},"content":" private Type type;","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" private UniqueCategoryList categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" public EditTransactionDescriptor() {","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"elhy1999"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" public EditTransactionDescriptor(EditTransactionDescriptor toCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"elhy1999"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":" setAmount(toCopy.amount);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":" setDateTime(toCopy.datetime);","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":" setType(toCopy.type);","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" setCategories(toCopy.categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"elhy1999"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" return CollectionUtil.isAnyNonNull(name, amount, datetime, location, type, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"elhy1999"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"elhy1999"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":" public void setAmount(Amount amount) {","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-14"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":190,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cAmount\u003e getAmount() {","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(amount);","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":" public void setDateTime(DateTime datetime) {","lastModifiedDate":"2023-10-14"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":" this.datetime \u003d datetime;","lastModifiedDate":"2023-10-14"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":198,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cDateTime\u003e getDateTime() {","lastModifiedDate":"2023-10-14"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(datetime);","lastModifiedDate":"2023-10-14"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2023-10-14"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-14"},{"lineNumber":204,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2023-10-14"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2023-10-14"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":210,"author":{"gitId":"elhy1999"},"content":" public void setType(Type type) {","lastModifiedDate":"2023-10-14"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-14"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":" public Optional\u003cType\u003e getType() {","lastModifiedDate":"2023-10-14"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":" return Optional.ofNullable(type);","lastModifiedDate":"2023-10-14"},{"lineNumber":216,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":218,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"lipwei1808"},"content":" * Sets {@code categories} to this object\u0027s {@code categories}.","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"lipwei1808"},"content":" * A defensive copy of {@code categories} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(UniqueCategoryList categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"lipwei1808"},"content":" this.categories \u003d categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable category set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-16"},{"lineNumber":228,"author":{"gitId":"lipwei1808"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code Optional#empty()} if {@code categories} is null.","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"lipwei1808"},"content":" public Optional\u003cUniqueCategoryList\u003e getCategories() {","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"lipwei1808"},"content":" return Optional.ofNullable(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":239,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":241,"author":{"gitId":"elhy1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":242,"author":{"gitId":"woojiahao"},"content":" if (!(other instanceof EditTransactionDescriptor)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" var otherEditTransactionDescriptor \u003d (EditTransactionDescriptor) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"elhy1999"},"content":" return Objects.equals(name, otherEditTransactionDescriptor.name)","lastModifiedDate":"2023-10-14"},{"lineNumber":248,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(amount, otherEditTransactionDescriptor.amount)","lastModifiedDate":"2023-10-14"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(datetime, otherEditTransactionDescriptor.datetime)","lastModifiedDate":"2023-10-14"},{"lineNumber":250,"author":{"gitId":"elhy1999"},"content":" \u0026\u0026 Objects.equals(location, otherEditTransactionDescriptor.location)","lastModifiedDate":"2023-10-14"},{"lineNumber":251,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 Objects.equals(type, otherEditTransactionDescriptor.type)","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 Objects.equals(categories, otherEditTransactionDescriptor.categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":257,"author":{"gitId":"elhy1999"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":258,"author":{"gitId":"elhy1999"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-14"},{"lineNumber":259,"author":{"gitId":"elhy1999"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-14"},{"lineNumber":260,"author":{"gitId":"elhy1999"},"content":" .add(\"datetime\", datetime)","lastModifiedDate":"2023-10-14"},{"lineNumber":261,"author":{"gitId":"elhy1999"},"content":" .add(\"location\", location)","lastModifiedDate":"2023-10-14"},{"lineNumber":262,"author":{"gitId":"elhy1999"},"content":" .add(\"type\", type)","lastModifiedDate":"2023-10-14"},{"lineNumber":263,"author":{"gitId":"lipwei1808"},"content":" .add(\"categories\", categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"elhy1999"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":265,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":266,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":267,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":268,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":22,"woojiahao":17,"lipwei1808":34,"elhy1999":195}},{"path":"src/main/java/unicash/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" * Terminates UniCa$h.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting UniCa$h as requested ...\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":15}},{"path":"src/main/java/unicash/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" * Finds and lists all transactions in UniCa$h whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"elhy1999"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all transactions whose names contain any of \"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" + \"Example: \" + COMMAND_WORD + \" chicken rice\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jamz903"},"content":" private final TransactionNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":" public FindCommand(TransactionNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" model.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":" String.format(UniCashMessages.MESSAGE_TRANSACTIONS_LISTED_OVERVIEW,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" model.getFilteredTransactionList().size()));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":7,"jamz903":8,"-":45,"elhy1999":1}},{"path":"src/main/java/unicash/logic/commands/GetTotalExpenditureCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_MONTH;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.time.Month;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * Calculates and returns the total expenditure of a user in a given month and (optionally) category.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" public static final String COMMAND_WORD \u003d \"get_total_expenditure\";","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" + \": Retrieves the total expenditure by month with optional filters for category.\\n\"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" + PREFIX_MONTH + \"MONTH \"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" + PREFIX_CATEGORY + \"CATEGORY\\n\";","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Your total expenditure in %1$s was %2$.2f\";","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" // TODO: Allow users to specify the year as well","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" private final int month;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private final Category categoryFilter;","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Creates GetTotalExpenditureCommand.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public GetTotalExpenditureCommand(int month, Category categoryFilter) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" this.month \u003d month;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" this.categoryFilter \u003d categoryFilter;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" if (month \u003c 1 || month \u003e 12) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" throw new CommandException(UniCashMessages.MESSAGE_INVALID_MONTH);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" model.updateFilteredTransactionList(transaction -\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" boolean isExpense \u003d transaction.getType().type.equals(TransactionType.EXPENSE);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" boolean isSameMonth \u003d transaction.getDateTime().getDateTime().getMonthValue() \u003d\u003d month;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" if (categoryFilter \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" // No category filter so just get all expenses of the month","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" return isExpense \u0026\u0026 isSameMonth;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" // If category filter exists and expense contains no category, it will not have the category","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" // Note: If the stream is empty then false is returned and the predicate is not evaluated.","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" boolean hasCategory \u003d transaction.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(categoryFilter));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" return isExpense \u0026\u0026 isSameMonth \u0026\u0026 hasCategory;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" });","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" var filteredList \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" double totalExpenditure \u003d filteredList","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" .stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" .reduce(0.0, (acc, cur) -\u003e acc + cur.getAmount().amount, Double::sum);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" // TODO: Capitalize maybe?","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" String monthString \u003d Month.of(month).name();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, monthString, totalExpenditure));","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" if (!(other instanceof GetTotalExpenditureCommand)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" GetTotalExpenditureCommand otherCommand \u003d (GetTotalExpenditureCommand) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" if (categoryFilter \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" return month \u003d\u003d otherCommand.month \u0026\u0026 otherCommand.categoryFilter \u003d\u003d null;","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" return month \u003d\u003d otherCommand.month \u0026\u0026 categoryFilter.equals(otherCommand.categoryFilter);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" .add(\"month\", month)","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" .add(\"categoryFilter\", categoryFilter)","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":87,"lipwei1808":5}},{"path":"src/main/java/unicash/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows UniCa$h usage instructions.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened UniCa$h help window.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":17}},{"path":"src/main/java/unicash/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"import java.util.logging.Level;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all transactions\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" private static final Logger logger \u003d Logger.getLogger(\"ListCommandLogger\");","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all transactions in UniCa$h. \\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"Example: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" + COMMAND_WORD;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":" public static final String MESSAGE_FAILURE \u003d \"Command not recognised. Try using the command \" + COMMAND_WORD","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":" + \" without any parameters instead.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":" logger.log(Level.INFO, \"Executing list command\");","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(Model.PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" logger.log(Level.INFO, \"List command executed successfully\");","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" if (other \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" // Nothing to compare so all ListCommand instances are equal to each other","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" return other instanceof ListCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":10,"jamz903":12,"-":18}},{"path":"src/main/java/unicash/logic/commands/ResetCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.util.SampleDataUtil.getSampleUniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" * Resets UniCa$h to initial state by replacing the current UniCa$h","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" * storage data and populating it with the default UniCa$h containing","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * typical transactions from {@code SampleDataUtil}.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ResetCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String COMMAND_WORD \u003d \"reset_unicash\";","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String MESSAGE_SUCCESS \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" \"UniCa$h has been successfully restored to its original state!\";","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" model.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"sp4ce-cowboy":26}},{"path":"src/main/java/unicash/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":16}},{"path":"src/main/java/unicash/logic/parser/AddTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses input arguments and creates a new AddTransactionCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"public class AddTransactionCommandParser implements Parser\u003cAddTransactionCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * and returns an AddTransactionCommand object for execution.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" public AddTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_CATEGORY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" // Check if mandatory fields (name, amount, type) are present","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_AMOUNT, PREFIX_TYPE)","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" AddTransactionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // Check for duplicates","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT,","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" PREFIX_DATETIME, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" Name name \u003d ParserUtil.parseTransactionName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amount \u003d ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" Type type \u003d ParserUtil.parseType(argMultimap.getValue(PREFIX_TYPE).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" String dateTimeString \u003d argMultimap.getValue(PREFIX_DATETIME).orElse(\"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" DateTime dateTime \u003d ParserUtil.parseDateTime(dateTimeString);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" String locationString \u003d argMultimap.getValue(PREFIX_LOCATION).orElse(\"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" Location location \u003d ParserUtil.parseLocation(locationString);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList uniqueCategoryList \u003d ParserUtil.parseCategories(argMultimap.getAllValues(PREFIX_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction \u003d new Transaction(name, type, amount, dateTime, location, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" return new AddTransactionCommand(transaction);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":70,"lipwei1808":6}},{"path":"src/main/java/unicash/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(UniCashMessages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":1,"-":74}},{"path":"src/main/java/unicash/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":147}},{"path":"src/main/java/unicash/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_AMOUNT \u003d new Prefix(\"amt/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_DATETIME \u003d new Prefix(\"dt/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_TYPE \u003d new Prefix(\"type/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_CATEGORY \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" public static final Prefix PREFIX_MONTH \u003d new Prefix(\"month/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"year/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":2,"lipwei1808":5,"-":9}},{"path":"src/main/java/unicash/logic/parser/DeleteTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses input arguments and creates a new DeleteTransactionCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandParser implements Parser\u003cDeleteTransactionCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" * DeleteTransactionCommand and returns a DeleteTransactionCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public DeleteTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" return new DeleteTransactionCommand(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTransactionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":30,"woojiahao":2}},{"path":"src/main/java/unicash/logic/parser/EditTransactionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":" * Parses input arguments and creates a new EditTransactionCommand object","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandParser implements Parser\u003cEditTransactionCommand\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":" * Parses the given {@code String} of arguments in the context of the EditTransactionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" * and returns an EditTransactionCommand object for execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" public EditTransactionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_CATEGORY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" Index index;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TYPE, PREFIX_AMOUNT, PREFIX_DATETIME,","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" PREFIX_LOCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.EditTransactionDescriptor editTransactionDescriptor \u003d new EditTransactionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":" .EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setName(","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseTransactionName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_TYPE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setType(","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseType(argMultimap.getValue(PREFIX_TYPE).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_AMOUNT).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setAmount(","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_DATETIME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setDateTime(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_DATETIME).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" editTransactionDescriptor.setLocation(","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" parseCategoriesForEdit(argMultimap.getAllValues(PREFIX_CATEGORY))","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" .ifPresent(editTransactionDescriptor::setCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" if (!editTransactionDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(EditTransactionCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"elhy1999"},"content":" return new EditTransactionCommand(index, editTransactionDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * Parses {@code Collection\u003cString\u003e categories} into a {@code Set\u003cCategory\u003e} if {@code categories} is non-empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" * If {@code categories} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" * {@code Set\u003cCategory\u003e} containing zero categories.","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" private Optional\u003cUniqueCategoryList\u003e parseCategoriesForEdit(Collection\u003cString\u003e categories) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categories);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (categories.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" Collection\u003cString\u003e categoriesSet \u003d categories.size() \u003d\u003d 1","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 categories.contains(\"\")","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" ? Collections.emptySet()","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" : categories;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" return Optional.of(ParserUtil.parseCategories(categoriesSet));","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":26,"woojiahao":7,"lipwei1808":25,"elhy1999":48}},{"path":"src/main/java/unicash/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":" return new FindCommand(new TransactionNameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"sp4ce-cowboy":5,"jamz903":1,"-":27}},{"path":"src/main/java/unicash/logic/parser/GetTotalExpenditureCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_MONTH;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" * Parses get_total_expenditure command to extract parameters.","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandParser implements Parser\u003cGetTotalExpenditureCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" public GetTotalExpenditureCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" // TODO: Support PREFIX_YEAR","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONTH, PREFIX_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" if (argMultimap.getValue(PREFIX_MONTH).isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GetTotalExpenditureCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_MONTH, PREFIX_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoryString \u003d argMultimap.getValue(PREFIX_CATEGORY).orElse(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Category category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" if (categoryString !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" category \u003d ParserUtil.parseCategory(categoryString);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" String monthString \u003d argMultimap.getValue(PREFIX_MONTH).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" int month \u003d Integer.parseInt(monthString);","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" return new GetTotalExpenditureCommand(month, category);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" throw new ParseException(\"Invalid month value, must be number!\");","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":10,"woojiahao":29,"lipwei1808":4}},{"path":"src/main/java/unicash/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":" * Parses input arguments for the list command.","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" public ListCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":" //list command must not have any additional arguments","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" if (!userInput.trim().isBlank()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":" throw new ParseException(ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" return new ListCommand();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":3,"jamz903":21}},{"path":"src/main/java/unicash/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":13}},{"path":"src/main/java/unicash/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private ParserUtil() {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public static Name parseTransactionName(String name) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String amount} into an {@code Amount}.","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code amount} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public static Amount parseAmount(String amount) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(amount);","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" String trimmedAmount \u003d amount.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" double castedAmount;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" castedAmount \u003d Double.parseDouble(trimmedAmount);","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" if (!Amount.isValidAmount(castedAmount)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" return new Amount(castedAmount);","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String type} into a {@code Type}.","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code type} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public static Type parseType(String type) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" String trimmedType \u003d type.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" if (!Type.isValidType(trimmedType)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" return new Type(trimmedType);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String datetime} into an {@code LocalDateTime}.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code dateTimeString} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" public static DateTime parseDateTime(String dateTimeString) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(dateTimeString);","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" String trimmedDateTime \u003d dateTimeString.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" if (!trimmedDateTime.isBlank() \u0026\u0026 !DateTime.isValidDateTime(trimmedDateTime)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(DateTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" return new DateTime(trimmedDateTime);","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String location} into a {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" public static Location parseLocation(String location) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" String trimmedLocation \u003d location.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" if (!trimmedLocation.isBlank() \u0026\u0026 !Location.isValidLocation(trimmedLocation)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" return new Location(trimmedLocation);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" * Parses a {@code String category} into a {@code Category}.","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" * @throws ParseException if the given {@code category} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" public static Category parseCategory(String category) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(category);","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" String trimmedCategory \u003d category.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" if (!Category.isValidCategory(trimmedCategory)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" return new Category(trimmedCategory);","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" * Parses {@code Collection\u003cString\u003e categories} into a {@code Set\u003cCategory\u003e}.","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" public static UniqueCategoryList parseCategories(Collection\u003cString\u003e categories) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" final List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" for (String categoryName : categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(parseCategory(categoryName));","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" if (!UniqueCategoryList.categoriesAreUnique(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(UniqueCategoryList.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" if (UniqueCategoryList.isMoreThanMax(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" throw new ParseException(UniqueCategoryList.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" return new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"sp4ce-cowboy":9,"woojiahao":6,"lipwei1808":108,"-":41}},{"path":"src/main/java/unicash/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * E.g. \u0027t/\u0027 in \u0027add James t/ friend\u0027.","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":41}},{"path":"src/main/java/unicash/logic/parser/UniCashParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ClearTransactionsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ResetCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashParser {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UniCashParser.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" final String commandWord \u003d matcher.group(\"commandWord\").toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" case AddTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" return new AddTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" case EditTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" return new EditTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" case DeleteTransactionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" return new DeleteTransactionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" case GetTotalExpenditureCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" return new GetTotalExpenditureCommandParser().parse(arguments);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" case ClearTransactionsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ClearTransactionsCommand();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" case ResetCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ResetCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ExitCommand();","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sp4ce-cowboy":29,"woojiahao":2,"lipwei1808":2,"jamz903":1,"-":59,"elhy1999":2}},{"path":"src/main/java/unicash/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a parse error encountered by a parser.","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ParseException extends IllegalValueException {","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public ParseException(String message) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public ParseException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":15}},{"path":"src/main/java/unicash/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * {@code Predicate} that always evaluates to true","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" Predicate\u003cTransaction\u003e PREDICATE_SHOW_ALL_TRANSACTIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" * Replaces the given transaction {@code target} with {@code editedTransaction}.","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":" * {@code target} must exist in the transaction list.","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" * The transaction identity of {@code editedTransaction} must not be the same as another existing transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" void setTransaction(Transaction target, Transaction editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" * Returns the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" * Sets the user prefs\u0027 UniCash file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" void setUniCashFilePath(Path uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" * Replaces UniCash data with the data in {@code uniCash}.","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" void setUniCash(ReadOnlyUniCash uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" * Returns UniCash","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" ReadOnlyUniCash getUniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * Deletes the given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" * The transaction must exist in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" void deleteTransaction(Transaction target);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" * Adds the given transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" void addTransaction(Transaction transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a transaction with the same identity as {@code transaction} exists in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" boolean hasTransaction(Transaction transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" * Returns an unmodifiable view of the filtered transaction list","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getFilteredTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" * Updates the filter of the filtered UniCash to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate);","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":20,"lipwei1808":32,"-":31,"elhy1999":7}},{"path":"src/main/java/unicash/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" private final FilteredList\u003cTransaction\u003e filteredTransactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Initializes a ModelManager with the given userPrefs and UniCash.","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" public ModelManager(ReadOnlyUniCash uniCash, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(uniCash, userPrefs);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" logger.fine(\"Initializing with UniCash: \" + uniCash + \" and user prefs \" + userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" this.uniCash \u003d new UniCash(uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" filteredTransactions \u003d new FilteredList\u003c\u003e(this.uniCash.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" this(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" return userPrefs.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path uniCashFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UniCash \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash(ReadOnlyUniCash uniCash) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" this.uniCash.resetData(uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(target, editedTransaction);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"elhy1999"},"content":" uniCash.setTransaction(target, editedTransaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" return uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" return uniCash.hasTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction(Transaction target) {","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" uniCash.removeTransaction(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Transaction List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable view of the list of {@code Transaction} backed by the internal list of","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-08"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" return filteredTransactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" public void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-08"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" filteredTransactions.setPredicate(predicate);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" return uniCash.equals(otherModelManager.uniCash)","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 filteredTransactions.equals(otherModelManager.filteredTransactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":16,"lipwei1808":64,"-":53,"elhy1999":6}},{"path":"src/main/java/unicash/model/ReadOnlyUniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public interface ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Returns an unmodifiable view of the transaction list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" ObservableList\u003cTransaction\u003e getTransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":14}},{"path":"src/main/java/unicash/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":1,"-":12}},{"path":"src/main/java/unicash/model/UniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Wraps all data in UniCash","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class UniCash implements ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private final TransactionList transactions;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * among constructors.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" transactions \u003d new TransactionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public UniCash() {}","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Creates an UniCash using the Transactions in the {@code toBeCopied}","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public UniCash(ReadOnlyUniCash toBeCopied) {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" this();","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of the Transaction list with {@code transactions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" * {@code transactions} must not contain any null.","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(List\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" this.transactions.setTransactions(transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" * Resets the existing data of this {@code UniCash} with {@code newData}.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public void resetData(ReadOnlyUniCash newData) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" setTransactions(newData.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" //// Transaction-level operations","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a Transaction with the same identity as {@code Transaction} exists in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return transactions.contains(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * Adds a transaction to UniCash","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction p) {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" transactions.add(p);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" * Replaces the given Transaction {@code target} in the list with {@code editedTransaction}.","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" transactions.setTransaction(target, editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Removes {@code key} from this {@code UniCash}.","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * {@code key} must exist in UniCash.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void removeTransaction(Transaction key) {","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" transactions.remove(key);","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" //// util methods","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" .add(\"transactions\", transactions)","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" return transactions.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof UniCash)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" UniCash otherUniCash \u003d (UniCash) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" return transactions.equals(otherUniCash.transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" return transactions.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":121}},{"path":"src/main/java/unicash/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" private Path uniCashFilePath \u003d Paths.get(\"data\", \"unicash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public UserPrefs() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" setUniCashFilePath(newUserPrefs.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" return uniCashFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path uniCashFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" this.uniCashFilePath \u003d uniCashFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" \u0026\u0026 uniCashFilePath.equals(otherUserPrefs.uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" return Objects.hash(guiSettings, uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" sb.append(\"\\nLocal data file location : \" + uniCashFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":12,"-":75}},{"path":"src/main/java/unicash/model/budget/Budget.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * Represents a Budget in UniCash.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"public class Budget {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" private final Amount amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Interval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Constructs a Budget with all fields populated.","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Budget(Amount amount, Interval interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public Amount getAmount() {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" return amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public Interval getInterval() {","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return Objects.hash(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Returns true if both budgets have the same data fields.","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Budget)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" Budget otherBudget \u003d (Budget) other;","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" return amount.equals(otherBudget.amount)","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 interval.equals(otherBudget.interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" .add(\"interval\", interval)","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":67}},{"path":"src/main/java/unicash/model/budget/Interval.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import unicash.commons.enums.BudgetInterval;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Represents a Budget\u0027s interval.","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class Interval {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String.format(\"Transaction must be of the following intervals: %s\", BudgetInterval.listBudgetIntervals());","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public final BudgetInterval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Interval}.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param interval A valid interval.","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Interval(String interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" checkArgument(isValidInterval(interval), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d BudgetInterval.parseInterval(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid interval for a transaction.","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidInterval(String test) {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return BudgetInterval.isValidBudgetInterval(test);","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return interval.hashCode();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Interval)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return interval.equals(((Interval) other).interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return interval.getOriginalString();","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":59}},{"path":"src/main/java/unicash/model/category/Category.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Category in UnICash.","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: immutable; categoryName is valid as declared in {@link #isValidCategory(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class Category {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" \"Category names should be alphanumeric and up to 15 characters long.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" // Category can only be up to 15 characters long","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}{1,15}$\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public final String category;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Category}.","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * @param category A valid category name.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public Category(String category) {","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(category);","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidCategory(category), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid category.","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidCategory(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Category)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" Category otherCategory \u003d (Category) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return category.equals(otherCategory.category);","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return category.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" return category;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":5,"lipwei1808":58}},{"path":"src/main/java/unicash/model/category/UniqueCategoryList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.CategoryNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.DuplicateCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.MaxCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * A list of categories that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * A category is considered unique by comparing using {@code Category#equals(Category)}. As such, adding and updating of","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * categories uses Category#equals(Category) for equality so as to ensure that the category being added or updated is","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * unique in terms of identity in the UniqueCategoryList.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"public class UniqueCategoryList implements Iterable\u003cCategory\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" \"There should only be a maximum of 5 unique categories.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public static final int MAX_CATEGORIES \u003d 5;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cCategory\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cCategory\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Default constructor to create an empty category list.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList() {}","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Constructs a category list from a List of {@code Category}.","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param categoryList the category list to be constructed into.","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList(List\u003cCategory\u003e categoryList) {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (!categoriesAreUnique(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (isMoreThanMax(categoryList)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code true} if the list contains an equivalent category as the given argument.","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" public boolean contains(Category toCheck) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" * Returns true is the storage is full, false otherwise.","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" public boolean isMax() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return internalList.size() \u003d\u003d MAX_CATEGORIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * Adds a category to the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" * The category must not already exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" public void add(Category toAdd) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" if (isMax()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Replaces the category {@code target} in the list with {@code editedCategory}.","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" * The category identity of {@code editedCategory} must not be the same as another existing category in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" public void setCategory(Category target, Category editedCategory) {","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(target, editedCategory);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" throw new CategoryNotFoundException();","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (!target.equals(editedCategory) \u0026\u0026 contains(editedCategory)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" internalList.set(index, editedCategory);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" * Removes the equivalent category from the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" * The category exist in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" public void remove(Category toRemove) {","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" throw new CategoryNotFoundException();","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code categories}.","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(UniqueCategoryList replacement) {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code categories}.","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" * {@code categories} must not contain duplicate categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" public void setCategories(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" requireAllNonNull(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" if (!categoriesAreUnique(categories)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" throw new DuplicateCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" if (isMoreThanMax(categories)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" throw new MaxCategoryException();","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cCategory\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" public Iterator\u003cCategory\u003e iterator() {","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" return other \u003d\u003d this","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" || (other instanceof UniqueCategoryList","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 new HashSet\u003c\u003e(internalList).equals(new HashSet\u003c\u003e(((UniqueCategoryList) other).internalList)));","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given list of categories is less than the maximum allowed categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" public static boolean isMoreThanMax(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" return categories.size() \u003e MAX_CATEGORIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" * Returns {@code true} if {@code categories} contains only unique categories.","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" public static boolean categoriesAreUnique(List\u003cCategory\u003e categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" HashSet\u003cCategory\u003e set \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" for (Category category : categories) {","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" if (set.contains(category)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":" set.add(category);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":189}},{"path":"src/main/java/unicash/model/category/exceptions/CategoryNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation is unable to find the specified category.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class CategoryNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Constructs a CategoryNotFoundException.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public CategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"Category not found\");","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/unicash/model/category/exceptions/DuplicateCategoryException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation will result in duplicate Categories (Categories are considered duplicates","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" * if they have the same identity).","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class DuplicateCategoryException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Creates a new DuplicateTagException","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public DuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" super(\"Operation would result in duplicate categories\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":14}},{"path":"src/main/java/unicash/model/category/exceptions/MaxCategoryException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Represents an error when the maximum number of categories has been added for","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" * a transaction.","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class MaxCategoryException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Constructs a MaxCategoryException.","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public MaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" super(\"Maximum number of categories added.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":14}},{"path":"src/main/java/unicash/model/commons/Amount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.commons;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s amount.","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class Amount {","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" \"Amounts must be positive.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public final double amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param amount A valid amount.","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public Amount(double amount) {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidAmount(amount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given amount is a non-negative value.","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidAmount(double amount) {","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" return amount \u003e\u003d 0.00;","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return Double.hashCode(amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Amount)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return amount \u003d\u003d ((Amount) other).amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns a rounded two-decimal precision String version of an {@code Amount}.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String amountToDecimalString(Amount amt) {","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" double roundedAmount \u003d Math.round(amt.amount * 100.0) / 100.0;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" String formattedNumberString \u003d String.format(\"%.2f\", roundedAmount);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" return formattedNumberString;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return Double.toString(amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":12,"lipwei1808":52}},{"path":"src/main/java/unicash/model/transaction/DateTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.time.Clock;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s dateTime.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class DateTime {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":" public static final String DATETIME_PATTERN_ONE \u003d \"dd-MM-uuuu HH:mm\";","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" public static final String DATETIME_PATTERN_TWO \u003d \"uuuu-MM-dd HH:mm\";","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"jamz903"},"content":" public static final String DATETIME_STORAGE_PATTERN \u003d \"dd MMM uuuu HH:mm\";","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" \"DateTime should be in either of the following formats: \" + \"\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" + \"1. \" + DATETIME_PATTERN_ONE + \"\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"jamz903"},"content":" + \"2. \" + DATETIME_PATTERN_TWO + \"\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"jamz903"},"content":" + \"3. \" + DATETIME_STORAGE_PATTERN + \"\\n\";","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"jamz903"},"content":" //accept date in multiple formats","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"jamz903"},"content":" private static final DateTimeFormatterBuilder DATETIME_FORMATTER_BUILDER \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"jamz903"},"content":" new DateTimeFormatterBuilder().append(DateTimeFormatter.ofPattern(\"[dd-MM-uuuu HH:mm]\"","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" + \"[uuuu-MM-dd HH:mm]\"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":" + \"[dd MMM uuuu HH:mm]\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jamz903"},"content":" private static final DateTimeFormatter DATETIME_FORMATTER \u003d DATETIME_FORMATTER_BUILDER.toFormatter();","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":" private final String originalDateTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code DateTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Defaults to current date if not provided.","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime A valid date time.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public DateTime(String dateTime) {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(dateTime);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" init(dateTime, Clock.systemDefaultZone());","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" originalDateTime \u003d dateTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code DateTime} with a Clock.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" * Defaults to current date if not provided.","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" * Used for mocking the current Clock used to generate LocalDateTime.now().","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime A valid date time.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" * @param clock A clock object to configure current time settings.","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public DateTime(String dateTime, Clock clock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(dateTime, clock);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" init(dateTime, clock);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"jamz903"},"content":" originalDateTime \u003d dateTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" * Initialises the DateTime object when called by constructors.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" * Sets the dateTime based on given {@code dateTime} and {@code clock}.","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime the dateTime string to be set.","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * @param clock the clock object of the system.","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" private void init(String dateTime, Clock clock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" if (dateTime.isBlank()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d LocalDateTime.now(clock);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" return;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidDateTime(dateTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTime, DATETIME_FORMATTER);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" return dateTime;","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"jamz903"},"content":" * Helper method to return original text string","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"jamz903"},"content":" * passed by the user.","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * @return text string of the LocalDateTime object","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"jamz903"},"content":" public String inputString() {","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"jamz903"},"content":" return originalDateTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid dateTime.","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidDateTime(String dateString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime.parse(dateString, DATETIME_FORMATTER.withResolverStyle(ResolverStyle.STRICT));","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"jamz903"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_STORAGE_PATTERN));","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof DateTime)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" DateTime otherDateTime \u003d (DateTime) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" return Objects.equals(this.dateTime, otherDateTime.dateTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" return this.dateTime.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":6,"lipwei1808":99,"jamz903":23}},{"path":"src/main/java/unicash/model/transaction/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s location.","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public class Location {","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" \"Locations should only contain alphanumeric characters, spaces, (, ), _, -, #, \u0026, ., and \u0027,\u0027, \"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" /*","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * The first character of the location must not be a whitespace,","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}_\u0026#.,()-][\\\\p{Alnum} _\u0026#.,()-]*\";","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public final String location;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Location}.","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * @param location A valid location.","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public Location(String location) {","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" if (location.isBlank()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d \"-\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid location.","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return location;","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return location.equals(otherLocation.location);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" return location.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":65}},{"path":"src/main/java/unicash/model/transaction/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s name.","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * The first character of the transaction must not be a whitespace,","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":2,"-":61}},{"path":"src/main/java/unicash/model/transaction/Transaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction in UniCash.","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class Transaction {","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Name name;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private final Amount amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" private final DateTime dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" private final Location location;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" private final Type type;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private final UniqueCategoryList categories \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Constructs a Transaction with all fields populated.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public Transaction(","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" Name name,","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Type type,","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" Amount amount,","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" Location location,","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categories","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" ) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(name, type, amount, categories, dateTime, location);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" this.categories.setCategories(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public Name getName() {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" return name;","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public Amount getAmount() {","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" return amount;","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public DateTime getDateTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return dateTime;","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return location;","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public Type getType() {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" return type;","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" public UniqueCategoryList getCategories() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" return Objects.hash(name, amount, dateTime, location, type, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Returns true if both transactions have the same data fields.","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" * This defines a stronger notion of equality between two transactions.","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Transaction)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" Transaction otherTransaction \u003d (Transaction) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" return name.equals(otherTransaction.name)","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 type.equals(otherTransaction.type)","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 amount.equals(otherTransaction.amount)","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 categories.equals(otherTransaction.categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 dateTime.equals(otherTransaction.dateTime)","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" \u0026\u0026 location.equals(otherTransaction.location);","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" .add(\"type\", type)","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" .add(\"dateTime\", dateTime)","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" .add(\"location\", location)","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" .add(\"categories\", categories)","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" .toString();","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":103,"elhy1999":1}},{"path":"src/main/java/unicash/model/transaction/TransactionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * A list of Transactions that does not allow nulls.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class TransactionList implements Iterable\u003cTransaction\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Returns true if the list contains an equivalent Transaction as the given argument.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public boolean contains(Transaction toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" * Adds a Transaction to the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void add(Transaction toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" * Replaces the Transaction {@code target} in the list with {@code editedTransaction}.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(target, editedTransaction);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" throw new TransactionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" internalList.set(index, editedTransaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" * Removes the equivalent Transaction from the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" * The Transaction must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void remove(Transaction toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" throw new TransactionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code replacement}","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * @param replacement the TransactionList to replace with","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(TransactionList replacement) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Replaces the contents of this list with {@code transactions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" * {@code transactions} must not contain null.","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions(List\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" requireAllNonNull(transactions);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" internalList.setAll(transactions);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" public Iterator\u003cTransaction\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof TransactionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" TransactionList otherTransactionList \u003d (TransactionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" return internalList.equals(otherTransactionList.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"lipwei1808":114}},{"path":"src/main/java/unicash/model/transaction/TransactionNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" * Tests that a {@code Transactions}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionNameContainsKeywordsPredicate","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" implements Predicate\u003cTransaction\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public TransactionNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean test(Transaction transaction) {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" transaction.getName().fullName, keyword));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" if (!(other instanceof TransactionNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" (TransactionNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":47}},{"path":"src/main/java/unicash/model/transaction/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Represents a Transaction\u0027s type.","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class Type {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String.format(\"Transaction must be of the following types: %s\", TransactionType.listTransactionTypes());","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public final TransactionType type;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code Type}.","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param type A valid type.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public Type(String type) {","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" checkArgument(isValidType(type), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d TransactionType.parseType(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" * Returns true if a given string is a valid type for a transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return TransactionType.isValidTransactionType(test);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return type.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (!(other instanceof Type)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return type.equals(((Type) other).type);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return type.getOriginalString();","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":55}},{"path":"src/main/java/unicash/model/transaction/exceptions/TransactionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals that the operation is unable to find the specified transaction.","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class TransactionNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":1,"lipwei1808":7}},{"path":"src/main/java/unicash/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" * Contains utility methods for populating {@code UniCash} with sample data.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * This private constructor is declared to support a constructor initialisation","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * by code coverage.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private SampleDataUtil() {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public static Transaction[] getSampleTransactions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" return new Transaction[]{","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" new Transaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Lunch at McDonalds\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(17.40),","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"15-09-2023 11:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Clementi Mall\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" ),","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" new Transaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Buy clothes\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(109.00),","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 18:30\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Uniqlo Bugis\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"shopping\")","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" ),","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" new Transaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Intern allowance september\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" new Type(\"income\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(1800.00),","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 00:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" new Location(\"\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"salary\")","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" ),","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" new Transaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" new Name(\"Evening with friends\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" new Type(\"expense\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" new Amount(49.50),","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" new DateTime(\"17-09-2023 00:00\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" new Location(\"Clarke Quay\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" getCategoryList(\"social\")","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" };","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" public static ReadOnlyUniCash getSampleUniCash() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" UniCash sample \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" for (var transaction : getSampleTransactions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" sample.addTransaction(transaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" return sample;","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" * Returns a category set containing the list of strings given.","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" public static UniqueCategoryList getCategoryList(String... strings) {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d Arrays.stream(strings)","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" .map(Category::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" return new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"sp4ce-cowboy":33,"woojiahao":20,"lipwei1808":25,"-":10}},{"path":"src/main/java/unicash/storage/JsonAdaptedCategory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" * Jackson-friendly version of {@link Category}.","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"class JsonAdaptedCategory {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private final String category;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Constructs a {@code JsonAdaptedCategory} with the given {@code categoryName}.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" @JsonCreator","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public JsonAdaptedCategory(String category) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public JsonAdaptedCategory(Category source) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" category \u003d source.category;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" @JsonValue","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public String getCategoryName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" return category;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Category} object.","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted category.","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public Category toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" if (!Category.isValidCategory(category)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" throw new IllegalValueException(Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" return new Category(category);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":3,"lipwei1808":45}},{"path":"src/main/java/unicash/storage/JsonAdaptedTransaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" * Jackson-friendly version of {@link Transaction}.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedTransaction {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Transaction\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private final String name;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private final double amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" private final String dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private final String location;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" private final String type;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" private final List\u003cJsonAdaptedCategory\u003e categories \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonAdaptedTransaction} with the given transaction details.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" public JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"amount\") double amount,","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"dateTime\") String dateTime,","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"location\") String location,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @JsonProperty(\"type\") String type,","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @JsonProperty(\"categories\") List\u003cJsonAdaptedCategory\u003e categories","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" this.amount \u003d amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" if (categories !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" this.categories.addAll(categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonAdaptedTransaction} with the given transaction details.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" public JsonAdaptedTransaction(Transaction source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" amount \u003d source.getAmount().amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" dateTime \u003d source.getDateTime().inputString();","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" location \u003d source.getLocation().location;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" type \u003d source.getType().type.getOriginalString();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" categories.addAll(source.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" .stream()","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" .map(JsonAdaptedCategory::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" * Converts this Jackson-friendly adapted transaction object into the model\u0027s {@code Transaction} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted format.","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" public Transaction toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(Name.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" if (!Amount.isValidAmount(amount)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" final Amount modelAmount \u003d new Amount(amount);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" if (dateTime \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(DateTime.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" if (!DateTime.isValidDateTime(dateTime)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(DateTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" final DateTime modelDateTime \u003d new DateTime(dateTime);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" if (location !\u003d null \u0026\u0026 !Location.isValidLocation(location)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" final Location modelLocation \u003d new Location(location);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(formatMissingFieldMessage(Type.class));","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" if (!Type.isValidType(type)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" final Type modelType \u003d new Type(type);","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" final List\u003cCategory\u003e transactionCategories \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" for (JsonAdaptedCategory category : categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" transactionCategories.add(category.toModelType());","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" final UniqueCategoryList modelCategories \u003d new UniqueCategoryList(transactionCategories);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(modelName, modelType, modelAmount, modelDateTime, modelLocation, modelCategories);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" * Pretty formats missing field message with the class name.","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" private \u003cT\u003e String formatMissingFieldMessage(Class\u003cT\u003e fieldName) {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" return String.format(MISSING_FIELD_MESSAGE_FORMAT, fieldName.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":95,"lipwei1808":21,"jamz903":1}},{"path":"src/main/java/unicash/storage/JsonSerializableUniCash.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * An Immutable UniCash that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"@JsonRootName(value \u003d \"unicash\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"class JsonSerializableUniCash {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public static final String MESSAGE_DUPLICATE_TRANSACTION \u003d \"Transaction list contains duplicate transaction(s).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" private final List\u003cJsonAdaptedTransaction\u003e transactions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" * Constructs a {@code JsonSerializableUniCash} with the given transactions.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public JsonSerializableUniCash(","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @JsonProperty(\"transactions\") List\u003cJsonAdaptedTransaction\u003e transactions","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" this.transactions.addAll(transactions);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * Converts a given {@code ReadOnlyUniCash} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableUniCash}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public JsonSerializableUniCash(ReadOnlyUniCash source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" transactions.addAll(","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" source.getTransactionList()","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" .stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" .map(JsonAdaptedTransaction::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" .collect(Collectors.toList())","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" * Converts this transaction list into the model\u0027s {@code UniCash} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" public UniCash toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" UniCash uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" for (var jsonAdaptedTransaction : transactions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" Transaction transaction \u003d jsonAdaptedTransaction.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" if (uniCash.hasTransaction(transaction)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TRANSACTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" return uniCash;","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":62}},{"path":"src/main/java/unicash/storage/JsonUniCashStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.FileUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" * A class to access UniCash data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class JsonUniCashStorage implements UniCashStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUniCashStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" private final Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public JsonUniCashStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" return readUniCash(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" * Similar to {@link #readUniCash()}.","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" var jsonUniCash \u003d JsonUtil.readJsonFile(filePath, JsonSerializableUniCash.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" if (jsonUniCash.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" return Optional.of(jsonUniCash.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" saveUniCash(uniCash, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" * Similar to {@link #saveUniCash(ReadOnlyUniCash)}.","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" requireNonNull(uniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" JsonUtil.saveJsonFile(new JsonSerializableUniCash(uniCash), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":72}},{"path":"src/main/java/unicash/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":42}},{"path":"src/main/java/unicash/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"public interface Storage extends UniCashStorage, UserPrefsStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":4,"-":23}},{"path":"src/main/java/unicash/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" * Manages storage of UniCash data in local storage.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" private final UniCashStorage uniCashStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private final UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" * Creates a {@code StorageManager} with the given {@code UniCashStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public StorageManager(UniCashStorage uniCashStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" this.uniCashStorage \u003d uniCashStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UniCash methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" return uniCashStorage.getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" return readUniCash(uniCashStorage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" return uniCashStorage.readUniCash(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" saveUniCash(uniCash, uniCashStorage.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" uniCashStorage.saveUniCash(uniCash, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":17,"-":55}},{"path":"src/main/java/unicash/storage/UniCashStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" * Represents a storage for {@link UniCash}.","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"public interface UniCashStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" Path getUniCashFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns UniCash data as a {@link ReadOnlyUniCash}.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" * @see #getUniCashFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" Optional\u003cReadOnlyUniCash\u003e readUniCash(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" * Saves the given {@link ReadOnlyUniCash} to the storage.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" * @param uniCash cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" * @see #saveUniCash(ReadOnlyUniCash)","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" void saveUniCash(ReadOnlyUniCash uniCash, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":41}},{"path":"src/main/java/unicash/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" * Represents a storage for {@link UserPrefs}.","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" * Saves the given {@link ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":30}},{"path":"src/main/java/unicash/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":80}},{"path":"src/main/java/unicash/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" * Controller for the pop-up help window","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_URL \u003d \"https://ay2324s1-cs2103-t16-3.github.io/tp/\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USER_GUIDE_URL;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.fine(\"Showing UniCash help page.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" url.putString(USER_GUIDE_URL);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":9,"-":95}},{"path":"src/main/java/unicash/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.awt.Desktop;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.File;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.nio.file.StandardCopyOption;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME_PREFIX \u003d \"userguide_local\";","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME_SUFFIX \u003d \".pdf\";","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String USER_GUIDE_NAME \u003d USER_GUIDE_NAME_PREFIX + USER_GUIDE_NAME_SUFFIX;","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String PATH_TO_USER_GUIDE \u003d \"/documents/\" + USER_GUIDE_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FILE_ERROR_MESSAGE \u003d \"A FILE ERROR OCCURRED.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String UNKNOWN_ERROR_MESSAGE \u003d \"AN UNKNOWN ERROR OCCURRED.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" private TransactionListPanel transactionListPanel;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" private MenuItem userGuideMenuItem;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" private StackPane transactionListPanelPlaceholder;","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" setAccelerator(userGuideMenuItem, KeyCombination.valueOf(\"F2\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" transactionListPanel \u003d new TransactionListPanel(logic.getFilteredTransactionList());","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" transactionListPanelPlaceholder.getChildren().add(transactionListPanel.getRoot());","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getUniCashFilePath());","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":" * @see Logic#execute(String)","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"sp4ce-cowboy"},"content":" * Opens the local user guide.","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"sp4ce-cowboy"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"sp4ce-cowboy"},"content":" private void handleOpenUserGuide() {","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"sp4ce-cowboy"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"sp4ce-cowboy"},"content":" // Path to the resource inside the jar file","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"sp4ce-cowboy"},"content":" InputStream inputStream \u003d getClass().getResourceAsStream(PATH_TO_USER_GUIDE);","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"sp4ce-cowboy"},"content":" File tempFile \u003d File.createTempFile(USER_GUIDE_NAME_PREFIX, USER_GUIDE_NAME_SUFFIX);","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"sp4ce-cowboy"},"content":" tempFile.deleteOnExit(); // The user guide will be deleted upon JVM exit","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"sp4ce-cowboy"},"content":" Files.copy(inputStream, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING);","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"sp4ce-cowboy"},"content":" Desktop.getDesktop().open(tempFile);","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"sp4ce-cowboy"},"content":" System.err.println(FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.severe(FILE_ERROR_MESSAGE + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"sp4ce-cowboy"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"sp4ce-cowboy"},"content":" System.err.println(UNKNOWN_ERROR_MESSAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"sp4ce-cowboy"},"content":" logger.severe(UNKNOWN_ERROR_MESSAGE + StringUtil.getDetails(ex));","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":52,"woojiahao":1,"lipwei1808":2,"-":179}},{"path":"src/main/java/unicash/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":27}},{"path":"src/main/java/unicash/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" * indicating the current Data Source.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" saveLocationStatus.setText(\"Data source -\u003e \" + Paths.get(\".\").resolve(saveLocation));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":25}},{"path":"src/main/java/unicash/ui/StyleSheet.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" * A class to consolidate and standardize all text styling involved in FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" * Controller classes.","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"public class StyleSheet {","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" // Text colour filling","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_RED \u003d \"-fx-text-fill: red\";","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_GREEN \u003d \"-fx-text-fill: green\";","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_BLACK \u003d \"-fx-text-fill: black\";","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TEXT_FILL_WHITE \u003d \"-fx-text-fill: white\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" // Font styling","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_BOLD \u003d \"-fx-font-weight: bold\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_REGULAR \u003d \"-fx-font-weight: normal\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String FONT_STYLE_ITALIC \u003d \"-fx-font-style: italic\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" // Custom text formatting","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_ID_SEPARATOR \u003d \". \";","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":23}},{"path":"src/main/java/unicash/ui/TransactionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.FONT_STYLE_BOLD;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_BLACK;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_GREEN;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TEXT_FILL_RED;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.ui.StyleSheet.TRANSACTION_ID_SEPARATOR;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * A UI component that displays information of a {@code Transaction}.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"public class TransactionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String FXML \u003d \"TransactionCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public final Transaction transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" private Label name;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private Label id;","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private Label amount;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" private Label dateTime;","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" @FXML","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" private Label transactionLocation;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"jamz903"},"content":" @FXML","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"jamz903"},"content":" private Label categories;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" * Creates a {@code TransactionCard} with the given {@code Transaction} and index to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" * The transaction\u0027s polarity (i.e. direction) depends on whether it\u0027s an expense or an income.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" * All transactions are assumed to be made in dollars.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" public TransactionCard(Transaction transaction, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" super(FXML);","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" this.transaction \u003d transaction;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" this.idStyleFormatter(displayedIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" this.nameStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" this.dateTimeStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" this.transactionLocationStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" this.amountStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" this.categoriesStyleFormatter();","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the name label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the name of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.name;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the ID label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the ID of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getId() {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.id;","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the amount of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the amount of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getAmount() {","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.amount;","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the date and time label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the date and time of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getDateTime() {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.dateTime;","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the location label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the location of the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getTransactionLocation() {","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.transactionLocation;","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the categories label of the transaction card.","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" * @return A Label containing the categories associated with the transaction.","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" public Label getCategories() {","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" return this.categories;","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" * For better presentation of the transaction amounts, instead of using the","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" * toString method of the transaction amount directly, a dollar symbol is prepended","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" * to the transaction, along with the polarity of the transaction depending on whether","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" * it is an income or expense type, Accordingly, text fill styles are also used to","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":" * set the color of the amount Label text based on their type.","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" private void amountStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionAmountWithDecimal \u003d Amount.amountToDecimalString(transaction.getAmount());","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" String dollarTransactionWithDecimal \u003d \"$\" + transactionAmountWithDecimal;","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionType \u003d transaction.getType().toString().toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionPolarity \u003d transactionType.equals(\"expense\") ? \"-\" : \"+\";","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionCardString \u003d transactionPolarity + dollarTransactionWithDecimal;","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setText(transactionCardString);","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" if (transactionPolarity.equals(\"-\")) { // Set color to red or green depending on amt","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_RED);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (transactionPolarity.equals(\"+\")) {","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_GREEN);","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" amount.setStyle(TEXT_FILL_BLACK);","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" * For better presentation of the transaction category, instead of using the","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":" * toString method of the UniqueCategoryList directly, the leading and trailing","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" * square brackets are trimmed, and prepended with a \"hashtag\".","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" private void categoriesStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoriesToString \u003d transaction.getCategories().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" int categoriesToStringLength \u003d categoriesToString.length();","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" String trimmedCategoriesToString \u003d categoriesToString","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"sp4ce-cowboy"},"content":" .substring(1, categoriesToStringLength - 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":" String categoriesToStringWithHashTag \u003d \"#\" + trimmedCategoriesToString;","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.setText(categoriesToStringWithHashTag);","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.setStyle(FONT_STYLE_BOLD);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize transactionLocation label style","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"sp4ce-cowboy"},"content":" private void transactionLocationStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":" String transactionLocationToString \u003d transaction.getLocation().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"sp4ce-cowboy"},"content":" transactionLocation.setText(transactionLocationToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize dateTime label style","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"sp4ce-cowboy"},"content":" private void dateTimeStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"sp4ce-cowboy"},"content":" String dateTimeToString \u003d transaction.getDateTime().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" dateTime.setText(dateTimeToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize name label style","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"sp4ce-cowboy"},"content":" private void nameStyleFormatter() {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"sp4ce-cowboy"},"content":" String nameToString \u003d transaction.getName().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"sp4ce-cowboy"},"content":" name.setText(nameToString);","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"sp4ce-cowboy"},"content":" // TODO: Customize id label style","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"sp4ce-cowboy"},"content":" private void idStyleFormatter(int displayedIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" String idToString \u003d String.valueOf(displayedIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"sp4ce-cowboy"},"content":" String idWithSeparator \u003d idToString + TRANSACTION_ID_SEPARATOR;","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"sp4ce-cowboy"},"content":" id.setText(idWithSeparator);","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":144,"lipwei1808":41,"jamz903":7}},{"path":"src/main/java/unicash/ui/TransactionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class TransactionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String FXML \u003d \"TransactionListPanel.fxml\";","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TransactionListPanel.class);","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" @FXML","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private ListView\u003cTransaction\u003e transactionListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code TransactionListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public TransactionListPanel(ObservableList\u003cTransaction\u003e transactionList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" super(FXML);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" transactionListView.setItems(transactionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" transactionListView.setCellFactory(listView -\u003e new TransactionListViewCell());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Transaction} using a {@code TransactionCard}.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" class TransactionListViewCell extends ListCell\u003cTransaction\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" protected void updateItem(Transaction transaction, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" super.updateItem(transaction, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" if (empty || transaction \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" setText(null);","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" setGraphic(new TransactionCard(transaction, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"lipwei1808":45}},{"path":"src/main/java/unicash/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * API of UI component","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /** Starts the UI (and the App). */","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":12}},{"path":"src/main/java/unicash/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.StringUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.Logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String ICON_APPLICATION \u003d \"/images/wallet_icon.png\";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":82}},{"path":"src/main/java/unicash/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"jamz903"},"content":" background-color: #F3F3F3; /* Used in the default.html file */","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" -fx-base: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" -fx-control-inner-background: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 44%);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 80%);","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#C3DAEE, 24%);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":".cell_small_label_bold {","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":143,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"jamz903"},"content":"/* outer box */","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":148,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 10%);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":".pane-with-black-border {","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 25%);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"jamz903"},"content":" -fx-border-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":198,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 30%);","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 50%);","lastModifiedDate":"2023-10-17"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":235,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"jamz903"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"jamz903"},"content":" -fx-border-color: black, black;","lastModifiedDate":"2023-10-17"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":261,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 25%);","lastModifiedDate":"2023-10-17"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"jamz903"},"content":" -fx-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":295,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 20%);","lastModifiedDate":"2023-10-17"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#F3F3F3, 50%);","lastModifiedDate":"2023-10-17"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"jamz903"},"content":" -fx-background-color: derive(#979191, 89%);","lastModifiedDate":"2023-10-17"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"jamz903"},"content":" -fx-border-insets: 3;","lastModifiedDate":"2023-10-17"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: #575757;","lastModifiedDate":"2023-10-17"},{"lineNumber":342,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"jamz903"},"content":" -fx-background-color: transparent, derive(#F3F3F3, 90%), transparent, derive(#F3F3F3, 90%);","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":351,"author":{"gitId":"jamz903"},"content":" -fx-border-color: transparent, derive(#979191, 75%), transparent, derive(#979191, 75%);","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"jamz903"},"content":" -fx-border-width: 1;","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":369,"author":{"gitId":"jamz903"},"content":"#categories {","lastModifiedDate":"2023-10-17"},{"lineNumber":370,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":371,"author":{"gitId":"jamz903"},"content":" -fx-label-padding: 2 3 2 3;","lastModifiedDate":"2023-10-17"},{"lineNumber":372,"author":{"gitId":"jamz903"},"content":" -fx-background-color: #FFD43E;","lastModifiedDate":"2023-10-17"},{"lineNumber":373,"author":{"gitId":"jamz903"},"content":" -fx-background-radius: 4;","lastModifiedDate":"2023-10-17"},{"lineNumber":374,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":375,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-19"},{"lineNumber":376,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":377,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":378,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":379,"author":{"gitId":"sp4ce-cowboy"},"content":".bold-label {","lastModifiedDate":"2023-10-18"},{"lineNumber":380,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-18"},{"lineNumber":381,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":382,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":383,"author":{"gitId":"sp4ce-cowboy"},"content":".normal-label {","lastModifiedDate":"2023-10-19"},{"lineNumber":384,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: normal;","lastModifiedDate":"2023-10-19"},{"lineNumber":385,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":386,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":387,"author":{"gitId":"sp4ce-cowboy"},"content":".bold-label-menubar {","lastModifiedDate":"2023-10-19"},{"lineNumber":388,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":389,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":390,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":391,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":392,"author":{"gitId":"sp4ce-cowboy"},"content":".status-bar-color {","lastModifiedDate":"2023-10-19"},{"lineNumber":393,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":394,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":395,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":396,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":397,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 10pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":398,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":399,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":400,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-name {","lastModifiedDate":"2023-10-19"},{"lineNumber":401,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":402,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-19"},{"lineNumber":403,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":404,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":405,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":406,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":407,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-id {","lastModifiedDate":"2023-10-19"},{"lineNumber":408,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":409,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-19"},{"lineNumber":410,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":411,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":412,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":413,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":414,"author":{"gitId":"sp4ce-cowboy"},"content":".transaction-subtitle {","lastModifiedDate":"2023-10-19"},{"lineNumber":415,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-19"},{"lineNumber":416,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2023-10-19"},{"lineNumber":417,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2023-10-19"},{"lineNumber":418,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-19"},{"lineNumber":419,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":420,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":421,"author":{"gitId":"sp4ce-cowboy"},"content":".big-money {","lastModifiedDate":"2023-10-19"},{"lineNumber":422,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":423,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":424,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":425,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":426,"author":{"gitId":"sp4ce-cowboy"},"content":".positive-amount {","lastModifiedDate":"2023-10-19"},{"lineNumber":427,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: green;","lastModifiedDate":"2023-10-19"},{"lineNumber":428,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":429,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":430,"author":{"gitId":"sp4ce-cowboy"},"content":".negative-amount {","lastModifiedDate":"2023-10-19"},{"lineNumber":431,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: red;","lastModifiedDate":"2023-10-19"},{"lineNumber":432,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":83,"jamz903":57,"-":292}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"jamz903"},"content":" -fx-background: #F3F3F3;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" -fx-border-color: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: #2f2f2f; // Your desired color","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar .menu-button {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: transparent; // This is to ensure individual menu items don\u0027t override the MenuBar color","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: white; // Change the text color if needed","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":".my-custom-menubar .menu-button:hover {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: #3f3f3f; // Hover color for individual menu items","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":12,"jamz903":3,"-":18}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-font-family: \"Inter\";","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: gray;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"sp4ce-cowboy":6,"-":15}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Need help with UniCa$h?\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":43}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import java.net.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.image.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import javafx.stage.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"UniCa$h\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17.0.2-ea\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cImage url\u003d\"@/images/wallet_icon.png\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" styleClass\u003d\"bold-label-menubar\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" styleClass\u003d\"normal-label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" onAction\u003d\"#handleHelp\" text\u003d\"Help\" styleClass\u003d\"normal-label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"User Guide\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cMenuItem fx:id\u003d\"userGuideMenuItem\" text\u003d\"Open...\"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" styleClass\u003d\"normal-label\" onAction\u003d\"#handleOpenUserGuide\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c!-- The below code contains the SplitPane, so the MenuBar runs across --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cSplitPane dividerPositions\u003d\"0.7\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox minWidth\u003d\"400\" prefWidth\u003d\"400\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"400\" prefWidth\u003d\"400\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"transactionListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cVBox minWidth\u003d\"300\" prefWidth\u003d\"300\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"310\" minHeight\u003d\"310\" prefHeight\u003d\"310\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"5\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":32,"-":35}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":8}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" styleClass\u003d\"bold-label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":11}},{"path":"src/main/resources/view/TransactionCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"jamz903"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" \u003cHBox HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"transaction-id\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"transaction-name\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel fx:id\u003d\"amount\" text\u003d\"\\$amount\" styleClass\u003d\"big-money\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"jamz903"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"jamz903"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"transaction-subtitle\" text\u003d\"Date: \" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" \u003cLabel fx:id\u003d\"dateTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dateTime\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"jamz903"},"content":" \u003cHBox spacing\u003d\"3\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"transaction-subtitle\" text\u003d\"Location: \" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"jamz903"},"content":" \u003cLabel fx:id\u003d\"transactionLocation\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" \u003cInsets top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"jamz903"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" \u003cLabel styleClass\u003d\"cell_small_label_bold categories\" alignment\u003d\"CENTER_LEFT\" fx:id\u003d\"categories\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":6,"lipwei1808":28,"jamz903":17}},{"path":"src/main/resources/view/TransactionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" \u003cListView fx:id\u003d\"transactionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"lipwei1808":1,"-":7}},{"path":"src/test/java/unicash/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertEquals(appParameters, new AppParameters());","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertEquals(appParameters, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, appParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertFalse(appParameters.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(appParameters, otherAppParameters);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" private final Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":8,"-":82}},{"path":"src/test/java/unicash/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.util.logging.Level;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertEquals(defaultConfig, defaultConfig);","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertFalse(defaultConfig.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" Config otherConfig \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(defaultConfig, otherConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" otherConfig.setLogLevel(Level.OFF);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(otherConfig, defaultConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" otherConfig \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" otherConfig.setUserPrefsFilePath(Path.of(\"invalid_path.txt\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(otherConfig, defaultConfig);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" public void hashCode_sameConfig_returnsSameHashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(first.hashCode(), second.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" public void hashCode_differentConfig_returnsDifferentHashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Config();","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" second.setLogLevel(Level.OFF);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(first.hashCode(), second.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":31,"-":24}},{"path":"src/test/java/unicash/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.awt.Point;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" public void getWindowCoordinates() {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" var settings \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" assertNull(settings.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" var settingsWithCoords \u003d new GuiSettings(400, 500, 15, 30);","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertNotNull(settingsWithCoords.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(new Point(15, 30), settingsWithCoords.getWindowCoordinates());","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" public void hashCode_tests() {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" var settingsOne \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" var settingsTwo \u003d new GuiSettings();","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" assertEquals(settingsOne.hashCode(), settingsTwo.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" var settingsThreeDifferent \u003d new GuiSettings(400, 500, 10, 10);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settingsOne.hashCode(), settingsThreeDifferent.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" var settings \u003d new GuiSettings(400, 500, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertEquals(settings, settings);","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertFalse(settings.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var changedWidth \u003d new GuiSettings(15, 500, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedWidth);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" var changedHeight \u003d new GuiSettings(400, 400, 0, 0);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedHeight);","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var changedCoordinates \u003d new GuiSettings(400, 500, 15, 15);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(settings, changedCoordinates);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":44,"-":15}},{"path":"src/test/java/unicash/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertTrue(version.isEarlyAccess());","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertEquals(0, one.compareTo(another));","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" assertEquals(0, one.compareTo(another));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" assertEquals(one, another);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertEquals(one, another);","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" public void compareTo_fallThrough_returns1() {","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Version(1, 2, 3, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Version(1, 2, 3, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, first.compareTo(second));","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" public void compareTo_isEarlyAccess_returnsNegative1() {","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" var first \u003d new Version(1, 2, 3, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" var second \u003d new Version(1, 2, 3, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" assertEquals(-1, first.compareTo(second));","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" var version \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" assertEquals(version, version);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" assertFalse(version.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" var sameVersion \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" assertEquals(version, sameVersion);","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" var changedMajor \u003d new Version(2, 0, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedMajor);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" var changedMinor \u003d new Version(0, 2, 0, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedMinor);","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" var changedPatch \u003d new Version(0, 0, 2, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedPatch);","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" var changedIsEarlyAccess \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(version, changedIsEarlyAccess);","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":42,"-":131}},{"path":"src/test/java/unicash/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.core.index;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Index fifthPersonIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, Index.fromOneBased(5));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, Index.fromZeroBased(4));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertEquals(fifthPersonIndex, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0, fifthPersonIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertFalse(fifthPersonIndex.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(fifthPersonIndex, Index.fromOneBased(1));","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":8,"-":59}},{"path":"src/test/java/unicash/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotNull(AppUtil.getImage(\"/images/wallet_icon.png\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":34}},{"path":"src/test/java/unicash/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CollectionUtilTest {","lastModifiedDate":"2016-12-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void requireAllNonNullVarargs() {","lastModifiedDate":"2017-05-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // no arguments","lastModifiedDate":"2017-01-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown();","lastModifiedDate":"2017-05-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // any non-empty argument list","lastModifiedDate":"2017-01-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"\");","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // argument lists with just one null at the beginning","lastModifiedDate":"2017-01-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, \"\", new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // argument lists with nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), null, null, \"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", null, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // argument lists with one null as the last argument","lastModifiedDate":"2017-01-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object[]) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // confirms nulls inside lists in the argument list are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" List\u003cObject\u003e containingNull \u003d Collections.singletonList((Object) null);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(containingNull, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void requireAllNonNullCollection() {","lastModifiedDate":"2017-05-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // lists containing nulls in the front","lastModifiedDate":"2017-01-14"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertNullPointerExceptionThrown(Collections.singletonList((Object) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(null, new Object(), \"\"));","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // lists containing nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, \"eggs\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // lists containing nulls at the end","lastModifiedDate":"2017-01-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Collection\u003cObject\u003e) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // empty list","lastModifiedDate":"2017-01-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Collections.emptyList());","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // list with all non-null elements","lastModifiedDate":"2017-01-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object(), \"ham\", Integer.valueOf(1)));","lastModifiedDate":"2018-04-01"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertNullPointerExceptionNotThrown(List.of(new Object()));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // confirms nulls inside nested lists are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" List\u003cObject\u003e containingNull \u003d Collections.singletonList((Object) null);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(containingNull, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void isAnyNonNull() {","lastModifiedDate":"2017-06-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull());","lastModifiedDate":"2017-06-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object[]) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object()));","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object(), null));","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Object...)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if {@code objects} or any element of {@code objects} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(objects));","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Collection\u003c?\u003e)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if {@code collection} or any element of {@code collection} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(collection));","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireAllNonNull(objects);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireAllNonNull(collection);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":4,"-":101}},{"path":"src/test/java/unicash/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.Config;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ConfigUtilTest {","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"ConfigUtilTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path tempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void read_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e read(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(read(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e read(\"NotJsonFormatConfig.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"TypicalConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"EmptyConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new Config(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void read_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"ExtraValuesConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private Config getTypicalConfig() {","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" config.setLogLevel(Level.INFO);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" config.setUserPrefsFilePath(Paths.get(\"preferences.json\"));","lastModifiedDate":"2018-04-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return config;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private Optional\u003cConfig\u003e read(String configFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ConfigUtil.readConfig(configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void save_nullConfig_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void save_nullFile_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(new Config(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveConfig_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Config original \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Path configFilePath \u003d tempDir.resolve(\"TempConfig.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Config readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" original.setLogLevel(Level.FINE);","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void save(Config config, String configFileInTestDataFolder) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(config, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String configFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return configFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(configFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":112}},{"path":"src/test/java/unicash/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" @TempDir","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" public Path temporaryFolder;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" public void isFileExists_nonExistentFile_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(FileUtil.isFileExists(Path.of(\"invalid\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void createFile_existingFile_earlyReturns() throws IOException {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var path \u003d temporaryFolder.resolve(\"tempfile\");","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" Files.createFile(path);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" FileUtil.createFile(path);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":21,"-":20}},{"path":"src/test/java/unicash/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.SerializableTestClass;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TestUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Tests JSON Read and Write","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":1,"-":42}},{"path":"src/test/java/unicash/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.commons.util;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"sp4ce-cowboy":2,"-":142}},{"path":"src/test/java/unicash/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUniCashStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.storage.StorageManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" private final Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" var uniCashStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" new JsonUniCashStorage(temporaryFolder.resolve(\"unicash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" StorageManager storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" String deleteCommand \u003d \"delete_transaction 9\";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" public void getFilteredTransactionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTransactionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" public void getGuiSettings() {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(model.getGuiSettings(), new GuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" public void setGuiSettings() {","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" var localModel \u003d new ModelManager();","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" var guiSettings \u003d new GuiSettings(15, 15, 15, 15);","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" localModel.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" assertEquals(localModel.getGuiSettings(), guiSettings);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" // Inject LogicManager with an UniCashStorage that throws the IOException e when saving","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" JsonUniCashStorage uniCashStorage \u003d new JsonUniCashStorage(prefPath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash(ReadOnlyUniCash uniCash, Path filePath)","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" StorageManager storage \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" // Triggers the saveUniCash method by executing an add command","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" String addCommand \u003d AddTransactionCommand.COMMAND_WORD","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"sp4ce-cowboy"},"content":" + TRANSACTION_NAME_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"sp4ce-cowboy"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"sp4ce-cowboy"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"sp4ce-cowboy"},"content":" + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" Transaction expectedTransaction \u003d new TransactionBuilder(NUS).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" expectedModel.addTransaction(expectedTransaction);","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"sp4ce-cowboy":35,"woojiahao":30,"lipwei1808":3,"-":134}},{"path":"src/test/java/unicash/logic/UniCashMessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashMessagesTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_noPrefixes_throwsAssertionError() {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(AssertionError.class, () -\u003e UniCashMessages.getErrorMessageForDuplicatePrefixes());","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_singlePrefix_returnsFormattedMessage() {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" String errorMessage \u003d UniCashMessages.getErrorMessageForDuplicatePrefixes(new Prefix(\"n/\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"Multiple values specified for the following single-valued field(s): n/\", errorMessage);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" public void getErrorMessageForDuplicatePrefixes_multiplePrefixes_returnsFormattedMessage() {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" String errorMessage \u003d UniCashMessages.getErrorMessageForDuplicatePrefixes(new Prefix(\"n/\"), new Prefix(\"p/\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d \"Multiple values specified for the following single-valued field(s): n/ p/\";","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedMessage, errorMessage);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":33}},{"path":"src/test/java/unicash/logic/commands/AddTransactionCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandIntegrationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" private Model model;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" @BeforeEach","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public void setUp() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public void execute_newTransaction_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" expectedModel.addTransaction(validTransaction);","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertCommandSuccess(new AddTransactionCommand(validTransaction), model,","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" UniCashMessages.formatTransaction(validTransaction)), expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public void execute_duplicateTransaction_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" Transaction transactionInList \u003d model.getUniCash().getTransactionList().get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" expectedModel.addTransaction(transactionInList);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertCommandSuccess(new AddTransactionCommand(transactionInList), model,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" UniCashMessages.formatTransaction(transactionInList)), expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lipwei1808":50}},{"path":"src/test/java/unicash/logic/commands/AddTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public void constructor_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTransactionCommand(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public void execute_transactionAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" ModelStubAcceptingTransactionAdded modelStub \u003d new ModelStubAcceptingTransactionAdded();","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" CommandResult commandResult \u003d new AddTransactionCommand(validTransaction).execute(modelStub);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(String.format(AddTransactionCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(validTransaction)),","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(List.of(validTransaction), modelStub.transactionsAdded);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void execute_duplicateTransaction_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" Transaction validTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand addTransactionCommand \u003d new AddTransactionCommand(validTransaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" ModelStub modelStub \u003d new ModelStubWithTransaction(validTransaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e addTransactionCommand.execute(modelStub));","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addNusCommand \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addInternCommand \u003d new AddTransactionCommand(INTERN);","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertEquals(addNusCommand, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" AddTransactionCommand addNusCommandCopy \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertEquals(addNusCommand, addNusCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, addNusCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" // different Transaction -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" assertNotEquals(addNusCommand, addInternCommand);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" assertFalse(addNusCommand.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" AddTransactionCommand addTransactionCommand \u003d new AddTransactionCommand(NUS);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d AddTransactionCommand.class.getCanonicalName() + \"{toAdd\u003d\" + NUS + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, addTransactionCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-08"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" public Path getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" public void setTransaction(Transaction target, Transaction editedTransaction) {","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash(ReadOnlyUniCash uniCash) {","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction(Transaction target) {","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getFilteredTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" public void updateFilteredTransactionList(Predicate\u003cTransaction\u003e predicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":" * A Model stub that contains a single transaction.","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" private class ModelStubWithTransaction extends AddTransactionCommandTest.ModelStub {","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" private final Transaction transaction;","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" ModelStubWithTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" this.transaction \u003d transaction;","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" return this.transaction.equals(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" * A Model stub that always accept the transaction being added.","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":" private class ModelStubAcceptingTransactionAdded extends AddTransactionCommandTest.ModelStub {","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":" final ArrayList\u003cTransaction\u003e transactionsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" public boolean hasTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":194,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" return transactionsAdded.stream().anyMatch(transaction::equals);","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" public void addTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" requireNonNull(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" transactionsAdded.add(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":" public ReadOnlyUniCash getUniCash() {","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":" return new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":208,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":209,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":210,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":16,"woojiahao":12,"lipwei1808":170,"elhy1999":12}},{"path":"src/test/java/unicash/logic/commands/ClearTransactionsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ClearTransactionsCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_emptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ClearTransactionsCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" ClearTransactionsCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_nonEmptyUniCash_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(new UniCash());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ClearTransactionsCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" ClearTransactionsCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":34,"woojiahao":1}},{"path":"src/test/java/unicash/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, new CommandResult(\"feedback\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, new CommandResult(\"feedback\", false, false));","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" assertEquals(commandResult, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(0.5f, commandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertFalse(commandResult.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"different\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"feedback\", true, false));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(commandResult, new CommandResult(\"feedback\", false, true));","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":9,"-":54}},{"path":"src/test/java/unicash/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TRANSACTION_NAME_NUS \u003d \"Work at NUS\";","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" public static final String VALID_TRANSACTION_NAME_INTERN \u003d \"Internship work\";","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TRANSACTION_NAME_SHOPPING \u003d \"Shopping\";","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TYPE_EXPENSE \u003d \"expense\";","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_TYPE_INCOME \u003d \"income\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_NUS \u003d 888.8;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_INTERN \u003d 8.8;","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public static final Double VALID_AMOUNT_SHOPPING \u003d 899.8;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_NUS \u003d \"12-12-2021 12:12\";","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_INTERN \u003d \"08-08-2008 08:08\";","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_DATETIME_SHOPPING \u003d \"01-02-2008 11:08\";","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_ENTERTAINMENT \u003d \"entertainment\";","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_EDUCATION \u003d \"education\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_CATEGORY_NUS \u003d \"TA\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public static final String VALID_LOCATION_ORCHARD \u003d \"orchard\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" public static final String VALID_LOCATION_NUS \u003d \"NUS\";","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_NAME_DESC_NUS \u003d \" \" + PREFIX_NAME + VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TRANSACTION_NAME_DESC_INTERN \u003d \" \" + PREFIX_NAME + VALID_TRANSACTION_NAME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String AMOUNT_DESC_NUS \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String AMOUNT_DESC_INTERN \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String DATETIME_DESC_NUS \u003d \" \" + PREFIX_DATETIME + VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String DATETIME_DESC_INTERN \u003d \" \" + PREFIX_DATETIME + VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TYPE_DESC_EXPENSE \u003d \" \" + PREFIX_TYPE + VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String TYPE_DESC_INCOME \u003d \" \" + PREFIX_TYPE + VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String CATEGORY_DESC_ENTERTAINMENT \u003d \" \" + PREFIX_CATEGORY + VALID_CATEGORY_ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String CATEGORY_DESC_NUS \u003d \" \" + PREFIX_CATEGORY + VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String LOCATION_DESC_ORCHARD \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String LOCATION_DESC_NUS \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_TRANSACTION_NAME_DESC \u003d \" \" + PREFIX_NAME + \"NUS\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_AMOUNT_DESC \u003d \" \" + PREFIX_AMOUNT + \"-3.0\"; // negative amounts not allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_DATETIME_DESC \u003d \" \" + PREFIX_DATETIME + \"19/13/2001 19:30\"; // invalid date","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_TYPE_DESC \u003d \" \" + PREFIX_TYPE + \"afaf\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_CATEGORY_DESC \u003d \" \" + PREFIX_CATEGORY + \"afraf*\u0026\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION + \"a214faf*\u0026\"; // invalid type","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" public static final EditTransactionCommand.EditTransactionDescriptor DESC_NUS;","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" public static final EditTransactionCommand.EditTransactionDescriptor DESC_SHOPPING;","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" DESC_NUS \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" DESC_SHOPPING \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_ENTERTAINMENT)","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_SHOPPING)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" public static void assertCommandSuccess(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" Command command,","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" Model actualModel,","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" CommandResult expectedCommandResult,","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" Model expectedModel","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" ) {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" UniCash expectedUniCash \u003d new UniCash(actualModel.getUniCash());","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" List\u003cTransaction\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredTransactionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" assertEquals(expectedUniCash, actualModel.getUniCash());","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredTransactionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" * Updates {@code model}\u0027s filtered list to show only the transaction at the","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" * given {@code targetIndex} in the {@code model}\u0027s database.","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" public static void showTransactionAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transaction \u003d model.getFilteredTransactionList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" final String[] splitName \u003d transaction.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(splitName[0])));","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(1, model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"sp4ce-cowboy":49,"woojiahao":27,"lipwei1808":14,"-":59,"elhy1999":5}},{"path":"src/test/java/unicash/logic/commands/DeleteTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.showTransactionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" * {@code DeleteTransactionCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTransactionList().size() + 1);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandFailure(deleteCommand, model, UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteFirstCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteSecondCommand \u003d new DeleteTransactionCommand(INDEX_SECOND_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteFirstCommandCopy \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, deleteFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" // different transaction -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(deleteFirstCommand, deleteSecondCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(targetIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d DeleteTransactionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d model.getFilteredTransactionList().get(","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(DeleteTransactionCommand.MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete));","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" ModelManager expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction transactionToDelete \u003d model.getFilteredTransactionList()","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" .get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(DeleteTransactionCommand.MESSAGE_DELETE_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.formatTransaction(transactionToDelete));","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.deleteTransaction(transactionToDelete);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" showNoTransaction(expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" // ensures that outOfBoundIndex is still in bounds of transactions list","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c getTypicalUniCash().getTransactionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand deleteCommand \u003d new DeleteTransactionCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" * Updates {@code model}\u0027s filtered list to show no transaction.","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" private void showNoTransaction(Model model) {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" model.updateFilteredTransactionList(p -\u003e false);","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(model.getFilteredTransactionList().isEmpty());","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":118,"woojiahao":8,"elhy1999":1}},{"path":"src/test/java/unicash/logic/commands/EditTransactionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"elhy1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.showTransactionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand.EditTransactionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditTransactionCommand.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" private final Model model \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptor()","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" ));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" public void constructor_nullDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" Index.fromOneBased(9),","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" null","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" ));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" Index.fromOneBased(9),","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptor()","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e command.execute(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTransactionList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" assertCommandFailure(","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" editTransactionCommand,","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" model,","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" * but smaller than size of uni cash","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getUniCash().getTransactionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" outOfBoundIndex,","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" assertCommandFailure(","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" editTransactionCommand,","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" model,","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.MESSAGE_INVALID_TRANSACTION_DISPLAYED_INDEX","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"elhy1999"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" var editedTransaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder(editedTransaction).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.formatTransaction(editedTransaction)","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" getTypicalUniCash(),","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" new UserPrefs()","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(model.getFilteredTransactionList().get(0), editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"elhy1999"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"elhy1999"},"content":" Index indexLastTransaction \u003d Index.fromOneBased(model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"elhy1999"},"content":" Transaction lastTransaction \u003d model.getFilteredTransactionList().get(indexLastTransaction.getZeroBased());","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":" TransactionBuilder transactionInList \u003d new TransactionBuilder(lastTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d transactionInList","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" EditTransactionDescriptor descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(indexLastTransaction, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction));","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(lastTransaction, editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"elhy1999"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION,","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" new EditTransactionDescriptor());","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction editedTransaction \u003d model.getFilteredTransactionList().get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"elhy1999"},"content":" UniCashMessages.formatTransaction(editedTransaction));","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"sp4ce-cowboy"},"content":" getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"sp4ce-cowboy"},"content":" showTransactionAtIndex(model, INDEX_FIRST_TRANSACTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" Transaction transactionInFilteredList \u003d model","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" .getFilteredTransactionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" .get(INDEX_FIRST_TRANSACTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" Transaction editedTransaction \u003d new TransactionBuilder(transactionInFilteredList)","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand editTransactionCommand \u003d new EditTransactionCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" INDEX_FIRST_TRANSACTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" EditTransactionCommand.MESSAGE_EDIT_TRANSACTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.formatTransaction(editedTransaction)","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" getTypicalUniCash(),","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" new UserPrefs()","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"elhy1999"},"content":" expectedModel.setTransaction(model.getFilteredTransactionList().get(0), editedTransaction);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(editTransactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, command);","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" public void equals_nullOther_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" public void equals_fullShallowCopy_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"woojiahao"},"content":" public void equals_partialShallowCopyDescriptor_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor(DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"woojiahao"},"content":" public void equals_otherDifferentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"woojiahao"},"content":" assertFalse(command.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":230,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"woojiahao"},"content":" public void equals_differentIndex_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_SECOND_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"woojiahao"},"content":" public void equals_differentDescriptor_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" var command \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionCommand(INDEX_FIRST_TRANSACTION, DESC_SHOPPING);","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"elhy1999"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"elhy1999"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" var editTransactionDescriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" var editTransactionCommand \u003d new EditTransactionCommand(index, editTransactionDescriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"elhy1999"},"content":" String expected \u003d EditTransactionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" + \"{index\u003d\" + index","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" + \", editTransactionDescriptor\u003d\" + editTransactionDescriptor + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, editTransactionCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":42,"woojiahao":138,"elhy1999":76}},{"path":"src/test/java/unicash/logic/commands/EditTransactionDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.DESC_NUS;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_SHOPPING;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.commands.EditTransactionCommand.EditTransactionDescriptor;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class EditTransactionDescriptorTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" assertEquals(DESC_NUS, DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public void equals_constructorCopy_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor(DESC_NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertEquals(DESC_NUS, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" public void equals_otherNull_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" public void equals_otherDifferentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertFalse(DESC_NUS.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" public void equals_differentName_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withName(VALID_TRANSACTION_NAME_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" public void equals_differentAmount_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withAmount(VALID_AMOUNT_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void equals_differentDateTime_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withDateTime(VALID_DATETIME_SHOPPING).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" public void equals_differentLocation_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withLocation(VALID_LOCATION_ORCHARD).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withLocation(VALID_TYPE_INCOME).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" public void equals_differentCategories_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" var other \u003d new EditTransactionDescriptorBuilder(DESC_NUS).withCategories(\"Completely\", \"Different\").build();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(DESC_NUS, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" public void isAnyFieldEdited_withNoEdits_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" assertFalse(descriptor.isAnyFieldEdited());","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" public void isAnyFieldEdited_withEdits_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" descriptor.setName(new Name(\"Changed name\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" assertTrue(descriptor.isAnyFieldEdited());","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptor();","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" String expected \u003d EditTransactionDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" + descriptor.getName().orElse(null) + \", amount\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" + descriptor.getAmount().orElse(null) + \", datetime\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" + descriptor.getDateTime().orElse(null) + \", location\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" + descriptor.getLocation().orElse(null) + \", type\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" + descriptor.getType().orElse(null) + \", categories\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" + descriptor.getCategories().orElse(null) + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, descriptor.toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"woojiahao":104}},{"path":"src/test/java/unicash/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ExitCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_exit_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandResult expectedCommandResult \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" new CommandResult(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ExitCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedCommandResult, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":22,"woojiahao":3}},{"path":"src/test/java/unicash/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_TRANSACTIONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private final Model model \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" private final Model modelWithTransactions \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private final Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"jamz903"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jamz903"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":" // different transaction -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertFalse(findFirstCommand.equals(3));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" public void execute_zeroKeywords_noTransactionsFound() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"jamz903"},"content":" String expectedMessage \u003d String.format(MESSAGE_TRANSACTIONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jamz903"},"content":" expectedModel.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"jamz903"},"content":" assertEquals(Collections.emptyList(), model.getFilteredTransactionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" public void execute_oneKeyword_multipleTransactionsFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" String expectedMessage \u003d String.format(MESSAGE_TRANSACTIONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"work\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" Model expectedModel \u003d new ModelManager(getTypicalUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" expectedModel.updateFilteredTransactionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" assertCommandSuccess(command, modelWithTransactions, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" var filteredResult \u003d modelWithTransactions.getFilteredTransactionList();","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" assertEquals(filteredResult.get(0), NUS);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"elhy1999"},"content":" assertEquals(filteredResult.get(1), INTERN);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"jamz903"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d new TransactionNameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" List.of(\"keyword\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":99,"author":{"gitId":"jamz903"},"content":" private TransactionNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"jamz903"},"content":" return new TransactionNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":13,"jamz903":12,"-":47,"elhy1999":22}},{"path":"src/test/java/unicash/logic/commands/GetTotalExpenditureCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.enums.TransactionType;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Model BASE_MODEL \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(10, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e command.execute(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" public void execute_negativeMonth_throwsCommandException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(-12, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(BASE_MODEL));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void execute_monthGreaterThan12_throwsCommandException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(13, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(BASE_MODEL));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" public void execute_validMonthWithOnlyOneMonth_filtersOnlyExpenses() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"income\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsOnly_filtersOnlySelectedMonths() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" public void execute_expenseWithoutCategoryWithCategoryFilter_notIncludedInFilter() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" // This transaction does not contain any categories even if it\u0027s in August","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withCategories().withType(\"expense\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, filteredResult.size());","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" public void execute_expenseWithoutCategoryWithoutCategoryFilter_includedInFilter() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" // This transaction does not contain any categories even if it\u0027s in August","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" // This should be included this round as no category filter is in place","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withCategories().withType(\"expense\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"18-07-2001 00:00\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleCategoriesOnly_filtersOnlySelectedCategory() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Food\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" assertTrue(result.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(new Category(\"Food\"))));","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsAndCategories_filtersForSelectedMonthAndCategory() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"23-06-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" assertEquals(1, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" for (var result : filteredResult) {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, result.getType().type);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" assertTrue(result.getCategories().asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" .stream().anyMatch(cat -\u003e cat.equals(new Category(\"Food\"))));","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(8, result.getDateTime().getDateTime().getMonthValue());","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleMonthsAndCategories_returnsValidTotalExpenditure() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withDateTime(\"23-06-2001 00:00\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"Others\").build());","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").build());","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withAmount(133.15).build());","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" var result \u003d command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" assertEquals(","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" String.format(GetTotalExpenditureCommand.MESSAGE_SUCCESS, \"AUGUST\", 123.45 + 133.15),","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" result.getFeedbackToUser()","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" public void execute_multipleCategories_includedIfOneCategoryFitsFilter() throws CommandException {","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" var model \u003d getModel();","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" new TransactionBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" .withType(\"expense\")","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" .withCategories(\"Food\", \"Drinks\", \"Social\")","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" .build()","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories().build());","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" model.addTransaction(new TransactionBuilder().withType(\"expense\").withCategories(\"School\", \"Food\").build());","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"woojiahao"},"content":" command.execute(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"woojiahao"},"content":" var filteredResult \u003d model.getFilteredTransactionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" assertEquals(2, filteredResult.size());","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" for (var res : filteredResult) {","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" assertEquals(TransactionType.EXPENSE, res.getType().type);","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" boolean hasMatchingCategory \u003d false;","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" for (var category : res.getCategories()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" if (category.equals(new Category(\"Food\"))) {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" hasMatchingCategory \u003d true;","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" break;","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" assertTrue(hasMatchingCategory);","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" public void toString_noInput_returnsCommandStringFormatted() {","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" var toStringResult \u003d command.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d GetTotalExpenditureCommand.class.getCanonicalName() + \"{month\u003d8, categoryFilter\u003dFood}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, toStringResult);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, command);","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"woojiahao"},"content":" assertFalse(command.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"woojiahao"},"content":" public void equals_sameMonthAndCategoryFilter_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" public void equals_sameMonthDifferentCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Others\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"woojiahao"},"content":" public void equals_differentMonthSameCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"woojiahao"},"content":" public void equals_differentMonthAndCategoryFilter_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, new Category(\"Food\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(8, new Category(\"Others\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"woojiahao"},"content":" public void equals_nullCatFilterOtherNonNullCatFilter_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(7, new Category(\"Others\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":242,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"woojiahao"},"content":" public void equals_nullCatFilterOtherNullCatFilter_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":245,"author":{"gitId":"woojiahao"},"content":" var command \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" var other \u003d new GetTotalExpenditureCommand(7, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" assertEquals(command, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" private static Model getModel() {","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" return new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":16,"woojiahao":228,"lipwei1808":9}},{"path":"src/test/java/unicash/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"public class HelpCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_help_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandResult expectedCommandResult \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new HelpCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedCommandResult, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":21,"woojiahao":3}},{"path":"src/test/java/unicash/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" public void equals_nullOther_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(new ListCommand(), null);","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(new ListCommand().equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void equals_otherListCommand_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var first \u003d new ListCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" var second \u003d new ListCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertEquals(first, second);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":23,"-":14}},{"path":"src/test/java/unicash/logic/commands/ResetCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.commands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.util.SampleDataUtil.getSampleUniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ModelManager;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ResetCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_emptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ResetCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" ResetCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" public void execute_nonEmptyUniCash_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" Model model \u003d new ModelManager(getSampleUniCash(), new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" Model expectedModel \u003d new ModelManager(new UniCash(), new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" expectedModel.setUniCash(getSampleUniCash());","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertCommandSuccess(new ResetCommand(), model,","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" ResetCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"sp4ce-cowboy":36}},{"path":"src/test/java/unicash/logic/parser/AddTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_CATEGORY_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TRANSACTION_NAME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TYPE_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_ORCHARD;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"public class AddTransactionCommandParserTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" private final AddTransactionCommandParser parser \u003d new AddTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" Transaction expectedTransaction \u003d new TransactionBuilder(NUS).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" + TRANSACTION_NAME_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS,","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" new AddTransactionCommand(expectedTransaction));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" String validExpectedTransactionString \u003d TRANSACTION_NAME_DESC_NUS + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" + AMOUNT_DESC_NUS + DATETIME_DESC_NUS + LOCATION_DESC_ORCHARD + CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" // multiple names","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" // multiple amount","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, AMOUNT_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" // multiple datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, DATETIME_DESC_INTERN + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" // multiple type","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TYPE_DESC_INCOME + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" // multiple location","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, LOCATION_DESC_ORCHARD + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TRANSACTION_NAME_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_AMOUNT_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" // invalid datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_DATETIME_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TYPE_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" // invalid category","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_CATEGORY_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" // invalid location","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_LOCATION_DESC + validExpectedTransactionString,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-10-08"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_TRANSACTION_NAME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_AMOUNT_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" // invalid datetime","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_DATETIME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_TYPE_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_TYPE));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" // invalid category","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_CATEGORY_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" Category.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" // invalid location","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, validExpectedTransactionString + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTransactionCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" // missing name prefix","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, VALID_TRANSACTION_NAME_NUS + AMOUNT_DESC_NUS + TYPE_DESC_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" // missing amount prefix","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + VALID_AMOUNT_NUS + TYPE_DESC_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" // missing type prefix","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + VALID_AMOUNT_NUS + VALID_TYPE_EXPENSE,","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" expectedMessage);","lastModifiedDate":"2023-10-08"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, INVALID_TRANSACTION_NAME_DESC + AMOUNT_DESC_NUS + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"sp4ce-cowboy"},"content":" + TYPE_DESC_EXPENSE, unicash.model.transaction.Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" // invalid amount","lastModifiedDate":"2023-10-08"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + INVALID_AMOUNT_DESC","lastModifiedDate":"2023-10-13"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" + DATETIME_DESC_NUS + TYPE_DESC_EXPENSE, Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" // invalid type","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" assertParseFailure(parser, TRANSACTION_NAME_DESC_NUS + AMOUNT_DESC_NUS + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" + INVALID_TYPE_DESC, Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"sp4ce-cowboy":54,"woojiahao":11,"lipwei1808":111}},{"path":"src/test/java/unicash/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":149}},{"path":"src/test/java/unicash/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":" } catch (ParseException | IllegalArgumentException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedMessage, e.getMessage());","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"sp4ce-cowboy":4,"-":34,"elhy1999":1}},{"path":"src/test/java/unicash/logic/parser/DeleteTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DeleteTransactionCommandParserTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" private final DeleteTransactionCommandParser parser \u003d new DeleteTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parse_validArgs_returnsDeleteTransactionCommand() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand command \u003d parser.parse(\"1\");","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new DeleteTransactionCommand(Index.fromOneBased(1)), command);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" // No number provided","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" // Non-integer input","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\".\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // Negative number","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" // Zero as input (assuming indices are 1-based)","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" // Float as input (assuming indices are 1-based)","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0.5\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":37,"woojiahao":1,"elhy1999":4}},{"path":"src/test/java/unicash/logic/parser/EditTransactionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_ENTERTAINMENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_CATEGORY_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TRANSACTION_NAME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.INVALID_TYPE_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.LOCATION_DESC_ORCHARD;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_EXPENSE;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.UniCashMessages;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionCommandParserTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"elhy1999"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditTransactionCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" private static final String CATEGORY_EMPTY \u003d \" \" + PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionCommandParser parser \u003d new EditTransactionCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":" // no index specified","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(parser, VALID_TRANSACTION_NAME_NUS, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":" // no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1\", EditTransactionCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" // negative index","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" \"-5\" + TRANSACTION_NAME_DESC_NUS,","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" MESSAGE_INVALID_FORMAT","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" // zero index","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":" \"0\" + TRANSACTION_NAME_DESC_NUS,","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" MESSAGE_INVALID_FORMAT","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"elhy1999"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"elhy1999"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TRANSACTION_NAME_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":" Name.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" ); // invalid name","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_AMOUNT_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" Amount.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" ); // invalid amount","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_CATEGORY_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" Category.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" ); // invalid category","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_DATETIME_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" DateTime.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" ); // invalid datetime","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" Location.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" ); // invalid location","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TYPE_DESC,","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" Type.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" ); // invalid type","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"elhy1999"},"content":" // invalid amount followed by valid category","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_AMOUNT_DESC + CATEGORY_DESC_ENTERTAINMENT,","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" Amount.MESSAGE_CONSTRAINTS","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"elhy1999"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" \"1\" + INVALID_TRANSACTION_NAME_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" + VALID_AMOUNT_INTERN","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" + VALID_DATETIME_INTERN,","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"elhy1999"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"elhy1999"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_SECOND_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" + TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" var expectedTransactionCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedTransactionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"elhy1999"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + AMOUNT_DESC_INTERN + CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" .withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" var expectedTransactionCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedTransactionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"elhy1999"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"elhy1999"},"content":" // name","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + TRANSACTION_NAME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" .withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" var expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"elhy1999"},"content":" // amount","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + AMOUNT_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withAmount(VALID_AMOUNT_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"elhy1999"},"content":" // category","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + CATEGORY_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":204,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withCategories(VALID_CATEGORY_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":205,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"elhy1999"},"content":" // datetime","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + DATETIME_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":210,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withDateTime(VALID_DATETIME_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"elhy1999"},"content":" // location","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withLocation(VALID_LOCATION_NUS).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"elhy1999"},"content":" // type","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + TYPE_DESC_INCOME;","lastModifiedDate":"2023-10-17"},{"lineNumber":222,"author":{"gitId":"woojiahao"},"content":" descriptor \u003d new EditTransactionDescriptorBuilder().withType(VALID_TYPE_INCOME).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":223,"author":{"gitId":"elhy1999"},"content":" expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"elhy1999"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"elhy1999"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"elhy1999"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"elhy1999"},"content":" // AddTransactionCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"elhy1999"},"content":" // valid followed by invalid","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"elhy1999"},"content":" Index targetIndex \u003d INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_NUS + INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":235,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"sp4ce-cowboy"},"content":" assertParseFailure(parser, userInput, UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"elhy1999"},"content":" // invalid followed by valid","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_LOCATION_DESC + LOCATION_DESC_NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":240,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"sp4ce-cowboy"},"content":" assertParseFailure(parser, userInput, UniCashMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"woojiahao"},"content":" // multiple valid fields repeated","lastModifiedDate":"2023-10-17"},{"lineNumber":244,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":245,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":246,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":249,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":250,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":251,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_INCOME","lastModifiedDate":"2023-10-17"},{"lineNumber":252,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":253,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":254,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_NUS","lastModifiedDate":"2023-10-17"},{"lineNumber":255,"author":{"gitId":"woojiahao"},"content":" + LOCATION_DESC_ORCHARD","lastModifiedDate":"2023-10-17"},{"lineNumber":256,"author":{"gitId":"woojiahao"},"content":" + TYPE_DESC_EXPENSE","lastModifiedDate":"2023-10-17"},{"lineNumber":257,"author":{"gitId":"woojiahao"},"content":" + AMOUNT_DESC_INTERN","lastModifiedDate":"2023-10-17"},{"lineNumber":258,"author":{"gitId":"woojiahao"},"content":" + CATEGORY_DESC_ENTERTAINMENT","lastModifiedDate":"2023-10-17"},{"lineNumber":259,"author":{"gitId":"woojiahao"},"content":" + DATETIME_DESC_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":260,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":261,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":262,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":263,"author":{"gitId":"woojiahao"},"content":" userInput,","lastModifiedDate":"2023-10-17"},{"lineNumber":264,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-17"},{"lineNumber":265,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_LOCATION,","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_TYPE,","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_AMOUNT,","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"lipwei1808"},"content":" PREFIX_DATETIME","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-17"},{"lineNumber":270,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":271,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"elhy1999"},"content":" // multiple invalid values","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"woojiahao"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2023-10-17"},{"lineNumber":274,"author":{"gitId":"woojiahao"},"content":" + INVALID_LOCATION_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":275,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":276,"author":{"gitId":"woojiahao"},"content":" + INVALID_DATETIME_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":277,"author":{"gitId":"woojiahao"},"content":" + INVALID_LOCATION_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":278,"author":{"gitId":"woojiahao"},"content":" + INVALID_CATEGORY_DESC","lastModifiedDate":"2023-10-17"},{"lineNumber":279,"author":{"gitId":"woojiahao"},"content":" + INVALID_DATETIME_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":280,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":281,"author":{"gitId":"woojiahao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-17"},{"lineNumber":282,"author":{"gitId":"woojiahao"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":283,"author":{"gitId":"woojiahao"},"content":" userInput,","lastModifiedDate":"2023-10-17"},{"lineNumber":284,"author":{"gitId":"woojiahao"},"content":" UniCashMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-17"},{"lineNumber":285,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_LOCATION,","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"sp4ce-cowboy"},"content":" PREFIX_DATETIME","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"woojiahao"},"content":" )","lastModifiedDate":"2023-10-17"},{"lineNumber":288,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":289,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":290,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":291,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":292,"author":{"gitId":"woojiahao"},"content":" public void parse_resetCategories_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":293,"author":{"gitId":"woojiahao"},"content":" Index targetIndex \u003d INDEX_THIRD_TRANSACTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":294,"author":{"gitId":"woojiahao"},"content":" String userInput \u003d targetIndex.getOneBased() + CATEGORY_EMPTY;","lastModifiedDate":"2023-10-17"},{"lineNumber":295,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":296,"author":{"gitId":"woojiahao"},"content":" var descriptor \u003d new EditTransactionDescriptorBuilder().withCategories().build();","lastModifiedDate":"2023-10-17"},{"lineNumber":297,"author":{"gitId":"woojiahao"},"content":" var expectedCommand \u003d new EditTransactionCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-17"},{"lineNumber":298,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":299,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":300,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":301,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":56,"woojiahao":141,"lipwei1808":2,"elhy1999":102}},{"path":"src/test/java/unicash/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" * A class to test the FindCommandParser.","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"jamz903"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" private final FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseFailure(parser, \" \",","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" CommandParserTestUtil.assertParseFailure(parser, \"\",","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"jamz903"},"content":" new FindCommand(new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Shopping\", \"Work\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseSuccess(parser, \"Shopping Work\", expectedFindCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" CommandParserTestUtil.assertParseSuccess(parser, \" \\n Shopping \\n \\t Work \\t\", expectedFindCommand);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":1,"jamz903":5,"-":23,"elhy1999":2}},{"path":"src/test/java/unicash/logic/parser/GetTotalExpenditureCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"public class GetTotalExpenditureCommandParserTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" private final GetTotalExpenditureCommandParser parser \u003d new GetTotalExpenditureCommandParser();","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" public void parse_noCategory_returnsGetTotalExpenditureCommandWithoutCategoryFilter() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" var result \u003d parser.parse(\" month/1\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new GetTotalExpenditureCommand(1, null);","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, result);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" public void parse_withCategory_returnsGetTotalExpenditureCommandWithCategoryFilter() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" var result \u003d parser.parse(\" month/1 c/Food\");","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new GetTotalExpenditureCommand(1, new Category(\"Food\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, result);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" public void parse_withUnknownArgument_throwsParseException() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" // Parser will treat the month as 1 amt/500 and as such throw an exception","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" month/1 amt/500\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" public void parse_missingMonth_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" var thrown \u003d assertThrows(ParseException.class, () -\u003e parser.parse(\" c/Food\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" assertEquals(","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GetTotalExpenditureCommand.MESSAGE_USAGE),","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" thrown.getMessage()","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" public void parse_nonIntegerMonth_throwsParseException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" month/hi\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":45}},{"path":"src/test/java/unicash/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"jamz903"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"jamz903"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"jamz903"},"content":" private final ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"jamz903"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":" public void parse_withArgsWord_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"jamz903"},"content":" //list with text","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"jamz903"},"content":" assertParseFailure(parser, \" abc\", ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" public void parse_withArgsNumber_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"jamz903"},"content":" //list with number","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"jamz903"},"content":" assertParseFailure(parser, \" 1\", ListCommand.MESSAGE_FAILURE);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" public void parse_withExcessSpacing_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" //list with number","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" assertParseSuccess(parser, \" \", new ListCommand());","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"jamz903"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":3,"woojiahao":11,"jamz903":16}},{"path":"src/test/java/unicash/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"elhy1999"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_NAME \u003d \"Ex@pen$e\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_AMOUNT \u003d \"str\";","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_DATETIME \u003d \"18-8-2001\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_CATEGORY \u003d \"$$af$\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" private static final String INVALID_LOCATION \u003d \"^$2af\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_NAME \u003d \"Expense\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_AMOUNT \u003d \"3.0\";","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_DATETIME \u003d \"18-08-2001 18:30\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY \u003d \"hobbies\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_2 \u003d \"entertainment\";","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_3 \u003d \"test\";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_4 \u003d \"test2\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_5 \u003d \"test3\";","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_CATEGORY_6 \u003d \"test4\";","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" private static final String VALID_LOCATION \u003d \"orchard road\";","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" assertEquals(INDEX_FIRST_TRANSACTION, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" assertEquals(INDEX_FIRST_TRANSACTION, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTransactionName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTransactionName(INVALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" Name expectedTransactionName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedTransactionName, ParserUtil.parseTransactionName(VALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" public void parseTransactionName_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" Name expectedTransactionName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedTransactionName, ParserUtil.parseTransactionName(nameWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void parseAmount_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAmount(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void parseAmount_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAmount(INVALID_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" public void parseAmount_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" Amount expectedAmount \u003d new Amount(3.0);","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedAmount, ParserUtil.parseAmount(VALID_AMOUNT));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" public void parseAmount_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" String amountWithWhitespace \u003d WHITESPACE + VALID_AMOUNT + WHITESPACE;","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" Amount expectedAmount \u003d new Amount(3.0);","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedAmount, ParserUtil.parseAmount(amountWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" public void parseType_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseType(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" public void parseType_invalidType_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"woojiahao"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseType(\"hi\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"woojiahao"},"content":" public void parseType_validValueWithoutWhitespace_returnsType() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"woojiahao"},"content":" String value \u003d \"expense\";","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" Type expected \u003d new Type(\"expense\");","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, ParserUtil.parseType(value));","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" public void parseType_validValueWithWhitespace_returnsTrimmedType() throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":" String value \u003d \" income \";","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"woojiahao"},"content":" Type expected \u003d new Type(\"income\");","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, ParserUtil.parseType(value));","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDateTime(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDateTime(INVALID_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" public void parseDateTime_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" DateTime expectedDateTime \u003d new DateTime(VALID_DATETIME);","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedDateTime, ParserUtil.parseDateTime(VALID_DATETIME));","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" public void parseDateTime_validValueWithWhitespace_returnsTrimmedTransactionName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" String dateTimeWithWhiteSpace \u003d WHITESPACE + VALID_DATETIME + WHITESPACE;","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" DateTime expectedDateTime \u003d new DateTime(VALID_DATETIME);","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedDateTime, ParserUtil.parseDateTime(dateTimeWithWhiteSpace));","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_empty_doesNotThrow() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseDateTime(\"\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseDateTime(WHITESPACE + WHITESPACE));","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLocation(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLocation(INVALID_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":" public void parseLocation_validValueWithoutWhitespace_returnsTransactionName() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(VALID_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(VALID_LOCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_validValueWithWhitespace_returnsTrimmedLocation() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" String locationWithWhiteSpace \u003d WHITESPACE + VALID_LOCATION + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(VALID_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(locationWithWhiteSpace));","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" public void parseLocation_empty_returnsDefaultLocation() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" Location expectedLocation \u003d new Location(WHITESPACE);","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(WHITESPACE));","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCategory(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategory(INVALID_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_validValueWithoutWhitespace_returnsCategory() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" Category expectedCategory \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedCategory, ParserUtil.parseCategory(VALID_CATEGORY));","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"lipwei1808"},"content":" public void parseCategory_validValueWithWhitespace_returnsTrimmedCategory() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"lipwei1808"},"content":" String categoryWithWhitespace \u003d WHITESPACE + VALID_CATEGORY + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"lipwei1808"},"content":" Category expectedCategory \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expectedCategory, ParserUtil.parseCategory(categoryWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCategories(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithInvalidCategories_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, INVALID_CATEGORY)));","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_emptyCollection_returnsEmptySet() {","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e ParserUtil.parseCategories(Collections.emptyList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithMoreThanAllowedNumberOfCategories_returnsCategorySet() {","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"lipwei1808"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY_2, VALID_CATEGORY_3, VALID_CATEGORY_4,","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORY_5, VALID_CATEGORY_6)));","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithValidCategories_returnsCategorySet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList actualCategoryList \u003d ParserUtil.parseCategories(","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY_2));","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e(","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(new Category(VALID_CATEGORY), new Category(VALID_CATEGORY_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedCategoryList \u003d new UniqueCategoryList(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedCategoryList, actualCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"lipwei1808"},"content":" public void parseCategories_collectionWithDuplicateCategories_returnsCategorySet() {","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"lipwei1808"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCategories(","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"lipwei1808"},"content":" Arrays.asList(VALID_CATEGORY, VALID_CATEGORY)));","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"sp4ce-cowboy":33,"woojiahao":38,"lipwei1808":137,"-":42,"elhy1999":3}},{"path":"src/test/java/unicash/logic/parser/UniCashParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.UniCashMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ClearTransactionsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.DeleteTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.FindCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.GetTotalExpenditureCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.ResetCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.EditTransactionDescriptorBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"public class UniCashParserTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" private final UniCashParser parser \u003d new UniCashParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":" assertEquals(new FindCommand(new TransactionNameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" public void parseCommand_addTransaction() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" String s \u003d TransactionUtil.getAddTransactionCommand(transaction);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" AddTransactionCommand command \u003d (AddTransactionCommand) parser.parseCommand(s);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertEquals(new AddTransactionCommand(transaction), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_deleteTransaction() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand command \u003d (DeleteTransactionCommand)","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" parser.parseCommand(","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" DeleteTransactionCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" + INDEX_FIRST_TRANSACTION.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new DeleteTransactionCommand(INDEX_FIRST_TRANSACTION), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_clearTransactions() throws Exception {","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD) instanceof ClearTransactionsCommand);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" instanceof ClearTransactionsCommand);","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_resetUniCashCommand() throws Exception {","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ResetCommand.COMMAND_WORD) instanceof ResetCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(ResetCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" instanceof ResetCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"elhy1999"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" public void parseCommand_editTransaction() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" Transaction transaction \u003d new TransactionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand.EditTransactionDescriptor descriptor \u003d new EditTransactionDescriptorBuilder(transaction)","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" String input \u003d EditTransactionCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TRANSACTION.getOneBased() + \" \";","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"elhy1999"},"content":" input +\u003d TransactionUtil.getEditTransactionDescriptorDetails(descriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"elhy1999"},"content":" EditTransactionCommand command \u003d (EditTransactionCommand) parser.parseCommand(input);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new EditTransactionCommand(INDEX_FIRST_TRANSACTION, descriptor), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" public void parseCommand_getTotalExpenditure() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" assertTrue(","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" parser.parseCommand(GetTotalExpenditureCommand.COMMAND_WORD + \" month/8\")","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" instanceof GetTotalExpenditureCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" assertTrue(","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" parser.parseCommand(ClearTransactionsCommand.COMMAND_WORD + \" month/8 c/Food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" instanceof ClearTransactionsCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_helpUniCash() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" public void parseCommand_exitUniCash() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":" ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" var message \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, message, () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"sp4ce-cowboy":71,"woojiahao":12,"lipwei1808":8,"jamz903":1,"-":41,"elhy1999":9}},{"path":"src/test/java/unicash/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.model.Model.PREDICATE_SHOW_ALL_TRANSACTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.TransactionNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.UniCashBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertEquals(new UniCash(), new UniCash(modelManager.getUniCash()));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUniCashFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_validPath_setsUniCashFilePath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" modelManager.setUniCashFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" assertEquals(path, modelManager.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setUniCash_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUniCash(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTransaction(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionNotInUniCash_returnsFalse() {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" assertFalse(modelManager.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" assertTrue(modelManager.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction_transactionNotInUniCash_throws() {","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e modelManager.deleteTransaction(BUYING_GROCERIES));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void deleteTransaction_transactionInUniCash_throws() {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" modelManager.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e modelManager.deleteTransaction(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" public void getFilteredUniCash_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTransactionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" UniCash differentUniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"woojiahao"},"content":" modelManager \u003d new ModelManager(uniCash, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(uniCash, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"woojiahao"},"content":" assertEquals(modelManager, modelManagerCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":" assertEquals(modelManager, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5, modelManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" assertFalse(modelManager.equals(uniCash));","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"elhy1999"},"content":" String[] keywords \u003d new String[] {\"internship\"};","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"woojiahao"},"content":" modelManager.updateFilteredTransactionList(","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"woojiahao"},"content":" new TransactionNameContainsKeywordsPredicate(Arrays.asList(keywords))","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" assertFalse(modelManager.equals(new ModelManager(uniCash, userPrefs)));","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" modelManager.updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" differentUserPrefs.setUniCashFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(modelManager, new ModelManager(uniCash, differentUserPrefs));","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" // different differentUniCash -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(modelManager, new ModelManager(differentUniCash, userPrefs));","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"sp4ce-cowboy":19,"woojiahao":25,"lipwei1808":40,"-":71,"elhy1999":1}},{"path":"src/test/java/unicash/model/UniCashTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.UniCashBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"public class UniCashTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void constructor() {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertEquals(Collections.emptyList(), uniCash.getTransactionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.resetData(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public void resetData_withValidReadOnlyUniCash_replacesData() {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" UniCash newData \u003d getTypicalUniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" uniCash.resetData(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertEquals(newData, uniCash);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void resetData_withDuplicateTransactions_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" Transaction editedNus \u003d new TransactionBuilder(NUS).withAmount(VALID_AMOUNT_INTERN).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e newTransactions \u003d Arrays.asList(NUS, editedNus);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" UniCashTest.UniCashStub newData \u003d new UniCashTest.UniCashStub(newTransactions);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e uniCash.resetData(newData));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.hasTransaction(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_transactionNotInUniCash_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertFalse(uniCash.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void hasTransaction_personInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" assertTrue(uniCash.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniCash.setTransaction(NUS, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_transactionNotInUniCash_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e uniCash.setTransaction(NUS, BUYING_GROCERIES));","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_transactionInUniCash_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e uniCash.setTransaction(NUS, BUYING_GROCERIES));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void removeTransaction_personInUniCash_returnsTrue() {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" UniCash transactionList \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" assertTrue(transactionList.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" transactionList.removeTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.hasTransaction(NUS));","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" public void getUniCash_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e uniCash.getTransactionList().remove(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" String expected \u003d UniCash.class.getCanonicalName() + \"{transactions\u003d\" + uniCash.getTransactionList() + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, uniCash.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" UniCash transactionList \u003d new UniCashBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" // same lists","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" transactionList.addTransaction(NUS);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" UniCash anotherList \u003d new UniCashBuilder().withTransaction(NUS).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" // different lists","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" anotherList \u003d new UniCashBuilder().withTransaction(INTERN).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"woojiahao"},"content":" assertFalse(transactionList.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" * A stub ReadOnlyUniCash whose persons list can violate interface constraints.","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" private static class UniCashStub implements ReadOnlyUniCash {","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" private final ObservableList\u003cTransaction\u003e transactions \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" UniCashStub(Collection\u003cTransaction\u003e transactions) {","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" this.transactions.setAll(transactions);","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public ObservableList\u003cTransaction\u003e getTransactionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" return transactions;","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash1 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash2 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" UniCash uniCash3 \u003d new UniCash();","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" uniCash3.addTransaction(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" assertEquals(uniCash1.hashCode(), uniCash2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(uniCash1.hashCode(), uniCash3.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":11,"woojiahao":7,"lipwei1808":139}},{"path":"src/test/java/unicash/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" public void setUniCashFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setUniCashFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" var userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" assertEquals(userPrefs, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" assertFalse(userPrefs.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" var changedGuiSettings \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" changedGuiSettings.setGuiSettings(new GuiSettings(0, 0, 0, 0));","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(changedGuiSettings, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" var changedUniCashFilePath \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" changedUniCashFilePath.setUniCashFilePath(Path.of(\"invalid_path\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(changedUniCashFilePath, userPrefs);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs1 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs2 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" UserPrefs userPrefs3 \u003d new UserPrefs();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" userPrefs3.setGuiSettings(new GuiSettings(0, 0, 0, 0));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" assertEquals(userPrefs1.hashCode(), userPrefs2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(userPrefs1.hashCode(), userPrefs3.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":23,"lipwei1808":10,"-":16}},{"path":"src/test/java/unicash/model/budget/BudgetTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.DAILY;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.MONTHLY;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalBudgets.WEEKLY;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import unicash.testutil.BudgetBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"public class BudgetTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" Budget groceriesCopy \u003d new BudgetBuilder(DAILY).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY, groceriesCopy);","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, groceriesCopy);","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(5, DAILY);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DAILY.equals(5));","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, WEEKLY);","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" // different interval -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" Budget editedDaily \u003d new BudgetBuilder(DAILY).withInterval(\"week\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, editedDaily);","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" // different amount -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" editedDaily \u003d new BudgetBuilder(DAILY).withAmount(1330.15).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY, editedDaily);","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" String expected \u003d","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" Budget.class.getCanonicalName()","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" + \"{amount\u003d\" + DAILY.getAmount()","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" + \", interval\u003d\" + DAILY.getInterval()","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" + \"}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expected, DAILY.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" assertEquals(DAILY.hashCode(), DAILY.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(DAILY.hashCode(), MONTHLY.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":62}},{"path":"src/test/java/unicash/model/budget/IntervalTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class IntervalTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e new Interval(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidInterval_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" String[] invalidIntervals \u003d new String[] {\"\", \"1\", \"Wrong\"};","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" for (String invalidInterval: invalidIntervals) {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Interval(invalidInterval));","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void isValidInterval() {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"\")); // empty string","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" \")); // spaces only","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"^\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"peter*\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"transfers\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\"day\u0026\")); // wrong interval","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" day \")); // valid day with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" week \")); // valid week with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Interval.isValidInterval(\" month \")); // valid month with whitespace","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"day\")); // day","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"week\")); // week","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Interval.isValidInterval(\"month\")); // month","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" Interval interval \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" assertEquals(interval, new Interval(\"week\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" assertEquals(interval, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // different intervals -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(5.0f, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" assertFalse(interval.equals(5));","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(interval, new Interval(\"month\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" Interval week \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" Interval week2 \u003d new Interval(\"week\");","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" Interval month \u003d new Interval(\"month\");","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" assertEquals(week.hashCode(), week2.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(week.hashCode(), month.hashCode());","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":78}},{"path":"src/test/java/unicash/model/category/CategoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public class CategoryTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e new Category(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidCategoryName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" String invalidCategoryName \u003d \"\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Category(invalidCategoryName));","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public void isValidCategoryName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" // null Category name","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e Category.isValidCategory(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" // contains non-alphanumeric","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"ca\u0026**\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" // empty","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" // longer than 15 characters","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Category.isValidCategory(\"categorycategorycategory\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Category.isValidCategory(\"entertainment\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" Category category \u003d new Category(\"Valid\");","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(category.equals(new Category(\"Valid\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertTrue(category.equals(category));","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(5.0f));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" assertFalse(category.equals(new Category(\"Another\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"sp4ce-cowboy":2,"lipwei1808":56}},{"path":"src/test/java/unicash/model/category/UniqueCategoryListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.category;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalCategories.EDUCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalCategories.ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.CategoryNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.DuplicateCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.exceptions.MaxCategoryException;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"public class UniqueCategoryListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" private final UniqueCategoryList uniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void constructor_duplicate_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e new UniqueCategoryList(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public void constructor_moreThanMaximumAllowed_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c\u003d UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e new UniqueCategoryList(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void contains_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.contains(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public void contains_categoryNotInList_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" assertFalse(uniqueCategoryList.contains(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" public void contains_categoryInList_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" assertTrue(uniqueCategoryList.contains(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public void add_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.add(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void add_duplicateCategory_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e uniqueCategoryList.add(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" public void add_maxCategory_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e uniqueCategoryList.add(new Category(\"test4\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_nullTargetCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategory(null, ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_nullEditedCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, null));","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_targetCategoryNotInList_throwsCategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" assertThrows(CategoryNotFoundException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryIsSameCategory_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategory(ENTERTAINMENT, EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" public void setCategory_editedCategoryHasNonUniqueIdentity_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e uniqueCategoryList.setCategory(ENTERTAINMENT, EDUCATION));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" public void remove_nullCategory_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.remove(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" public void remove_categoryDoesNotExist_throwsCategoryNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" assertThrows(CategoryNotFoundException.class, () -\u003e uniqueCategoryList.remove(ENTERTAINMENT));","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" public void remove_existingCategory_removesCategory() {","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.remove(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_nullUniqueCategoryList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategories((UniqueCategoryList) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_uniqueCategoryList_replacesOwnListWithProvidedUniqueCategoryList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(expectedUniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_moreThanMaxAllowed_throwsMaxCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c\u003d UniqueCategoryList.MAX_CATEGORIES; i++) {","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" categoryList.add(new Category(\"Test\" + i));","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" assertThrows(MaxCategoryException.class, () -\u003e uniqueCategoryList.setCategories(categoryList));","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCategoryList.setCategories((List\u003cCategory\u003e) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoryList \u003d Collections.singletonList(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(categoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList expectedUniqueCategoryList \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueCategoryList.add(EDUCATION);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueCategoryList, uniqueCategoryList);","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" public void setCategories_listWithDuplicateCategories_throwsDuplicateCategoryException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e listWithDuplicateCategories \u003d Arrays.asList(ENTERTAINMENT, ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" assertThrows(DuplicateCategoryException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" uniqueCategoryList.setCategories(listWithDuplicateCategories));","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" -\u003e uniqueCategoryList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" assertEquals(uniqueCategoryList.asUnmodifiableObservableList().toString(), uniqueCategoryList.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList1 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList2 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" UniqueCategoryList categoryList3 \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" categoryList3.add(ENTERTAINMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" assertEquals(categoryList1.hashCode(), categoryList2.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(categoryList1.hashCode(), categoryList3.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":205}},{"path":"src/test/java/unicash/model/commons/AmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.model.commons;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class AmountTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public void constructor_negativeAmount_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Amount(-10));","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public void isValidAmount() {","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Amount.isValidAmount(-1));","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Amount.isValidAmount(-0.000001));","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(0.000));","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(10));","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Amount.isValidAmount(12.13));","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Amount amount \u003d new Amount(12.13);","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertEquals(12.13, amount.amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertEquals(amount, amount);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertEquals(amount, new Amount(12.13));","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(amount, null);","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(amount, new Amount(12.16));","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" public void amountToDecimalString_standardConversion_returnsCorrectString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amt \u003d new Amount(1234.5678);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" String result \u003d Amount.amountToDecimalString(amt);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"1234.57\", result);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" public void amountToDecimalString_roundingRequired_returnsRoundedString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" Amount amt \u003d new Amount(45.678);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" String result \u003d Amount.amountToDecimalString(amt);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(\"45.68\", result);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":16,"lipwei1808":33}},{"path":"src/test/java/unicash/model/transaction/DateTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"jamz903"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.Clock;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.Instant;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.time.ZoneId;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class DateTimeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(\"18-08-2001 18:18\", null));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateTime(null, null));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public void constructor_noDateTime_setDefault() {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" Clock clock \u003d Clock.fixed(Instant.parse(\"2014-12-21T10:15:30.00Z\"), ZoneId.of(\"UTC\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" String empty \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"jamz903"},"content":" assertEquals(\"21 Dec 2014 10:15\", new DateTime(empty, clock).toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public void isValidDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"1-1-2001 18:18\")); // wrong day and month format","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"01-1-2001 17:1\")); // invalid time","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"01-01-2001\")); // missing time","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"18:18\")); // missing date","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"20-31-2001 18:18\")); // invalid date","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"20-01-2001 25:18\")); // invalid time","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertFalse(DateTime.isValidDateTime(\"31-02-2001 18:18\")); // invalid date","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"jamz903"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"jamz903"},"content":" public void isValidDate_acceptedFormats() {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"jamz903"},"content":" assertTrue(DateTime.isValidDateTime(\"01-01-2001 18:18\")); //dd-MM-uuuu HH:mm","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"jamz903"},"content":" assertTrue(DateTime.isValidDateTime(\"2001-01-01 18:18\")); //uuuu-MM-dd HH:mm","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"jamz903"},"content":" assertTrue(DateTime.isValidDateTime(\"01 Jan 2001 18:18\")); //dd MMM uuuu HH:mm","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"jamz903"},"content":" public void inputString() {","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"jamz903"},"content":" DateTime dateTimeFormatOne \u003d new DateTime(\"18-12-2023 01:01\");","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"jamz903"},"content":" String stringifyOne \u003d dateTimeFormatOne.inputString();","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"jamz903"},"content":" assertEquals(\"18-12-2023 01:01\", stringifyOne);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"jamz903"},"content":" DateTime dateTimeFormatTwo \u003d new DateTime(\"2023-12-18 01:01\");","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"jamz903"},"content":" String stringifyTwo \u003d dateTimeFormatTwo.inputString();","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"jamz903"},"content":" assertEquals(\"2023-12-18 01:01\", stringifyTwo);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"jamz903"},"content":" DateTime dateTimeFormatThree \u003d new DateTime(\"18 Dec 2023 01:01\");","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"jamz903"},"content":" String stringifyThree \u003d dateTimeFormatThree.inputString();","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"jamz903"},"content":" assertEquals(\"18 Dec 2023 01:01\", stringifyThree);","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" DateTime datetime \u003d new DateTime(\"01-01-2001 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertEquals(datetime, new DateTime(\"01-01-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" assertEquals(datetime, datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(\"hi\", datetime);","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-01-2000 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" // different month -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-02-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" // different day -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"02-01-2001 01:01\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" // different time -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(datetime, new DateTime(\"01-01-2001 02:02\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" assertFalse(datetime.equals(2));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"jamz903"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"jamz903"},"content":" public void differentFormatEquals() {","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"jamz903"},"content":" //check if different formats are equal using the DateTime.java equals() method","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"jamz903"},"content":" DateTime datetime1 \u003d new DateTime(\"01-01-2001 01:01\");","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"jamz903"},"content":" DateTime datetime2 \u003d new DateTime(\"2001-01-01 01:01\");","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"jamz903"},"content":" DateTime datetime3 \u003d new DateTime(\"01 Jan 2001 01:01\");","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"jamz903"},"content":" assertTrue(datetime1.equals(datetime2));","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"jamz903"},"content":" assertTrue(datetime2.equals(datetime3));","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"jamz903"},"content":" assertTrue(datetime1.equals(datetime3));","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"jamz903"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"jamz903"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime \u003d new DateTime(\"18-08-2023 01:01\");","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"jamz903"},"content":" assertEquals(dateTime.toString(), \"18 Aug 2023 01:01\");","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime1 \u003d new DateTime(\"01-01-2001 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime2 \u003d new DateTime(\"01-01-2001 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" DateTime dateTime3 \u003d new DateTime(\"01-01-2002 12:12\");","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" assertEquals(dateTime1.hashCode(), dateTime2.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(dateTime1.hashCode(), dateTime3.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":5,"woojiahao":10,"lipwei1808":72,"jamz903":35}},{"path":"src/test/java/unicash/model/transaction/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class LocationTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_noLocation_setDefault() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" assertEquals(\"-\", new Location(\"\").toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" assertEquals(\"-\", new Location(\" \").toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" public void isValidLocation() {","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"\")); // empty string","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\" \")); // spaces only","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"^\")); // only non-allowed characters","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Location.isValidLocation(\"peter*\")); // contains non-allowed characters","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"fairprice\")); // alphabets only","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"12345\")); // numbers only","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"block 283\")); // alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice\")); // with capital letters","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice at NUS University Town\")); // long names","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice (NUS)\")); // ()","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice #02-160\")); // # and -","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Fairprice (NUS_UTown)\")); // _","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"Ben \u0026 Jerry\")); // \u0026","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"First Avenue, Block 283\")); // ,","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Location.isValidLocation(\"First Avenue, Block 28.3\")); // ,","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertTrue(Location.isValidLocation(\"-\")); // Blank location","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" Location name \u003d new Location(\"Valid Location\");","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" assertEquals(name, new Location(\"Valid Location\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertEquals(name, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" assertFalse(name.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(name, new Location(\"Other Valid Location\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":9,"lipwei1808":58}},{"path":"src/test/java/unicash/model/transaction/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" assertEquals(name, new Name(\"Valid Name\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" assertEquals(name, name);","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(null, name);","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, name);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" assertFalse(name.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(name, new Name(\"Other Valid Name\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"sp4ce-cowboy":2,"woojiahao":2,"lipwei1808":8,"-":53}},{"path":"src/test/java/unicash/model/transaction/TransactionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.NUS;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.exceptions.TransactionNotFoundException;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"public class TransactionListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private final TransactionList transactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public void contains_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public void contains_transactionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.contains(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public void contains_transactionInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" assertTrue(transactionList.contains(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public void contains_differentTransaction_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" Transaction editedNus \u003d new TransactionBuilder(NUS).withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" assertFalse(transactionList.contains(editedNus));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" public void add_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.add(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void add_duplicateTransaction_doesNotThrow() {","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e transactionList.add(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_nullTargetTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransaction(null, NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_nullEditedTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransaction(NUS, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_targetTransactionNotInList_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e transactionList.setTransaction(NUS, NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_editedTransactionIsSameTransaction_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransaction(NUS, NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedUniqueTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" expectedUniqueTransactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedUniqueTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public void setTransaction_editedTransactionHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransaction(NUS, BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void remove_nullTransaction_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.remove(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public void remove_transactionDoesNotExist_throwsTransactionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertThrows(TransactionNotFoundException.class, () -\u003e transactionList.remove(NUS));","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public void remove_existingTransaction_removesTransaction() {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" transactionList.remove(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_nullTransactionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransactions((TransactionList) null));","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_transactionList_replacesOwnListWithProvidedTransactionList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransactions(expectedTransactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" assertThrows(NullPointerException.class, () -\u003e transactionList.setTransactions((List\u003cTransaction\u003e) null));","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_uniqueTransactionList_replacesOwnListWithProvidedUniqueTransactionList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" TransactionList expectedTransactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" expectedTransactionList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" transactionList.setTransactions(expectedTransactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedTransactionList, transactionList);","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" public void setTransactions_listWithDuplicateTransactions_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e listWithDuplicateTransactions \u003d Arrays.asList(NUS, NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e transactionList.setTransactions(listWithDuplicateTransactions));","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" -\u003e transactionList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transactionList.asUnmodifiableObservableList().toString(), transactionList.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" public void iterator() {","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(INTERN);","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" Iterator\u003cTransaction\u003e iterator \u003d transactionList.iterator();","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e actual \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" while (iterator.hasNext()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" actual.add(iterator.next());","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" List\u003cTransaction\u003e expectedIterator \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" expectedIterator.add(NUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" expectedIterator.add(INTERN);","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" assertEquals(expectedIterator, actual);","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" // same lists","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" transactionList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" TransactionList anotherList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" anotherList.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" assertEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" // different lists","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" anotherList \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" anotherList.add(BUYING_GROCERIES);","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(transactionList, anotherList);","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, transactionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" assertFalse(transactionList.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-13"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList1 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList2 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"lipwei1808"},"content":" TransactionList transactionList3 \u003d new TransactionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"lipwei1808"},"content":" transactionList3.add(NUS);","lastModifiedDate":"2023-10-13"},{"lineNumber":203,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transactionList1.hashCode(), transactionList2.hashCode());","lastModifiedDate":"2023-10-13"},{"lineNumber":204,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(transactionList1.hashCode(), transactionList3.hashCode());","lastModifiedDate":"2023-10-13"},{"lineNumber":205,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":206,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":6,"lipwei1808":193}},{"path":"src/test/java/unicash/model/transaction/TransactionNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" // One keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.singletonList(\"Food\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food at mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Food\", \"mcdonalds\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"Chicken\", \"Rice\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Chicken Rice\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(Arrays.asList(\"fOod\", \"McDonalds\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" assertTrue(predicate.test(new TransactionBuilder().withName(\"Food mcdonalds\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" // Zero keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(predicate.test(new TransactionBuilder().withName(\"Food\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" predicate \u003d new TransactionNameContainsKeywordsPredicate(List.of(\"Food\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(predicate.test(new TransactionBuilder().withName(\"Chicken Rice\").build()));","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" TransactionNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" new TransactionNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d TransactionNameContainsKeywordsPredicate","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" .class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"sp4ce-cowboy":81,"woojiahao":9}},{"path":"src/test/java/unicash/model/transaction/TransactionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.DINING_WITH_FRIENDS;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.WORK_AT_LIHO;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction groceriesCopy \u003d new TransactionBuilder(BUYING_GROCERIES).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES, groceriesCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(null, groceriesCopy);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(null, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(5, BUYING_GROCERIES);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(BUYING_GROCERIES.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, DINING_WITH_FRIENDS);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withName(\"Another thing\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" // different amount -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withAmount(10.15).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" // different date -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES)","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"01-01-1999 18:18\")","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" // different location -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withLocation(\"UTown\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" // different transaction type -\u003e return false","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withType(\"expense\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES, editedGroceries);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" // different categories -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" editedGroceries \u003d new TransactionBuilder(BUYING_GROCERIES).withCategories(\"TEST\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" assertFalse(BUYING_GROCERIES.equals(editedGroceries));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" String expected \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" Transaction.class.getCanonicalName()","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"{name\u003d\" + BUYING_GROCERIES.getName()","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", type\u003d\" + BUYING_GROCERIES.getType()","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", amount\u003d\" + BUYING_GROCERIES.getAmount()","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", dateTime\u003d\" + BUYING_GROCERIES.getDateTime()","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", location\u003d\" + BUYING_GROCERIES.getLocation()","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" + \", categories\u003d\" + BUYING_GROCERIES.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" + \"}\";","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(expected, BUYING_GROCERIES.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" assertEquals(BUYING_GROCERIES.hashCode(), BUYING_GROCERIES.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":" assertNotEquals(BUYING_GROCERIES.hashCode(), WORK_AT_LIHO.hashCode());","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":85}},{"path":"src/test/java/unicash/model/transaction/TypeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.model.transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class TypeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Type(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void constructor_invalidType_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" String[] invalidTypes \u003d new String[] {\"\", \"1\", \"Wrong\"};","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" for (String invalidType: invalidTypes) {","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Type(invalidType));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void isValidType() {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" // null name","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" // invalid name","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"\")); // empty string","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\" \")); // spaces only","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"^\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"peter*\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertFalse(Type.isValidType(\"transfers\")); // wrong type","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" // valid name","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Type.isValidType(\"income\")); // income","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" assertTrue(Type.isValidType(\"expense\")); // expense","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" Type type \u003d new Type(\"income\");","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" assertEquals(type, new Type(\"income\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" assertEquals(type, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(null, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(5.0f, type);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" assertFalse(type.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" assertNotEquals(type, new Type(\"expense\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void hashCode_test() {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" Type expense \u003d new Type(\"expense\");","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" Type income \u003d new Type(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" Type income2 \u003d new Type(\"income\");","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" assertEquals(income.hashCode(), income2.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" assertNotEquals(expense.hashCode(), income.hashCode());","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":8,"lipwei1808":61}},{"path":"src/test/java/unicash/storage/JsonAdaptedCategoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"woojiahao"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedCategoryTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_CATEGORY \u003d \"@@@\";","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_CATEGORY \u003d \"Food\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidCategory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":" var adaptedCategory \u003d new JsonAdaptedCategory(INVALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, adaptedCategory::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" public void toModelType_validCategory_returnsCategory() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":" var adaptedCategory \u003d new JsonAdaptedCategory(VALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" var expected \u003d new Category(VALID_CATEGORY);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" assertEquals(expected, adaptedCategory.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"woojiahao":27}},{"path":"src/test/java/unicash/storage/JsonAdaptedTransactionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.storage.JsonAdaptedTransaction.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.SHOPPING;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TransactionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":"public class JsonAdaptedTransactionTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" private static final double INVALID_AMOUNT \u003d -10;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_CATEGORY \u003d \"@@@\";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_DATETIME \u003d \"hi\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_LOCATION \u003d \"@@@@\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" private static final String INVALID_TYPE \u003d \"others\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_NAME \u003d SHOPPING.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" private static final double VALID_AMOUNT \u003d SHOPPING.getAmount().amount;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"jamz903"},"content":" private static final String VALID_DATETIME \u003d SHOPPING.getDateTime().inputString();","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_LOCATION \u003d SHOPPING.getLocation().location;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" private static final String VALID_TYPE \u003d SHOPPING.getType().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" private static final List\u003cJsonAdaptedCategory\u003e VALID_CATEGORIES \u003d SHOPPING.getCategories()","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" .asUnmodifiableObservableList()","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" .stream()","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" .map(JsonAdaptedCategory::new)","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(SHOPPING);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" assertEquals(SHOPPING, transaction.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" INVALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidAmount_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" INVALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Amount.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public void toModelType_invalidCategories_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" List\u003cJsonAdaptedCategory\u003e invalidCategories \u003d new ArrayList\u003c\u003e(VALID_CATEGORIES);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" invalidCategories.add(new JsonAdaptedCategory(INVALID_CATEGORY));","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" JsonAdaptedTransaction transaction \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" INVALID_AMOUNT,","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" invalidCategories);","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullCategory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" null","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" Transaction transaction2 \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" .withName(VALID_NAME)","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" .withAmount(VALID_AMOUNT)","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" .withDateTime(VALID_DATETIME)","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" .withLocation(VALID_LOCATION)","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" .withType(VALID_TYPE)","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" .withCategories()","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" assertEquals(transaction.toModelType(), transaction2);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"woojiahao"},"content":" INVALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d DateTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"woojiahao"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, DateTime.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"woojiahao"},"content":" INVALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" VALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" INVALID_TYPE,","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"woojiahao"},"content":" String expectedMessage \u003d Type.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"woojiahao"},"content":" public void toModelType_nullType_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"woojiahao"},"content":" var transaction \u003d new JsonAdaptedTransaction(","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"woojiahao"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"woojiahao"},"content":" VALID_AMOUNT,","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"woojiahao"},"content":" VALID_DATETIME,","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"woojiahao"},"content":" VALID_LOCATION,","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":" null,","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" VALID_CATEGORIES","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"woojiahao"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"sp4ce-cowboy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Type.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"sp4ce-cowboy"},"content":" assertThrows(IllegalValueException.class, expectedMessage, transaction::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":23,"woojiahao":126,"lipwei1808":52,"jamz903":1}},{"path":"src/test/java/unicash/storage/JsonSerializableUniCashTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.util.JsonUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"woojiahao"},"content":"public class JsonSerializableUniCashTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"woojiahao"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableUniCashTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":" private static final Path TYPICAL_TRANSACTIONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private static final Path INVALID_TRANSACTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Path DUPLICATE_TRANSACTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTransactionUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public void toModelType_typicalTransactionsFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TRANSACTIONS_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" UniCash uniCashFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash typicalTransactionsUniCash \u003d SampleDataUtil.getSampleUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" assertEquals(uniCashFromFile, typicalTransactionsUniCash);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" public void toModelType_invalidTransactionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TRANSACTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public void toModelType_duplicateTransactions_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TRANSACTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" JsonSerializableUniCash.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":" assertThrows(IllegalValueException.class, JsonSerializableUniCash.MESSAGE_DUPLICATE_TRANSACTION,","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":7,"woojiahao":41}},{"path":"src/test/java/unicash/storage/JsonUniCashStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"woojiahao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.BUYING_GROCERIES;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.INTERN;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.TypicalTransactions.getTypicalUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"woojiahao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"woojiahao"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"woojiahao"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.ReadOnlyUniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":"public class JsonUniCashStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"woojiahao"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUniCashStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"woojiahao"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"woojiahao"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e readUniCash(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" private java.util.Optional\u003cReadOnlyUniCash\u003e readUniCash(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"woojiahao"},"content":" return new JsonUniCashStorage(Paths.get(filePath)).readUniCash(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"woojiahao"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"woojiahao"},"content":" return prefsFileInTestDataFolder !\u003d null ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder) : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"woojiahao"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"woojiahao"},"content":" assertFalse(readUniCash(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"notJsonFormatUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_invalidTransactionUniCash_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"invalidTransactionUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"woojiahao"},"content":" public void readUniCash_invalidAndValidTransactionUniCash_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUniCash(\"invalidAndValidTransactionUniCash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"woojiahao"},"content":" public void readAndSaveUniCash_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"woojiahao"},"content":" Path filePath \u003d testFolder.resolve(\"TempUniCash.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"woojiahao"},"content":" UniCash original \u003d getTypicalUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" JsonUniCashStorage jsonUniCashStorage \u003d new JsonUniCashStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" original.removeTransaction(INTERN);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"woojiahao"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"woojiahao"},"content":" ReadOnlyUniCash readBack \u003d jsonUniCashStorage.readUniCash(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"woojiahao"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"woojiahao"},"content":" original.addTransaction(INTERN);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"woojiahao"},"content":" original.removeTransaction(BUYING_GROCERIES);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"woojiahao"},"content":" readBack \u003d jsonUniCashStorage.readUniCash(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"woojiahao"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"woojiahao"},"content":" original.addTransaction(BUYING_GROCERIES);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"woojiahao"},"content":" jsonUniCashStorage.saveUniCash(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"woojiahao"},"content":" readBack \u003d jsonUniCashStorage.readUniCash().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"woojiahao"},"content":" assertEquals(original, new UniCash(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash_nullUniCash_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUniCash(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"woojiahao"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"woojiahao"},"content":" * Saves {@code UniCash} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"woojiahao"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"woojiahao"},"content":" private void saveUniCash(ReadOnlyUniCash uniCash, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"woojiahao"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"woojiahao"},"content":" new JsonUniCashStorage(Paths.get(filePath)).saveUniCash(uniCash, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"woojiahao"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"woojiahao"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"woojiahao"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"woojiahao"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"woojiahao"},"content":" public void saveUniCash_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"woojiahao"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUniCash(new UniCash(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"woojiahao"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"woojiahao"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":99}},{"path":"src/test/java/unicash/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"woojiahao"},"content":" userPrefs.setUniCashFilePath(Paths.get(\"data/unicash.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"sp4ce-cowboy":6,"woojiahao":1,"-":117}},{"path":"src/test/java/unicash/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.testutil.TypicalTransactions;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"woojiahao"},"content":" var uniCashStorage \u003d new JsonUniCashStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"woojiahao"},"content":" var userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"woojiahao"},"content":" storageManager \u003d new StorageManager(uniCashStorage, userPrefsStorage);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" public void uniCashReadSave() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"woojiahao"},"content":" var original \u003d TypicalTransactions.getTypicalUniCash();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"woojiahao"},"content":" storageManager.saveUniCash(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"woojiahao"},"content":" var retrieved \u003d storageManager.readUniCash().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" Assertions.assertEquals(original, new UniCash(retrieved));","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"woojiahao"},"content":" public void getUniCashFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"woojiahao"},"content":" assertNotNull(storageManager.getUniCashFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":8,"-":52}},{"path":"src/test/java/unicash/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"woojiahao"},"content":" System.out.println(thrownException.getMessage());","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"sp4ce-cowboy":1,"woojiahao":1,"-":33}},{"path":"src/test/java/unicash/testutil/BudgetBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building Budget objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class BudgetBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final double DEFAULT_AMOUNT \u003d 123.45;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_INTERVAL \u003d \"week\";","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" private Amount amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private Interval interval;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code BudgetBuilder} with the default details.","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" interval \u003d new Interval(DEFAULT_INTERVAL);","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * Initializes the BudgetBuilder with the data of {@code budgetToCopy}.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder(Budget budgetToCopy) {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" amount \u003d budgetToCopy.getAmount();","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" interval \u003d budgetToCopy.getInterval();","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Amount} of the {@code Budget} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code LocalDateTime} of the {@code Budget} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" public BudgetBuilder withInterval(String interval) {","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" this.interval \u003d new Interval(interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" public Budget build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" return new Budget(amount, interval);","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":53}},{"path":"src/test/java/unicash/testutil/EditTransactionDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"elhy1999"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"elhy1999"},"content":" * A utility class to help with building EditTransactionDescriptor objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"elhy1999"},"content":"public class EditTransactionDescriptorBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"woojiahao"},"content":" private final EditTransactionCommand.EditTransactionDescriptor descriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"elhy1999"},"content":" descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder(EditTransactionCommand.EditTransactionDescriptor descriptor) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"elhy1999"},"content":" this.descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor(descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"elhy1999"},"content":" * Returns an {@code EditTransactionDescriptor} with fields containing {@code transaction}\u0027s details","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder(Transaction transaction) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"elhy1999"},"content":" descriptor \u003d new EditTransactionCommand.EditTransactionDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"elhy1999"},"content":" descriptor.setName(transaction.getName());","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"elhy1999"},"content":" descriptor.setAmount(transaction.getAmount());","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"elhy1999"},"content":" descriptor.setDateTime(transaction.getDateTime());","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"elhy1999"},"content":" descriptor.setLocation(transaction.getLocation());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"elhy1999"},"content":" descriptor.setType(transaction.getType());","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" descriptor.setCategories(transaction.getCategories());","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Name} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"elhy1999"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Amount} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"elhy1999"},"content":" descriptor.setAmount(new Amount(amount));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code DateTime} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withDateTime(String dateTime) {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"elhy1999"},"content":" descriptor.setDateTime(new DateTime(dateTime));","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Location} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"elhy1999"},"content":" descriptor.setLocation(new Location(location));","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"elhy1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"elhy1999"},"content":" * Sets the {@code Type} of the {@code EditTransactionDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"elhy1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":" public EditTransactionDescriptorBuilder withType(String type) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"elhy1999"},"content":" descriptor.setType(new Type(type));","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" * Parses the {@code categories} into a {@code Set\u003cCategory\u003e} and set it to the {@code EditTransactionDescriptor}","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" public EditTransactionDescriptorBuilder withCategories(String... categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categoriesList \u003d Stream.of(categories).map(Category::new).collect(Collectors.toList());","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" descriptor.setCategories(new UniqueCategoryList(categoriesList));","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"elhy1999"},"content":" public EditTransactionCommand.EditTransactionDescriptor build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"elhy1999"},"content":" return descriptor;","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"elhy1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"elhy1999"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"sp4ce-cowboy":8,"woojiahao":1,"lipwei1808":17,"elhy1999":71}},{"path":"src/test/java/unicash/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A class used to test serialization and deserialization","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":71}},{"path":"src/test/java/unicash/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"woojiahao"},"content":" return Index.fromOneBased(model.getFilteredTransactionList().size() / 2);","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"woojiahao"},"content":" return Index.fromOneBased(model.getFilteredTransactionList().size());","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"woojiahao"},"content":" public static Transaction getTransaction(Model model, Index index) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"woojiahao"},"content":" return model.getFilteredTransactionList().get(index.getZeroBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"sp4ce-cowboy":4,"woojiahao":4,"-":47}},{"path":"src/test/java/unicash/testutil/TransactionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.UniqueCategoryList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.commons.Amount;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.DateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Location;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Type;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building Transaction objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"public class TransactionBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"elhy1999"},"content":" public static final String DEFAULT_NAME \u003d \"Dog food\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public static final double DEFAULT_AMOUNT \u003d 123.45;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_CATEGORY \u003d \"Food\";","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_DATE_TIME \u003d \"18-08-2001 10:10\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_LOCATION \u003d \"Fairprice\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public static final String DEFAULT_TYPE \u003d \"income\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" private Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" private Amount amount;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" private UniqueCategoryList categories;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" private DateTime dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" private Location location;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" private Type type;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" * Creates a {@code TransactionBuilder} with the default details.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" dateTime \u003d new DateTime(DEFAULT_DATE_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" type \u003d new Type(DEFAULT_TYPE);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" categories \u003d new UniqueCategoryList();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" categories.add(new Category(DEFAULT_CATEGORY));","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" * Initializes the TransactionBuilder with the data of {@code transactionToCopy}.","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder(Transaction transactionToCopy) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" name \u003d transactionToCopy.getName();","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" amount \u003d transactionToCopy.getAmount();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" dateTime \u003d transactionToCopy.getDateTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" location \u003d transactionToCopy.getLocation();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" type \u003d transactionToCopy.getType();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" categories \u003d transactionToCopy.getCategories();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Name} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withName(String name) {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Amount} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withAmount(double amount) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code LocalDateTime} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withDateTime(String dateString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" this.dateTime \u003d new DateTime(dateString);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Location} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withLocation(String location) {","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" * Sets the {@code Type} of the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withType(String type) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d new Type(type);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" * Parses the {@code categories} into a {@code Set\u003cCategory\u003e} and set it to","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" * the {@code Transaction} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public TransactionBuilder withCategories(String ... categories) {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" this.categories \u003d SampleDataUtil.getCategoryList(categories);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public Transaction build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" return new Transaction(name, type, amount, dateTime, location, categories);","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":8,"lipwei1808":101,"elhy1999":1}},{"path":"src/test/java/unicash/testutil/TransactionUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_CATEGORY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.parser.CliSyntax.PREFIX_TYPE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.AddTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.logic.commands.EditTransactionCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":" * A utility class for Transaction.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TransactionUtil {","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns an add command string for adding the {@code transaction}.","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getAddTransactionCommand(Transaction transaction) {","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" return AddTransactionCommand.COMMAND_WORD + \" \" + getTransactionDetails(transaction);","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns the part of command string for the given {@code transaction}\u0027s details.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getTransactionDetails(Transaction transaction) {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_NAME).append(transaction.getName().fullName).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_TYPE).append(transaction.getType().type.getOriginalString()).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_AMOUNT).append(transaction.getAmount().toString()).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jamz903"},"content":" sb.append(PREFIX_DATETIME).append(transaction.getDateTime().inputString()).append(\" \");","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_LOCATION).append(transaction.getLocation().location).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" transaction.getCategories().forEach(","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" category -\u003e sb.append(PREFIX_CATEGORY).append(category.category).append(\" \")","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" return sb.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" public static String getEditTransactionDescriptorDetails(EditTransactionCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .EditTransactionDescriptor descriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName)","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getType().ifPresent(type -\u003e sb.append(PREFIX_TYPE).append(type.type.getOriginalString())","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getAmount().ifPresent(amount -\u003e sb.append(PREFIX_AMOUNT).append(amount.amount)","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" descriptor.getLocation().ifPresent(location -\u003e sb.append(PREFIX_LOCATION).append(location)","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"jamz903"},"content":" descriptor.getDateTime().ifPresent(dateTime -\u003e sb.append(PREFIX_DATETIME).append(dateTime.inputString())","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" if (descriptor.getCategories().isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" List\u003cCategory\u003e categories \u003d descriptor.getCategories().get().asUnmodifiableObservableList();","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" if (categories.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" sb.append(PREFIX_CATEGORY);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" categories.forEach(s -\u003e sb.append(PREFIX_CATEGORY).append(s.category).append(\" \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" return sb.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":65,"lipwei1808":2,"jamz903":2}},{"path":"src/test/java/unicash/testutil/TypicalBudgets.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.budget.Budget;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A utility class containing a list of {@code Budget} objects to be used in tests.","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class TypicalBudgets {","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public static final Budget DAILY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" .withAmount(16.75)","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"day\")","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final Budget WEEKLY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" .withAmount(234.50)","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"week\")","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public static final Budget MONTHLY \u003d new BudgetBuilder()","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" .withAmount(888)","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" .withInterval(\"month\")","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" .build();","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"lipwei1808":23}},{"path":"src/test/java/unicash/testutil/TypicalCategories.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import unicash.model.category.Category;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A utility class containing a list of {@code Category} objects to be used in tests.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class TypicalCategories {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public static final Category ENTERTAINMENT \u003d new Category(\"entertainment\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final Category EDUCATION \u003d new Category(\"education\");","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lipwei1808":12}},{"path":"src/test/java/unicash/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_FIRST_TRANSACTION \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_SECOND_TRANSACTION \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Index INDEX_THIRD_TRANSACTION \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"sp4ce-cowboy":5,"-":7}},{"path":"src/test/java/unicash/testutil/TypicalTransactions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_AMOUNT_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_EDUCATION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_ENTERTAINMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_CATEGORY_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_DATETIME_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_LOCATION_ORCHARD;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_INTERN;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_NUS;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TRANSACTION_NAME_SHOPPING;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_EXPENSE;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.logic.commands.CommandTestUtil.VALID_TYPE_INCOME;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" * A utility class containing a list of {@code Transaction} objects to be used in tests.","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":"public class TypicalTransactions {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction BUYING_GROCERIES \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"Buying groceries\")","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(16.75)","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(\"Sheng Shiong (UTown)\")","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(\"Groceries\")","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction DINING_WITH_FRIENDS \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"End of Semester Celebration\")","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(234.50)","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(\"Poulet\")","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"18-08-2001 18:18\")","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(\"Food\")","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction WORK_AT_LIHO \u003d new TransactionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" .withName(\"Working at liho\")","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(\"income\")","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(888)","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(\"18-09-2002 18:17\")","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" // Manually added - Income\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction NUS \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(VALID_CATEGORY_NUS)","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction INTERN \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_EXPENSE)","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_INTERN)","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" public static final Transaction SHOPPING \u003d new TransactionBuilder().withName(VALID_TRANSACTION_NAME_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" .withType(VALID_TYPE_INCOME)","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" .withAmount(VALID_AMOUNT_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" .withDateTime(VALID_DATETIME_SHOPPING)","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" .withLocation(VALID_LOCATION_ORCHARD)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" .withCategories(VALID_CATEGORY_ENTERTAINMENT, VALID_CATEGORY_EDUCATION)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" .build();","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" * Returns a {@code UniCash} with all the typical transactions.","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" public static UniCash getTypicalUniCash() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"elhy1999"},"content":" UniCash typicalUnicash \u003d new UniCash();","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" for (Transaction transaction : getTypicalTransactions()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"elhy1999"},"content":" typicalUnicash.addTransaction(transaction);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"elhy1999"},"content":" return typicalUnicash;","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" public static List\u003cTransaction\u003e getTypicalTransactions() {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(BUYING_GROCERIES, DINING_WITH_FRIENDS, WORK_AT_LIHO, NUS, INTERN));","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"sp4ce-cowboy":86,"elhy1999":3}},{"path":"src/test/java/unicash/testutil/UniCashBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.UniCash;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.model.transaction.Transaction;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * A utility class to help with building UniCash objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * {@code UniCash uc \u003d new UniCashBuilder().withTransaction(NUS).build();}","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class UniCashBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private final UniCash uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" uniCash \u003d new UniCash();","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder(UniCash transactionList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" this.uniCash \u003d transactionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Adds a new {@code Transaction} to the {@code UniCash} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public UniCashBuilder withTransaction(Transaction transaction) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" uniCash.addTransaction(transaction);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public UniCash build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" return uniCash;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"sp4ce-cowboy":3,"lipwei1808":31}},{"path":"src/test/java/unicash/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.beans.DefaultProperty;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A test object which can be constructed via an FXML file.","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unlike other JavaFX classes, this class can be constructed without the JavaFX toolkit being initialized.","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"@DefaultProperty(\"text\")","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class TestFxmlObject {","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private String text;","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public TestFxmlObject() {}","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public TestFxmlObject(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" setText(text);","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public String getText() {","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return text;","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setText(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.text \u003d text;","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof TestFxmlObject)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TestFxmlObject otherTestFxmlObject \u003d (TestFxmlObject) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Objects.equals(text, otherTestFxmlObject.text);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":44}},{"path":"src/test/java/unicash/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"package unicash.ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"import static unicash.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2019-04-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":"import unicash.MainApp;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class UiPartTest {","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String MISSING_FILE_PATH \u003d \"UiPartTest/missingFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_FILE_PATH \u003d \"UiPartTest/invalidFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_PATH \u003d \"UiPartTest/validFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_WITH_FX_ROOT_PATH \u003d \"UiPartTest/validFileWithFxRoot.fxml\";","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final TestFxmlObject VALID_FILE_ROOT \u003d new TestFxmlObject(\"Hello World!\");","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor_nullFileUrl_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_missingFileUrl_throwsAssertionError() throws Exception {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" URL missingFileUrl \u003d new URL(testFolder.toUri().toURL(), MISSING_FILE_PATH);","lastModifiedDate":"2019-04-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor_invalidFileUrl_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" URL invalidFileUrl \u003d getTestFileUrl(INVALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl));","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void constructor_validFileUrl_loadsFile() {","lastModifiedDate":"2016-12-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl).getRoot());","lastModifiedDate":"2016-12-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void constructor_validFileWithFxRootUrl_loadsFile() {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_WITH_FX_ROOT_PATH);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" TestFxmlObject root \u003d new TestFxmlObject();","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl, root).getRoot());","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void constructor_nullFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void constructor_missingFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH));","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void constructor_invalidFileName_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private URL getTestFileUrl(String testFilePath) {","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String testFilePathInView \u003d \"/view/\" + testFilePath;","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" URL testFileUrl \u003d MainApp.class.getResource(testFilePathInView);","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertNotNull(testFileUrl, testFilePathInView + \" does not exist.\");","lastModifiedDate":"2019-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return testFileUrl;","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * UiPart used for testing.","lastModifiedDate":"2016-12-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * It should only be used with invalid FXML files or the valid file located at {@link VALID_FILE_PATH}.","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":3,"-":111}},{"path":"src/test/resources/view/UiPartTest/validFile.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-12-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003c?import unicash.ui.TestFxmlObject?\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":3}},{"path":"src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"\u003cfx:root type\u003d\"unicash.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"sp4ce-cowboy":1,"-":5}}] diff --git a/AY2324S1-CS2103-T16-3_tp_master/commits.json b/AY2324S1-CS2103-T16-3_tp_master/commits.json index 5e671b00..2fcb9d09 100644 --- a/AY2324S1-CS2103-T16-3_tp_master/commits.json +++ b/AY2324S1-CS2103-T16-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"sp4ce-cowboy":[{"date":"2023-09-26","commitResults":[{"hash":"a1535c496b20701b7c9305c33b22f1f9a2fa92f6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":377}}},{"hash":"ad18099905ac1467e464284c8eb9ba869647ae9f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md with website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}},{"hash":"785d81975ac2d4a6bcecac4ce0dc4c28bee6e6c3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include layout and title headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"eeb7e47f00a2047db8e1f1c3b5d56125e0d96f84","isMergeCommit":true,"messageTitle":"Merge pull request #23 from sp4ce-cowboy/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-27","commitResults":[{"hash":"92d7f3f1a9b4839583f5ddd324d2b05b586be463","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md links to standard Markdown","messageBody":"The links on the Developer Guide page are not hyperlinked on the hosted GitHub page.\r\n\r\nInteractive hyperlinks are more user-friendly to users who will have to interact with the hosted Developer Guide website. \r\n\r\nUse standard Markdown syntax instead of GFMD syntax to ensure that the links are visibly hyperlinked.","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"cec41a58f4d40e5f937296bdebf30b046cfbfdc0","isMergeCommit":true,"messageTitle":"Merge pull request #25 from sp4ce-cowboy/master","messageBody":"Update Developer Guide links","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"3b50770e1fba8c5231d4c0a92af8c3331f457195","isMergeCommit":false,"messageTitle":"Update AboutUs page and PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":5}}},{"hash":"1dab425d60fc82489bb8d1e96282b8403b130ef5","isMergeCommit":false,"messageTitle":"Add Remark Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"690e1805e41ddb59e2413310b4092d2b35358840","isMergeCommit":true,"messageTitle":"Merge pull request #44 from sp4ce-cowboy/master","messageBody":"Update AboutUs page and PPP","fileTypesAndContributionMap":{}},{"hash":"88f00bdb8fb07ef2cdb616eddae97868324aa6c9","isMergeCommit":false,"messageTitle":"Remove RemarkCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"97652304630f02fa47e180cab76520addbea54b8","isMergeCommit":true,"messageTitle":"Merge pull request #47 from sp4ce-cowboy/master","messageBody":"Remove RemarkCommand class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"e2f2805fc1054e043ff970d3b177820e5510aa9c","isMergeCommit":false,"messageTitle":"Update UG with expense deletion commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":100,"deletions":0}}},{"hash":"a721d6d5e6126b244a300330e97f67d0609afe58","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}},{"hash":"2d96b325d7b8ad0e06fe9c024a256a1e3d361e2e","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"9fe98a64588c463428ed7c36748753d3b9e95bdc","isMergeCommit":true,"messageTitle":"Merge pull request #48 from sp4ce-cowboy/master","messageBody":"Update UG with expense deletion commands","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"f28455f55e70feb048ffe24893516cdc025612f8","isMergeCommit":false,"messageTitle":"Add Delete command Use Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"97d7b590a76d5d3bfc14331c7c0e27378ba16161","isMergeCommit":false,"messageTitle":"Update delete expense use cases for the DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"d2e6e7d08f87bd52b7c194570940c6b389a9e742","isMergeCommit":false,"messageTitle":"Update Use Cases for Delete expense","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"763eea164e7139db5201d85264f2455579a41567","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sp4ce-cowboy/master","messageBody":"Add Delete command Use Case","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"777c01b250285514665396b514e86d3b38f8fa0f","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommand class and UniCashMessages class","messageBody":"Currently, the old Messages class is being used and this class contains references to the original AB3 AddressBook.\n\nIt would be better to encapsulate the messages specific to our\nimplementation in its own class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"e8c6b6306bb553760bb1ba54a6474cd50ddf450e","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":3}}},{"hash":"414d36f1a42cf007bdd3cef4ca74c7c80747c1ce","isMergeCommit":false,"messageTitle":"Update AddressBookParser to recognize DeleleTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"838cbb09556d398c4df2b8d06b5c709acb6c9508","isMergeCommit":false,"messageTitle":"Update import order to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"1cb1892e242dabaae3c23d7648bf2ac4d4fce7e1","isMergeCommit":false,"messageTitle":"Change import order to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"77f33e1b97e67dd0e6548ca32576c8c5743fd052","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"560953d59f77051667b3978e303798dd1f1da96a","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"eb1f29712c61f89ca59d45923819f8dc7d7ab5e9","isMergeCommit":false,"messageTitle":"Add Unit Tests for DeleteTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"de88e9517b0bff9a5dc287645556c88bf0a2817c","isMergeCommit":false,"messageTitle":"Update Unit test code to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"c57905fa3451a1decfd2f80cba9fe54a255bafb0","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommand unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"2be77be5b3a1cbf0b71d29df1c18f934e680e1c2","isMergeCommit":false,"messageTitle":"Comment out some failing unit tests for now","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"951a9f588fcebb6dbc325515e8f22b3f7424c461","isMergeCommit":false,"messageTitle":"Remove unused imports for disabled unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"6abca407210add18f1c19dbd56038f883ad89fb4","isMergeCommit":false,"messageTitle":"Add unit tests for new Predicate class and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"8fa8310eadbb1384068d52123b3f5d562f540229","isMergeCommit":false,"messageTitle":"Add UniCashMessagesTest class for more unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":0}}},{"hash":"8a0c413af932baaabe975cce4b61eec0426b7422","isMergeCommit":false,"messageTitle":"Update unit tests for UniCashMessages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"fdce6ed1b0c2842a6295fec5bdec2e5b54b2a9b8","isMergeCommit":false,"messageTitle":"Update UniCashMessages unit tests to conform to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"5d692ac6a4b504f45252ad86a78e6b3c7876da59","isMergeCommit":false,"messageTitle":"Update unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"66aa6e3052aaa1bb57adc478117f86759dc529f8","isMergeCommit":false,"messageTitle":"Remove a problematic unit test in UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":19}}},{"hash":"d7d1f073f12a6839efde019ebdc2fa558fedfc9e","isMergeCommit":false,"messageTitle":"Update UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":9}}},{"hash":"04a3f9ce7808770fc3095e7be296a51ef266092a","isMergeCommit":false,"messageTitle":"Update UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"0297be0c2af826bb1b8f108346198d0b6d934e20","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":47}}},{"hash":"c19e02190598fc5b5a7a64ec9b4cf148cb39c96d","isMergeCommit":false,"messageTitle":"Add unit tests for DeleteTransactionCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"47ab7e52adc84bc85130c0dd9567d1ec6739b5b1","isMergeCommit":false,"messageTitle":"Remove DeleteTransactionCommandParserTest for now","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":35}}},{"hash":"16f055a86d62b734d922d91a1b936bf1d213f1c8","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"b2bdffe5c8abf859b0d9c9adfd0bb9759433335d","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":6}}},{"hash":"86dbff1598ed3efff56f16b99ecf5d546f05531b","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"971931978d3671b616b0be3885553b247a43310f","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"70e956256e4c9442f8e24b5d7ba29735432227b8","isMergeCommit":false,"messageTitle":"Update unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":3}}},{"hash":"e47496668fad0fe7375bb042bc4368f3f46027da","isMergeCommit":false,"messageTitle":"Update more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"4b86bc653297fc3df1f45f03b3e22f6b17f3b729","isMergeCommit":false,"messageTitle":"Update unit tests again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"8d481c355c44108dd30fddec31594fe933a02c19","isMergeCommit":false,"messageTitle":"Remove old formatTransactions method from Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":19}}},{"hash":"777c9a9bdcbed9518a9e3c8a0b2ea6f1931bf638","isMergeCommit":false,"messageTitle":"Update Messages class to remove whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"c6b319f646ab55b4ae7ed2aaf4f845d9da6eb9e1","isMergeCommit":false,"messageTitle":"Update Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"61c7131ff4238f7c8e2c4b2a44d86867f27e403c","isMergeCommit":true,"messageTitle":"Merge pull request #62 from sp4ce-cowboy/branch-AddDeleteCommand","messageBody":"Add DeleteTransaction functionality and relevant Unit Tests","fileTypesAndContributionMap":{}},{"hash":"e02bab3c63949889c91e338140b422789215df75","isMergeCommit":false,"messageTitle":"Add clear transactions command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":2},"test-code":{"insertions":35,"deletions":0}}},{"hash":"9992cb370bd20e7a56e30f359671b5f55780e4d6","isMergeCommit":false,"messageTitle":"Remove redundant extra line and update AddressBookParser Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":8,"deletions":0}}},{"hash":"c560428d9f7e61287284d9fe4cad1619397f75ed","isMergeCommit":true,"messageTitle":"Merge pull request #63 from sp4ce-cowboy/branch-AddMassDeleteCommand","messageBody":"Add clear transactions command functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"8f0b0737cba41f85290c87f3fad93c5e8c8ff1c5","isMergeCommit":false,"messageTitle":"Add HelpCommand to UniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6},"test-code":{"insertions":36,"deletions":6}}},{"hash":"a900e69408f20c4ff00f529a180af6e0b188639a","isMergeCommit":false,"messageTitle":"Add UniCash specific ExitCommand functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":1},"test-code":{"insertions":33,"deletions":0}}},{"hash":"8b31426b90661378b063e3d88b1487e3b221a576","isMergeCommit":false,"messageTitle":"Update HelpWindow reference to UniCash\u0027s User Guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"4b86c2c11dfce8fb18ec105f9f84dbe7023a9b82","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"09314fd6b973c5597d5196615df287e08fe574db","isMergeCommit":false,"messageTitle":"Update import order again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"22b3daadc336fb28a1f3253a688f52c6d5ca3103","isMergeCommit":false,"messageTitle":"Update import order yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"729a1a228be993e377e104f2d05d214f85dbc303","isMergeCommit":false,"messageTitle":"Update wrong import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"50ff7304df3566dccdcafc1320de7b7ccf97e908","isMergeCommit":false,"messageTitle":"Add a blank line","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"f4939f619304dc20e56ae11ef5c0120d54144b81","isMergeCommit":false,"messageTitle":"Update Developer guide to Transactions instead of Expense or Income","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":45}}}]},{"date":"2023-10-17","commitResults":[{"hash":"46fd960ae8a1ad239b39bd00976aa7cb6ea3d0bd","isMergeCommit":true,"messageTitle":"Merge pull request #73 from sp4ce-cowboy/branch-AddHelpCommand","messageBody":"Update Help and Exit functionality","fileTypesAndContributionMap":{}},{"hash":"7d8613dddf88c93d54091338be0fd4ed2d75e003","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateDGUG","messageBody":"* master:\n Add a blank line\n Update wrong import\n Update import order yet again\n Update import order again\n Update import order\n Update HelpWindow reference to UniCash\u0027s User Guide\n Add UniCash specific ExitCommand functionality\n Add HelpCommand to UniCash\n","fileTypesAndContributionMap":{}},{"hash":"e2873727d1df0f0a9ad2e4faf4903c6600ffc067","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sp4ce-cowboy/branch-UpdateDGUG","messageBody":"Update Developer guide to Transactions instead of Expense or Income","fileTypesAndContributionMap":{}},{"hash":"639b256351d910e7c551212cbe7a7649726c0db9","isMergeCommit":false,"messageTitle":"Refactor seedu.address package to unicash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":76},"other":{"insertions":1046,"deletions":1052},"docs":{"insertions":7,"deletions":4},"test-code":{"insertions":245,"deletions":270}}},{"hash":"1b4b46c5d9063a604359d2dfdc52d8bfdbb666f9","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2023-10-18","commitResults":[{"hash":"726930d730fca8c1c114a0fd905938100b1d42dc","isMergeCommit":false,"messageTitle":"Fix styling for Main classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":71}}},{"hash":"10d51d308e8b825d83a5c1c6535517212b92051e","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":255,"deletions":238}}},{"hash":"30ac391c2936f88876d52a4de821b540e4a3d363","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-REFACTOR_ALL","messageBody":"* master:\n Make result section a more prominent colour\n Ui Update to Categories\n Edit Style and Display of Ui\n","fileTypesAndContributionMap":{}},{"hash":"e34e80ee44d1e0a15a943b0ecfaaf81a48013863","isMergeCommit":false,"messageTitle":"Fix style yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":127,"deletions":105}}},{"hash":"78d318190f09691e8bc56939f15388b0a3b26cda","isMergeCommit":true,"messageTitle":"Merge pull request #77 from sp4ce-cowboy/branch-REFACTOR_ALL","messageBody":"Refactor seedu.address package to unicash","fileTypesAndContributionMap":{}},{"hash":"2c42d02babae1898c6bffe62b58aa587c8aa52f2","isMergeCommit":false,"messageTitle":"Change title of app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"8b28f9744e7b1c038d4440b4f1bf4e2b7db62dac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UI/sidepane","messageBody":"* master:\n Fix style yet again\n Fix style\n Fix styling for Main classes\n Fix import order\n Refactor seedu.address package to unicash\n","fileTypesAndContributionMap":{}},{"hash":"cc906a7f342353469778cef769e6cd1f713cc0e3","isMergeCommit":false,"messageTitle":"Update app icon to a wallet instead of a ContactBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3b9e83819e41a2c835b22b12ae122dccec399a2c","isMergeCommit":false,"messageTitle":"Add new font to UniCash and touch up GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":33},"other":{"insertions":0,"deletions":0}}},{"hash":"6b72824ae687acac0823fb90ea8e493107d72839","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17}}},{"hash":"2f269467b8a25e9ea787990e621af19f3338cedd","isMergeCommit":false,"messageTitle":"Fix a failing test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"09b4bd9460f757bbe8a53f91b64c06cbeb3a6ea4","isMergeCommit":false,"messageTitle":"Use Bold font style for StatusBarFooter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"76666ed8652195520c1204a009d673ae203dd83e","isMergeCommit":true,"messageTitle":"Merge pull request #78 from sp4ce-cowboy/branch-UI/sidepane","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"67a024738b6db61d680879e14ec1e822ed580d8c","isMergeCommit":false,"messageTitle":"Update UI and make minor changes to syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":68},"other":{"insertions":2,"deletions":2}}},{"hash":"8e0bfc404b63096b1f8e717b1da8a420a06ee724","isMergeCommit":false,"messageTitle":"Update formatting for ResultDisplay and money amounts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6}}},{"hash":"9c0e59da02e1026139d5c37176c2fa24b0868614","isMergeCommit":false,"messageTitle":"Add local User Guide functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":9}}},{"hash":"bb397c6ab368cea9a46ecd86e57b408a84cadb70","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"58ae35afd17388d6fc522a37f114e50c3681c9ba","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f58daaaaac453cc73bf72b0f74d808b3519c4084","isMergeCommit":false,"messageTitle":"Add Unit Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"ddf8d2b6c94d9b8c7a6acf2f6fbeeaa727c05947","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f46397358730e07c54501cd55caa62a4f3243fbe","isMergeCommit":false,"messageTitle":"Fix style again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"f85e516dd61583a8f6a9cc4490c7a9190281b61b","isMergeCommit":false,"messageTitle":"Fix style yet again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"98286986bdcae0d911b68e87af5662a675a9b3da","isMergeCommit":false,"messageTitle":"Replace typical transactions with archetypal student expenditures","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":9}}},{"hash":"f1730290734711810976a7289fcd83201347747d","isMergeCommit":false,"messageTitle":"Add income and expense differentiation in TransactionCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":6}}},{"hash":"bb87ac81935f0611d5db7d2dee1995cf3a3ecf49","isMergeCommit":false,"messageTitle":"Update style for GUI final","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":22}}},{"hash":"1988517229c09965d76550e1726aa5c7d3b625a7","isMergeCommit":false,"messageTitle":"Rename AddressBook Parser to UniCashParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3e35a387bad0b29668d8943d42015933118e8c91","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5d2928423e845fc8a875a0e4384a27ac7703750d","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0},"other":{"insertions":1,"deletions":1}}},{"hash":"25fd87be0e31e55597b5056dc1a36fed8883a14c","isMergeCommit":false,"messageTitle":"Fix impmort order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f328c97584e92b8062bc3dc1c0d93848025fcf10","isMergeCommit":true,"messageTitle":"Merge pull request #82 from sp4ce-cowboy/branch-UI/sidepanel","messageBody":"Add SplitPane GUI, local UserGuide and some other minor changes","fileTypesAndContributionMap":{}},{"hash":"fedbe224f001b820824d752071ada6b2377a3b61","isMergeCommit":false,"messageTitle":"Update Transaction Card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":7},"test-code":{"insertions":1,"deletions":1}}},{"hash":"21c43a6ceb437669559d75caae5b7b870ad6b952","isMergeCommit":false,"messageTitle":"Split TransactionCard Constructor into smaller methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":15}}},{"hash":"cdbb43350a35ee10567a26321adc9d1d05a42e71","isMergeCommit":false,"messageTitle":"Add private Label styler methods to TransactionCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":3}}},{"hash":"631a9d95066e2f4efe5ab41f939ca59f5854fd70","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5f403edbbe510d4eef657e2e3beb2f50c1aec3cb","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5f8b53ea6152188fc84b3f74921f826998af9ac9","isMergeCommit":false,"messageTitle":"Add F2 shortcut to help menu and fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"f04357828b15ba33036632deab6b85e4c6187b99","isMergeCommit":true,"messageTitle":"Merge pull request #86 from sp4ce-cowboy/branch-UI/transactionCardUpdates","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"e8e415a39e39871faff539292f6c3416d6f7550a","isMergeCommit":false,"messageTitle":"Add Reset Functionality to UniCash","messageBody":"Currently, UniCash starts populated with sample data.\n\nHowever, once this data is cleared, there is no way to restore the\nsample data apart from manually deleting the unicash.json storage\nwhich would require the user to bypass the App and access its storage\nfiles directly.\n\nLet\u0027s fix this minor issue by allowing the user, and any possible\ntesters of the UniCash application to restore the UniCash to its\ninitial default state such that any data-modification actions or tests\ncan be conveniently reversed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":7},"other":{"insertions":8,"deletions":8},"test-code":{"insertions":57,"deletions":13}}},{"hash":"00c46cf07fd31e1ca5c3a00ff38fcd5401023f15","isMergeCommit":false,"messageTitle":"Change name from ResetUniCashCommand to ResetCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":4,"deletions":4}}},{"hash":"8e2bed4b0975ff47b330ec9b16a5da4da6952333","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"e373d9a418b271df5cad594647ba7801cc02a900","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fd6e8a5610674f631858f60096bd35dc9eabc45a","isMergeCommit":true,"messageTitle":"Merge pull request #90 from sp4ce-cowboy/branch-Code/AddResetCommand","messageBody":"Add Reset Functionality to UniCash","fileTypesAndContributionMap":{}}]}],"woojiahao":[{"date":"2023-09-27","commitResults":[{"hash":"df1a68d32e5bd6c8d90732e7bec5317031739f80","isMergeCommit":false,"messageTitle":"Add initial Expense model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"3b4aac5331350febf445b9158f5bc873bd91052c","isMergeCommit":false,"messageTitle":"Add Name model for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3}}},{"hash":"6976e8c30977b4ad5193e2c03b7975ec047dcbbc","isMergeCommit":false,"messageTitle":"Add Amount data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":3}}},{"hash":"3cad5132ba6b828384fe54f70ac30364c6874957","isMergeCommit":false,"messageTitle":"Add Category data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":5}}},{"hash":"bb9780309f090b6b4ace16a6489d5c49794344ae","isMergeCommit":false,"messageTitle":"Add Location data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":0}}},{"hash":"dc9027d63613f2db1998ab89f8d9ee3df204b0c5","isMergeCommit":false,"messageTitle":"Add Expense JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"45ed75ecdaac6711fa6290200ecedf70f45cf9e9","isMergeCommit":false,"messageTitle":"Add JavaDocs for all data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":9}}}]},{"date":"2023-09-29","commitResults":[{"hash":"8bad691c0bab2a41f0e50ba9bb962d9ae387b345","isMergeCommit":false,"messageTitle":"Add Amount data class tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":32,"deletions":0}}},{"hash":"6d2454d2c94befb47723b365c222960b17858faf","isMergeCommit":false,"messageTitle":"Add Name data class tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}},{"hash":"8f18d94741cfb006a90cd1346ce42dc4499ae036","isMergeCommit":false,"messageTitle":"Add Category data class tests","messageBody":"Expanded Category behavior to allow -, _, and \u0026 in the name\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":63,"deletions":0}}},{"hash":"cc5252b96f359ee4ce55ea1eaa212c06386e12af","isMergeCommit":false,"messageTitle":"Fix documentation for CategoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"fa0b7706f24c0ce8fdd19ffb21bd83c9c37276f0","isMergeCommit":false,"messageTitle":"Replace LocalDate with LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"6af546a1f9d40e19226136e69eee25dca4a00881","isMergeCommit":false,"messageTitle":"Add Location data class tests","messageBody":"Add more permitted characters for Location like _, -, \u0026, #, ., ,, ()\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":66,"deletions":0}}}]},{"date":"2023-09-30","commitResults":[{"hash":"273a6c7c7cbdd183026e1618bff035c1a9a2a2f8","isMergeCommit":false,"messageTitle":"Add Expense data model tests with helpers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":184,"deletions":0}}},{"hash":"d14fa40d5388ea8d721e26a19dfe0fcf4d4a1d2c","isMergeCommit":false,"messageTitle":"Address checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":5}}}]},{"date":"2023-10-01","commitResults":[{"hash":"82813f0d5c8fd20a3cae43e25edfc939b7c28cf7","isMergeCommit":true,"messageTitle":"Merge pull request #27 from woojiahao/feat/add-expense-model","messageBody":"Add Expense model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"881c03cf12f0da9b7e8eb5bf106de4e193393c10","isMergeCommit":false,"messageTitle":"Update README to contain project content","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":10}}},{"hash":"0a491e5ea88c931ccfda8e968750242a724dd3e1","isMergeCommit":false,"messageTitle":"Update Jekyll page configuration","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":8}}},{"hash":"0bbd5c66f90a3cae33f6ab0d274f26f7545a8aee","isMergeCommit":true,"messageTitle":"Merge pull request #29 from woojiahao/feat/project-admin-settings","messageBody":"Update project page settings","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"e48332a65ef41e0496f8335475f375e62af82f29","isMergeCommit":false,"messageTitle":"Add changes to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}}]},{"date":"2023-10-04","commitResults":[{"hash":"e8cc72937aa3dfecaa0328366c7ee2a7edae3a2a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from woojiahao/feat/about-us-jiahao","messageBody":"Add About Us","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"155d6a11f69ce909779cc2f9ac0792a2e8ae4701","isMergeCommit":false,"messageTitle":"Add Create Expense feature details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":185,"deletions":37}}},{"hash":"b7ee099c7d15d90451c98dc4acbe69b47d8363f4","isMergeCommit":false,"messageTitle":"Fix FAQ and add to command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":21}}},{"hash":"68623f95403fa50d3621e96703127b1321894dd4","isMergeCommit":true,"messageTitle":"Merge pull request #49 from woojiahao/feat/ug-add-create-expense","messageBody":"Add Create Expense feature details","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"513651223765ebc9473146d502af87b7da153512","isMergeCommit":false,"messageTitle":"Add GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"8cf2c0509e50d0a41c3f6d3da0339f12bdff3bf3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/total-expenditure","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f108c95c0ca3c737bf66635c542e0bec70213b0e","isMergeCommit":false,"messageTitle":"Add unit tests for get_total_expenditure","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0},"test-code":{"insertions":179,"deletions":0}}},{"hash":"34eb9e4c9c7e8d65a8b670c1e7c83ac010c95286","isMergeCommit":false,"messageTitle":"Add coverage for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":3}}},{"hash":"abd2b8adfc59ee32054bbcf4d9af0d440a84b80a","isMergeCommit":false,"messageTitle":"Move GetTotalExpenditure error to UniCashMessages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"f91621f345dac89e5170053768b13bd17626bc7b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from woojiahao/feat/total-expenditure","messageBody":"Add \"Get total expenditure\" command","fileTypesAndContributionMap":{}},{"hash":"2cfdc9a4dc4caef9ddf55f142a035a439f9d61b7","isMergeCommit":false,"messageTitle":"Add JSON adapted Transaction for storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":119,"deletions":0}}},{"hash":"d77c423829a55d8f76d185d3ec892f2d85b248e9","isMergeCommit":false,"messageTitle":"Migrate to use UniCash storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":81},"test-code":{"insertions":19,"deletions":17}}},{"hash":"38afbc1cda90ed1fd8054bcf27922709619028f6","isMergeCommit":false,"messageTitle":"Fix all unit test errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":21,"deletions":22}}},{"hash":"ef163506563cbd1833728c19c80e24c981ff0dce","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d46e23d248a3bb312d51b2148a47e1a627a9763e","isMergeCommit":false,"messageTitle":"Fix LogicManagerTest imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":5}}},{"hash":"2e683a8f36512ab2f155bf1007ec87444daaad76","isMergeCommit":false,"messageTitle":"Add unit test for getUniCashFilePath","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"0f1fc615f2728c627a643c5147f3dc1373c066fc","isMergeCommit":false,"messageTitle":"Add unit test for JsonAdaptedTransaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":178,"deletions":0}}},{"hash":"faed499571707ff9aa5151a60e341d5d99488338","isMergeCommit":false,"messageTitle":"Add unit tests for JsonUniCashStorage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":109,"deletions":0}}},{"hash":"300afbd343ac50a60cf48fe1d56401b180b48eb5","isMergeCommit":false,"messageTitle":"Add unit tests for JsonSerializableUniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":48,"deletions":2}}},{"hash":"47b2193e69aeaddbb230a171e0e0836ef83b8e20","isMergeCommit":false,"messageTitle":"Remove getUniCashFilePath test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"ed0b6d8e3ac6b142a5fcfe683f4647fff5b793a3","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":31},"test-code":{"insertions":2,"deletions":2}}},{"hash":"9ad5b0f7f8003490660c2c9bf049ee42b56ddcd2","isMergeCommit":false,"messageTitle":"Allow leading character of Category to be -","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"e9cc484011b7a8357478d9c6ea19a4c756b61d77","isMergeCommit":true,"messageTitle":"Merge pull request #68 from woojiahao/feat/persist-transactions","messageBody":"Support persisting of transactions into file","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"285514f16464589227f177fac2da24b3ae3e9407","isMergeCommit":false,"messageTitle":"Delete person commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":436},"other":{"insertions":5,"deletions":13},"test-code":{"insertions":18,"deletions":31}}},{"hash":"279a764d67adbb80272c7f98b95520cc68b482a8","isMergeCommit":false,"messageTitle":"Remove person parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":189},"other":{"insertions":5,"deletions":5},"test-code":{"insertions":3,"deletions":1}}},{"hash":"0010f4963dcb303b80f64691a087894e3e47196c","isMergeCommit":false,"messageTitle":"Remove model persons files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":1059},"test-code":{"insertions":42,"deletions":64}}},{"hash":"c75786deda1bc9e75e576418aa859e4022afeae1","isMergeCommit":false,"messageTitle":"Remove persons deps for UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":451}}},{"hash":"06ad62281b8719c896f3082c7c9f5bc0747ee713","isMergeCommit":false,"messageTitle":"Clean up logic command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":35},"other":{"insertions":8,"deletions":54},"test-code":{"insertions":156,"deletions":776}}},{"hash":"5e831a264ec7b4a126a67a7c94e4fdf7524165b2","isMergeCommit":false,"messageTitle":"Clean up logic parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":624}}},{"hash":"66e2fda059d17ae3cc64573e04b4076fc46caeb6","isMergeCommit":false,"messageTitle":"Move all parser tests to root parser/","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"5fca6b7dcecb80f7b28c403fe78772899390ea5f","isMergeCommit":false,"messageTitle":"Clean out person model tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":685}}},{"hash":"aa2e9c25d9f3b3f9b62dcb0124d762dcf1128ad3","isMergeCommit":false,"messageTitle":"Remove Messages dependencies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":84},"test-code":{"insertions":9,"deletions":624}}},{"hash":"35ee6c5bb38beb5a08518e97c97d841f840348f4","isMergeCommit":false,"messageTitle":"Fix checkstyleMain errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":49},"test-code":{"insertions":143,"deletions":137}}},{"hash":"b7af542b41dbb36a99d0278566e762b8f2a8258d","isMergeCommit":false,"messageTitle":"Fix test checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":195}}},{"hash":"83b4e820960dba22954806ae616295fb59b38a48","isMergeCommit":false,"messageTitle":"Fix failing unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":11}}},{"hash":"2433e22a025551419e97bd1903db92092d08a3ca","isMergeCommit":false,"messageTitle":"Fix checkstyleTest errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"a5f6ff3382d694fff4b528b689163dc3c1fecb19","isMergeCommit":false,"messageTitle":"Add unit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"855ca298be40b05e0b55a8c0baab1fe3a5f80127","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81fc77315b551264835bba2c62485fc588ece3e1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9d125ac69c1a832efb727a66061ae8a6e06f66e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/feat/cleanup-addressbook-deps\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"350cc38e04ec586b6ff3bb6d7f00c014503acc06","isMergeCommit":false,"messageTitle":"Fix checkstyleTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"6ca9c0f0ff3f771ab6475d067fb7193f74bd3acc","isMergeCommit":false,"messageTitle":"Re-address checkstyleTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":5}}},{"hash":"6396f637be4ca9127d5832836a261c3212fd8152","isMergeCommit":false,"messageTitle":"Add explicit assertFalse for equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"44e12717f72f31a19d3ce5fe2633a480bbfd4f9b","isMergeCommit":false,"messageTitle":"Add explicit false equality assertion","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":12}}},{"hash":"683fe988e559f382eacaa1f56e05baa0700f9dfc","isMergeCommit":false,"messageTitle":"Fix invalid unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4041cc23999badc6f97e228647fce94636d73e1f","isMergeCommit":false,"messageTitle":"Use proper false equality tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"90ae076b22d9395f1d03882a996d39783de8ab72","isMergeCommit":false,"messageTitle":"Add unit test for GetTotalExpenditureCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"8888c0c82313c233c3a541a1088607b72a295fb0","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"02183bf7d04740e1c86dfdeda3ab4cc87022ca89","isMergeCommit":false,"messageTitle":"Raise missing preamble exception","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":2}}},{"hash":"ce3a319146594ec2e19b826ca2b176b026bbcfea","isMergeCommit":false,"messageTitle":"Add wider test coverage for files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":10,"deletions":28}}},{"hash":"98add1a32f249d273fb4c95f1ba3cbbb4dbb6587","isMergeCommit":false,"messageTitle":"Add test coverage for misc files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":60,"deletions":0}}},{"hash":"f341950b6e6ad793bda2d10467e05b9cfd4f851a","isMergeCommit":false,"messageTitle":"Add minor test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":38,"deletions":0}}},{"hash":"2f0609f565661dbce918dbd44a37f382b0659b2b","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"3ac123e0f313d37e0cf7a7ee8a162ac781281153","isMergeCommit":false,"messageTitle":"Add more misc test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":1},"test-code":{"insertions":46,"deletions":0}}},{"hash":"7ab9751499b14f9ced8cd8ee574f3b30dfa8db15","isMergeCommit":false,"messageTitle":"Add final set of misc tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":0}}},{"hash":"aa50c586e47a56c37c5a8832e7e9820847666ef3","isMergeCommit":false,"messageTitle":"Update grammar","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4e961ae3d85ed11be6021afc1213a84fff7a1563","isMergeCommit":false,"messageTitle":"Fix documentation phrasing","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cb14b16287f74ace98607cc7cd0044cc37b915ca","isMergeCommit":false,"messageTitle":"Remove addressbook comment","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"39f9158f48e297aca8e36bedb300b2ec3ae0257c","isMergeCommit":false,"messageTitle":"Remove addressbook comment","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"6e18deda2228477fba9cc2cdb98ab8692b8e43f2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c40e496db7d3f32fc014223391b6c1a67e6ee83","isMergeCommit":true,"messageTitle":"Merge pull request #75 from woojiahao/feat/cleanup-addressbook-deps","messageBody":"Clean up AddressBook dependencies","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"060b98fbb8f0c2d9f6bba55360c53de4c3639a8b","isMergeCommit":false,"messageTitle":"Fix GetTotalExpenditure for expense w/ no category","messageBody":"Behavior caused by default behavior of anyMatch where empty stream\ndefaults to false so hasCategory is naively assumed to be false even if\ncategory filter does not exist\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":17,"deletions":0}}},{"hash":"48e51e2c0c925b0005e8b700a5aa70a1bacf3d3d","isMergeCommit":false,"messageTitle":"Add unit test for GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":1}}},{"hash":"79050acd564e41f297bb38d002853799e469e67a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from woojiahao/fix/get-total-expenditure-category-bug","messageBody":"Fix GetTotalExpenditure for expense w/ no category","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"4033669c0413d4467855e7523f720936435941f9","isMergeCommit":false,"messageTitle":"Clean up basic command unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":14}}},{"hash":"9ab1147053e4789f437bd8f851c290482627e46d","isMergeCommit":false,"messageTitle":"Add more unit tests for GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"68c3722d36b79a58282b937db409b740b0d34267","isMergeCommit":false,"messageTitle":"Refactor GetTotalExpenditureCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"19dca861ba76916f821f2300e0280d868f3637fe","isMergeCommit":false,"messageTitle":"Fix GetTotalExpenditureCommandParser bug","messageBody":"where preamble does not always retrieve the appropriate value. Replace\nto use month/ prefix and added more unit tests for these corner cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":38,"deletions":3}}},{"hash":"5f89252cace09770125f570cf400864e97e98fca","isMergeCommit":false,"messageTitle":"Add equals \u0026 tests for ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":31,"deletions":1}}},{"hash":"90515eae21c7781b7e4ce89ea0d76aa46f825a10","isMergeCommit":false,"messageTitle":"Add unit tests for EditTransactionDescriptor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":14},"test-code":{"insertions":90,"deletions":71}}},{"hash":"c40acbac55b465bf449dbf6423240fa89364a88d","isMergeCommit":false,"messageTitle":"Add unit test for isAnyFieldEdited","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"da73e92ba856c30330dfeaad39cf14106f8564f7","isMergeCommit":false,"messageTitle":"Add more unit tests for EditTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":132,"deletions":64}}},{"hash":"07b300f31b6ce63671cb65865e4b6249d1852f47","isMergeCommit":false,"messageTitle":"Add parseType tests for ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":1}}},{"hash":"6158719ad4f09e4f5a0da1b65baed8d3298ded98","isMergeCommit":false,"messageTitle":"Add unit tests for JsonAdaptedCategory","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"9574447b0205d3c5bdc2846719a2c0fe58a9d004","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":9}}},{"hash":"185d541c5e1dfe6cf7516707c6deff37a36c94ca","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into chore/unit-testing-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"600d0c2cb95079a9814d9a3323a3e454d7cbea85","isMergeCommit":true,"messageTitle":"Merge pull request #84 from woojiahao/chore/unit-testing-updates","messageBody":"Improve existing unit tests","fileTypesAndContributionMap":{}}]}],"lipwei1808":[{"date":"2023-09-27","commitResults":[{"hash":"95439fba0c291743cae70356983ed59fb3651bf0","isMergeCommit":false,"messageTitle":"add lipwei1808 ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"d04e36ab84ad374cde52b120422ec6ea4b4b6c92","isMergeCommit":false,"messageTitle":"Update overview of ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"abab096f6208f57c27c5f0ccec2a3457397422c4","isMergeCommit":false,"messageTitle":"Update UserGuide - add income features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":135,"deletions":0}}},{"hash":"9b21499635e8ae776d1180bbdd8996666eaf7316","isMergeCommit":true,"messageTitle":"Merge pull request #26 from lipwei1808/branch-ppp","messageBody":"Add lipwei1808 ppp, picture and UG","fileTypesAndContributionMap":{}}]},{"date":"2023-09-28","commitResults":[{"hash":"7a6c7626214a3e352f26590222516fb1bf21e331","isMergeCommit":false,"messageTitle":"Add Income Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"973455cc2cde2ccaa0f34329f4acd8f9baf51679","isMergeCommit":false,"messageTitle":"Add Income Model Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":255,"deletions":0}}},{"hash":"b87422a9f547f6428d80868f1f0bbbb1ace51753","isMergeCommit":false,"messageTitle":"Removed unused imports added missing Javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":0,"deletions":3}}},{"hash":"425c99832bdf0e1feff32df0c3548d3aa5177fc1","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":12}}},{"hash":"9e58bd632b9f280011c3504cd7cd17ea5b97afbb","isMergeCommit":false,"messageTitle":"Fix failing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":4,"deletions":2}}},{"hash":"e727c780a5a51985da073b6ad33c030b4b9c1609","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cd56d6c4238298d6ec236941af6c6a206c8d4a4e","isMergeCommit":false,"messageTitle":"Update LocalDate to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2023-09-30","commitResults":[{"hash":"8ea0b6716606d8cdfdadfdcf9e3e1b74778a8cfd","isMergeCommit":true,"messageTitle":"Merge pull request #28 from lipwei1808/branch-IncomeModel","messageBody":"Add Income model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"0ad7af7a9669aa8fd890b91c09fc8192f0fe4327","isMergeCommit":false,"messageTitle":"Updated AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"548ebd274cc812ec9d8779926c62cc39ed683a05","isMergeCommit":true,"messageTitle":"Merge pull request #39 from lipwei1808/branch-lipwei-AboutUs","messageBody":"Updated AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2023-10-07","commitResults":[{"hash":"49743029316bd35267df013e36284318d6daa0bb","isMergeCommit":false,"messageTitle":"Add Use Cases for income features to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":0}}}]},{"date":"2023-10-08","commitResults":[{"hash":"6989eba566d9b72cb1e3755a6f8f2e1849a51314","isMergeCommit":false,"messageTitle":"Update no of tabs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"745dc647aa620930a1d90a396d6cb4ee62665b1b","isMergeCommit":false,"messageTitle":"Update ModelManager to include IncomeList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":445,"deletions":3},"test-code":{"insertions":71,"deletions":22}}},{"hash":"26f636acadc5b85f85b69e797c114033d55ab1a5","isMergeCommit":false,"messageTitle":"Add Parser for AddIncomeCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":236,"deletions":13},"test-code":{"insertions":9,"deletions":7}}},{"hash":"1b4c8b0bc61c1b98c7fc8a907909e0a09871f3c2","isMergeCommit":false,"messageTitle":"Add UI handling for incomes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":0}}},{"hash":"678fea7ec0cf2002175b84ae6e79f02112529904","isMergeCommit":false,"messageTitle":"Add unit test for IncomeList and DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":162,"deletions":0}}},{"hash":"56983f1aeae6014e54b94ee40d623292c355a4e9","isMergeCommit":false,"messageTitle":"Add Unit tests for AddIncomeCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":9},"test-code":{"insertions":221,"deletions":16}}},{"hash":"bdeec287671b061510f9da105964e92c43787bc9","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":29}}},{"hash":"d09adae00698d7899be195a451924f67d1078a54","isMergeCommit":false,"messageTitle":"Update Unit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":81,"deletions":4}}},{"hash":"cc1b7cdbcaae4f6e8e7b108233e2523cd1a73088","isMergeCommit":false,"messageTitle":"Added more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":47,"deletions":3}}},{"hash":"f178176c3ee6e525db50a93708e8e87a959b536a","isMergeCommit":false,"messageTitle":"Add Unit test for AddIncomeCommand and UniqueIncomeList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":1},"test-code":{"insertions":386,"deletions":0}}},{"hash":"322620e83f55ad57cd8fb005b719ba78f6085142","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":8}}},{"hash":"f528319fa2b4bf35bc6d36245989d0ecc9b84710","isMergeCommit":false,"messageTitle":"Add equals test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":11},"test-code":{"insertions":56,"deletions":8}}}]},{"date":"2023-10-11","commitResults":[{"hash":"141de6f5e0b10fa680dd94e8d7109ba10b954bcd","isMergeCommit":false,"messageTitle":"Fix typo and finetune use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1bfc66d91ef86ff411b443575baa45631119aa36","isMergeCommit":false,"messageTitle":"Update java docs for Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"8e5e8a6f421120b620a59d1aec48d90432d2698c","isMergeCommit":false,"messageTitle":"Add Transaction Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":340,"deletions":0},"test-code":{"insertions":294,"deletions":0}}}]},{"date":"2023-10-12","commitResults":[{"hash":"0624aba5304461c26c79e002b9047763b8fda756","isMergeCommit":false,"messageTitle":"Add DateTime Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":0}}},{"hash":"5cd5e8cfdf8758014dd71aaf53f9f92324a5595c","isMergeCommit":false,"messageTitle":"Add DateTime test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}},{"hash":"6b60761b9a64c0e8202c3d183392731457993522","isMergeCommit":false,"messageTitle":"Add TransactionTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":132,"deletions":11}}},{"hash":"27aa2e79c978a4db323284ed784c4f9c9c286302","isMergeCommit":false,"messageTitle":"Remove Income and Expense Models","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":541},"test-code":{"insertions":3,"deletions":679}}},{"hash":"fd10c274e1249ee0e573e0452c13daffedf98a6d","isMergeCommit":false,"messageTitle":"Add unit test for DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":0}}},{"hash":"5f88e52fa4b6ac2523743ec66132e5c8903878f3","isMergeCommit":false,"messageTitle":"Update Unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":4,"deletions":2}}},{"hash":"b992f728011753cb8c61ec2bb155fcbe64ae78e2","isMergeCommit":false,"messageTitle":"Add more Unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":1}}},{"hash":"6a0ffcf89bafa397827109ccf27daa0440e6d2f7","isMergeCommit":false,"messageTitle":"Add transction type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":3},"test-code":{"insertions":83,"deletions":5}}},{"hash":"37baf0316da2667227414fefad7cd74f3cdf2a58","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"9bd0d35a96ec5df0f94e4246e97448cc01a7b446","isMergeCommit":true,"messageTitle":"Merge pull request #52 from lipwei1808/branch-lipwei1808-UseCases","messageBody":"Add Use Cases for income features to DG","fileTypesAndContributionMap":{}},{"hash":"814dc90cf9d03c166b064b8687e0c32b433b0819","isMergeCommit":false,"messageTitle":"Update DateTime class to accept String","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18},"test-code":{"insertions":29,"deletions":30}}},{"hash":"4eb4c3f15d21bebec73b026d3726713de21a7b41","isMergeCommit":false,"messageTitle":"Add more Unit tests for DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":15,"deletions":3}}},{"hash":"f6c8daed6317b9e70711e7e3b0fd90f82da586ca","isMergeCommit":false,"messageTitle":"Add missing @Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"9fed96ae530f0e7c8793dcd09c44ef14221a4b74","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f70c886bf4d012afdb264530a9db2889cc7c6e3f","isMergeCommit":true,"messageTitle":"Merge pull request #58 from lipwei1808/branch-Transaction","messageBody":"Transaction Model","fileTypesAndContributionMap":{}},{"hash":"b82136d0864192ae1592979d8c190fdcdd7f5e54","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Income","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"08fd5cce3d27d2df72c298eebf64bc7c46c25ee0","isMergeCommit":false,"messageTitle":"Refactor to Transactions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":297},"other":{"insertions":66,"deletions":68},"test-code":{"insertions":290,"deletions":291}}},{"hash":"b9450abc9cc41a2c0ad9c56f28fddd0b1f32c608","isMergeCommit":false,"messageTitle":"Update AddTransactionCommand and TypicalTransactions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17},"other":{"insertions":11,"deletions":6},"test-code":{"insertions":32,"deletions":9}}},{"hash":"c905960f1736655924aa244fc3e2003607bf361c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":7,"deletions":18}}}]},{"date":"2023-10-13","commitResults":[{"hash":"c0eefb7ea9f790a5770564b18240cec4730e6369","isMergeCommit":false,"messageTitle":"Fix style and most tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":6},"other":{"insertions":10,"deletions":4},"test-code":{"insertions":107,"deletions":41}}},{"hash":"35c58bbca705229ee584493054535d11c66356a9","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"577ef479875518f53dd9db5046a2bc1c7baa089f","isMergeCommit":false,"messageTitle":"Add Unit test for TransactionList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":154,"deletions":0}}},{"hash":"56f41d47052d3c6f5246e514641e2b687e1b0dec","isMergeCommit":false,"messageTitle":"Add more Unit tests for UniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":42,"deletions":3}}},{"hash":"2a89b8380514aeb14fffcf9bf7245e4009c3e1bd","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"c5909acddcfe6098f0ebc9a79334e46a2bed3e70","isMergeCommit":false,"messageTitle":"Update all Income references to Transaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":28,"deletions":28}}},{"hash":"2fc33d9e2ad1a61ee0d2aed1a3f847db69fe554b","isMergeCommit":false,"messageTitle":"Update naming of tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":33,"deletions":4}}},{"hash":"e1c61ab337260224fbb45244210356d3b48441d2","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":4}}},{"hash":"fbcd60affde58ead4feb1f4f472baa815e52ed17","isMergeCommit":false,"messageTitle":"Update message displays","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}}]},{"date":"2023-10-14","commitResults":[{"hash":"6579c4492dfa5489f8260f920a5f6dfdd6d6716a","isMergeCommit":true,"messageTitle":"Merge pull request #53 from lipwei1808/branch-Income","messageBody":"Add Transaction and UniCash Model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"d9c0f2bbb0faa2aa253fcac96163503c5b42c42e","isMergeCommit":false,"messageTitle":"Update handling of invalid values for non-compulsary fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":13},"test-code":{"insertions":6,"deletions":0}}},{"hash":"d1cfbae63b14fa2e3fd05ba9a87e025bb49b9fda","isMergeCommit":false,"messageTitle":"Add unit test case for Category, Location","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":2}}},{"hash":"746bbf9e83ddf73060b650ffdc6640bd06ed0397","isMergeCommit":false,"messageTitle":"Add unit test for empty DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3},"test-code":{"insertions":15,"deletions":2}}},{"hash":"44dbf004ba49d819fa8f0897ee40c7f783038a7a","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"0997f500ca2ead3e1cf46e7713f718165ba91fa7","isMergeCommit":false,"messageTitle":"Update handling of DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":22},"test-code":{"insertions":16,"deletions":14}}},{"hash":"6d9cb1d2d9d1d96f1e2fee1100f41178e9a71ffa","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-add-transaction","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"206f247dd14bc82873a8352a7c95e67876c260fc","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"bd11b6082691aa578657196cc1b9c39eed5f3380","isMergeCommit":false,"messageTitle":"Add Unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ed1a61679842a9e5e154c80e021c433d9c605f83","isMergeCommit":false,"messageTitle":"Update unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"909b637fd654f853e20217a1709e6931c974c40d","isMergeCommit":false,"messageTitle":"add unit test for DateTime constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":0}}},{"hash":"805e5327005323dc09815d509f5a984aeda805de","isMergeCommit":true,"messageTitle":"Merge pull request #66 from lipwei1808/fix-add-transaction","messageBody":"Update handling of invalid values for non-compulsary fields","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"debfe076f9fe81f52ac9e126f664f676fd3b82b1","isMergeCommit":false,"messageTitle":"Update category to list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":218,"deletions":93},"other":{"insertions":16,"deletions":27},"test-code":{"insertions":204,"deletions":185}}},{"hash":"8fac539d9d586113d9080bd66c6803ceb0618ca2","isMergeCommit":false,"messageTitle":"fix srtyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":6,"deletions":2}}},{"hash":"fb45f3b2dd92a00bacf7a786a2d0cb2caa168d49","isMergeCommit":false,"messageTitle":"Update test case name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c63d7d8a48d12b12161c47ef05e70360e906f8cd","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"68219d45f2b536ae8eadfa99c2c5d5c184b70887","isMergeCommit":false,"messageTitle":"Add unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":3}}},{"hash":"b1350e2567007a10897773572f76e79b7717edb3","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/model/transaction/Transaction.java","messageBody":"Co-authored-by: Jiahao \u003cwoojiahao1234@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"add9ec1eae096b81f87370827772d76c11bcedee","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4da4a61c13a0185cfeb9e475a6a24c25cd8caede","isMergeCommit":true,"messageTitle":"Merge pull request #72 from lipwei1808/branch-Category","messageBody":"Update category to list","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"018902d796f839419c5e444c8d0c4cc9555bebf8","isMergeCommit":false,"messageTitle":"restrict category to 15 characters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":11,"deletions":0}}},{"hash":"770c16d0541743a100e9859b204f38c8c185ff9f","isMergeCommit":false,"messageTitle":"Add CategoryList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":195,"deletions":1},"test-code":{"insertions":181,"deletions":0}}},{"hash":"2eb024efde68abeccba9097d38dffb3156799075","isMergeCommit":false,"messageTitle":"Update to UniqueCategoryList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":76},"test-code":{"insertions":28,"deletions":23}}},{"hash":"47311c316298017b2a5b43a2f58ec5f0bf825961","isMergeCommit":false,"messageTitle":"Fix bugs with parser not accepting duplicate category","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7},"test-code":{"insertions":4,"deletions":9}}},{"hash":"5b8ab10ae063e409bfefc0482144f8f3f34b0e71","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Category-limits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e390fe0485fd3bc756f42f94f99e0cab7b93b47e","isMergeCommit":false,"messageTitle":"Add more Unit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"test-code":{"insertions":48,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"70069b7b9cf6d7568cdcd30968ec2dcaf75633ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Category-limits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12671094cf88d3a586035ca124ba0bdcec10d2f7","isMergeCommit":false,"messageTitle":"Add test for parser for duplicate categories","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"e6f55724418c8b5359bacc38ee1eb8a76699140e","isMergeCommit":false,"messageTitle":"Update src/test/java/unicash/logic/parser/ParserUtilTest.java","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"37f22c00aa128c8aa84cd88b047ae242ab6363b9","isMergeCommit":true,"messageTitle":"Merge pull request #81 from lipwei1808/branch-Category-limits","messageBody":"Add constraints to Category","fileTypesAndContributionMap":{}},{"hash":"7ee5805718116e146be870ab2a1e3401ad7560e0","isMergeCommit":false,"messageTitle":"Add Integration test for AddTransaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":49}}},{"hash":"354628b748171af81ec215da293dacd883c17124","isMergeCommit":false,"messageTitle":"Add coverage for Model unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":37,"deletions":0}}},{"hash":"3359015e8f3ea6859a25e43606afe349e9e80898","isMergeCommit":false,"messageTitle":"Undo removal of constructor in AppUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"797835ac216c43047e06c20d417d672222585906","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-unit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cc031e684d04cf3dfe2454c833336e94a2d7123f","isMergeCommit":false,"messageTitle":"Undo removal of constructor in SampelDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"9d647927eb8d3bfc1fb3bb2b4d7612b51671d4d3","isMergeCommit":true,"messageTitle":"Merge pull request #85 from lipwei1808/branch-unit-test","messageBody":"Add Test coverage for Model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"d62f24fab948f67865275cc83247fb33e0113c53","isMergeCommit":false,"messageTitle":"Add Budget, Interval and refactored Amount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":208,"deletions":11},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":6}}},{"hash":"26f3bc388f96134f32d56e2638bfc74a563d2a6f","isMergeCommit":false,"messageTitle":"Add unit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6},"test-code":{"insertions":216,"deletions":0}}},{"hash":"de5c663c6d8bf7c704f2ed007c496ced200b0e56","isMergeCommit":false,"messageTitle":"Fix some typo issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b55a9269b4b5bedf0baa3057b44392e1a614ad8c","isMergeCommit":true,"messageTitle":"Merge pull request #92 from lipwei1808/branch-Budget","messageBody":"Budget Model","fileTypesAndContributionMap":{}}]}],"jamz903":[{"date":"2023-10-04","commitResults":[{"hash":"18b7d8b489ca016734e506a1514306c16789e8f2","isMergeCommit":false,"messageTitle":"Add personal ppp and update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":6}}},{"hash":"b71a82c4593130d71bb90b36c24de0cab084c73d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jamz903/about-us-jamie","messageBody":"Add personal ppp and update AboutUs","fileTypesAndContributionMap":{}},{"hash":"dabacd0dee8564eaeb4ccb565f90f308196e3ff2","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jamz903/readme-update","messageBody":"Update README with new UI mockup","fileTypesAndContributionMap":{}},{"hash":"bb52899e77d758b2fe405866b4d16bf20f55567e","isMergeCommit":false,"messageTitle":"Remove traces of AB3 from UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":136}}},{"hash":"58a9751d2dc1abc691c4edc1aa23420633c2142c","isMergeCommit":false,"messageTitle":"Implement suggested changes to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7a31a8a9d7eb2dddbd53ef37f481defe4ef8e83c","isMergeCommit":true,"messageTitle":"Merge pull request #43 from jamz903/update-UG","messageBody":"Remove traces of AB3 from UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"509a0eb52e5f8cac09b0987753759a2dc92664a6","isMergeCommit":false,"messageTitle":"Add List, Find and Tabulate Expenditure Command Details to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":197,"deletions":9}}},{"hash":"4ca4d396faaa6b49d9e4109f0e79fd7891a69831","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-ug-jamie\u0027 into update-ug-jamie","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"c6ded5db8642a7e682d02373d3fa6738a73de3ec","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-ug-jamie\u0027 into update-ug-jamie","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"9e86671532c7c8659ac349190d2c8dae4c0bd4b6","isMergeCommit":true,"messageTitle":"Merge pull request #51 from jamz903/update-ug-jamie","messageBody":"Add List, Find and Tabulate Expenditure Command Details to UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"7cad62bedb4cb1549159286ee1f74005ea4ce359","isMergeCommit":false,"messageTitle":"Add Use Cases for List, Find, and Tabulate Total Expenses to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":0}}},{"hash":"385f117817ccb27164497f642e3af8ca2e010ead","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into uc-jamie","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"ed1f3a5d736ac5ffe31c9d5c52cbab8605d9b204","isMergeCommit":false,"messageTitle":"Fix typo and make minor edits to use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":15}}},{"hash":"34cf3265ee194762b647281249e24aabad86c2cb","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/uc-jamie\u0027 into uc-jamie","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"fc93dc8a3a8522918f5bfd02049de090a58602ea","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jamz903/uc-jamie","messageBody":"Add Use Cases for List, Find, and Tabulate Total Expenses to DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"da1aaa4086a5cfdd675e42f1cc1bd2ea493da748","isMergeCommit":false,"messageTitle":"Add ListCommand and Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":4}}},{"hash":"0e0aaa006906ceb5c5cb9bd06470599eec985d3a","isMergeCommit":false,"messageTitle":"Add Unit Test for Parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"8f8619c57d650d28be1a5c884731573c9d51686c","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4}}},{"hash":"ae1c421c31a086ad374afa46dd47813f597b379e","isMergeCommit":false,"messageTitle":"Fix Checkstyle Import Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"a9838a3b2632a742bbe1e3a9bf416c531f0c2338","isMergeCommit":false,"messageTitle":"Minor Change to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"81292970ef67b1968cf8c78f34465807b7bdee30","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into list-jamie","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0defd966daebf8a532d67b241a65b5f2a51e3ae8","isMergeCommit":false,"messageTitle":"Minor Change to Parser and ParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"25c8238feba175808a0e8e5f2e742577eb4630ec","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/list-jamie\u0027 into list-jamie","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n","fileTypesAndContributionMap":{}},{"hash":"158b2ff73767617a645ef3b71f57339b430dfc12","isMergeCommit":false,"messageTitle":"Edit Tests for List Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"5a68795bc724d717d209ced27f4de97309d1d1bb","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"test-code":{"insertions":21,"deletions":31}}},{"hash":"eea54405c796ca513a920e3fd6705da3a87b5b82","isMergeCommit":false,"messageTitle":"Edit Message for List Command Usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e8c3acb052edfbdc5af10f352549f6dc3312964e","isMergeCommit":false,"messageTitle":"Minor changes to find command unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":8,"deletions":4}}},{"hash":"1e27151189176c9459cc88312c8b869e241813e3","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":4}}},{"hash":"2ea98d8218d1c3c7129717eb2de8e50691df34f9","isMergeCommit":true,"messageTitle":"Merge pull request #60 from jamz903/list-jamie","messageBody":"Add List Command for Transactions","fileTypesAndContributionMap":{}},{"hash":"12c46f5085c75fba86fe7b111d56a50254578dbe","isMergeCommit":false,"messageTitle":"Fix unused import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"7d4c5fd28e954c459029564cab1b478af3bddfff","isMergeCommit":false,"messageTitle":"Migrate to use UniCashMessages.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":2,"deletions":2}}},{"hash":"9f404ade108ba47216a84a70a6a337785e0c8ef7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from jamz903/find-jamie","messageBody":"Add Find Command for Transactions","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"d78bd8b795103f5db3b8e6f4929e83f9a1d48ad0","isMergeCommit":false,"messageTitle":"Edit Style and Display of Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":59}}},{"hash":"b87f1498acc8a875ea1c335459834d4e8a03750b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"009603b84c7502799bbd06015057f3b027f9eef3","isMergeCommit":false,"messageTitle":"Ui Update to Categories","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"12f131d1ac26bbea03366fa1bc36da5681c37bf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into ui-update","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"f75ec21532b06246376fd34b1373a63196b7a799","isMergeCommit":false,"messageTitle":"Make result section a more prominent colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"08a8c371bdf8b57b6dd562ed660a53c25ab9c926","isMergeCommit":true,"messageTitle":"Merge pull request #76 from jamz903/ui-update","messageBody":"Edit Style and Display of Ui to match prototype","fileTypesAndContributionMap":{}}]}],"elhy1999":[{"date":"2023-10-04","commitResults":[{"hash":"da3dea001ecea81df500e23b6f8cd0f45a297a87","isMergeCommit":false,"messageTitle":"Add elhy1999.md file for link in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":0}}},{"hash":"c1c36c722e384912e12b52ed6da7a2ba83a0966f","isMergeCommit":false,"messageTitle":"AboutUs.md: Add personal information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1a8bb09ccfcb527af16cbe79cb348dd23d8d7c62","isMergeCommit":true,"messageTitle":"Merge master to about-us-ernest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b73eae208368138f3b8198f3e8d42caa715a6a0f","isMergeCommit":false,"messageTitle":"elhy1999.md: Add newline at EOF for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4b659b8d5e1c5a45da864b109078bea9e41adb35","isMergeCommit":true,"messageTitle":"Merge pull request #41 from elhy1999/about-us-ernest","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"a8cce91c7771fb922a18c344ec28751e1cb89338","isMergeCommit":false,"messageTitle":"UserGuide.md: Add documentation for expense-editing feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":95,"deletions":0}}},{"hash":"300bff7fe821a43cfc8addc551b7ea4b25ff495c","isMergeCommit":false,"messageTitle":"UserGuide.md: Mark \u0027Edit Expense\u0027 feature as \u0027coming soon\u0027","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fc30bc09c65a229e886f5bbf149d49556c46c6e4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from elhy1999/branch-ug","messageBody":"Update User Guide with \u0027Edit Expense\u0027 feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"ae4baacf831658c54e6165c0dce06f6c99fbef9d","isMergeCommit":false,"messageTitle":"Adapt EditTransactionCommand.java according to EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":0}}},{"hash":"0523189ecb49d736f5720920a69d7bdd3db121be","isMergeCommit":false,"messageTitle":"Complete EditTransactionCommand and incorporating it to the existing classes","messageBody":"1. Add setTransaction method to Model and ModelManager classes\n2. Add isSameTransaction method to Transaction class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":2}}},{"hash":"f33fe890013cf0e657b37ef673babe08689c2d55","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandParser to AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"92c2d5176ee0415ab930a33a51e5173ef767862e","isMergeCommit":true,"messageTitle":"Merge delete feature to edit feature branch","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"171c212185205f2f09bda27d884c8e8fb1e4328c","isMergeCommit":false,"messageTitle":"Create editTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":15}}},{"hash":"5e404c61ff8692208f80d217c542de2e698c3d9e","isMergeCommit":false,"messageTitle":"AddressBookParser: Rearrange imports to fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"0e9a3e41a6e49f756dafa997fbd2538679bba9a9","isMergeCommit":false,"messageTitle":"EditTransactionCommandParser: Rearrange imports and decrease line length to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":2}}},{"hash":"2e9c3388c8f02c3446a2cb0830bdf409f28a8934","isMergeCommit":false,"messageTitle":"Transaction.java: Remove Person import to fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"ceeca90ea9398ef839d2440b3f430a040f57af06","isMergeCommit":false,"messageTitle":"Add setTransaction method implementation to ModelStub","messageBody":"The setTransaction method was added to the Model class, which the\nModelStub implements. This method was previously added as it is\nneeded for the EditTransactionCommand.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"e431cd79409a561c527b3c894216d855164085f0","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandTest and EditTransactionDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":283,"deletions":0}}},{"hash":"9bed6147b8f140c0f02db842e370528789fc1a64","isMergeCommit":false,"messageTitle":"CommandTestUtil.java: Add DESC_NUS and DESC_SHOPPING static variables","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"e71a4caaeee2ce352bf1b66819f2e5fd9996e492","isMergeCommit":false,"messageTitle":"TransactionBuilder: Modify DEFAULT_NAME from \u0027Amy Bee\u0027 to \u0027Dog food\u0027 to better suit transaction names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"aa55d9eb5db5706ca8da4ae3ef705cd768b0a900","isMergeCommit":false,"messageTitle":"Modify EditTransactionCommandTest to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":22}}},{"hash":"2e913f0135297d836f9690fad8e0f3fdaf355ae3","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":223,"deletions":0}}},{"hash":"13b0c131a5e4cf77d96509636179964c6ab6f5a5","isMergeCommit":false,"messageTitle":"Edit CommandParserTestUtil to catch IllegalArgumentExceptions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"e89eb5bbe45530545bc939c2fa304bf6557b02b0","isMergeCommit":false,"messageTitle":"CommandTestUtil.java: Add CATEGORY_DESC_NUS and LOCATION_DESC_NUS","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"a1cc3fabe078e59fec5252fedb9aefbb24ff08e5","isMergeCommit":false,"messageTitle":"EditTransactionCommandParser.java: Remove unused code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"4251d70af9ea7abfe05bcb513b58639405d638c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bcd1f1e813e49d42336143686f2962aee9d98e9a","isMergeCommit":false,"messageTitle":"Modify imports to improve code readability","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":65}}},{"hash":"7d9f62088a9b93effc2b6fc07a7fd8761f845658","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-feature\u0027 of https://github.com/elhy1999/tp into branch-edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e519fed244cc581672850b0f60fb429bd4d2d35","isMergeCommit":false,"messageTitle":"Modify EditTransactionCommandParserTest to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"13ced29b6d2150866439e39e6b05901161c11436","isMergeCommit":false,"messageTitle":"Add tests to EditTransactionDescriptor class to improve coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"c77087a638e8a0b3869b9d348df2e62c51e728ce","isMergeCommit":false,"messageTitle":"Remove Transaction#isSameTransaction from Transaction and EditTransactionCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":18}}},{"hash":"9cff780853655a578786743731a178930cc9831b","isMergeCommit":false,"messageTitle":"Remove transaction duplicate test from EditTransactionCommandTest following the removal of isSameTransaction method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":23}}},{"hash":"f3669223a9246e4303409f8f7298d22adac9f016","isMergeCommit":false,"messageTitle":"Add unit test for EditTransactionCommand in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"bb6910a374cfbb08ec0bfae4caeae28cd04d6ca7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":15}}},{"hash":"75516e849acc29271fb33c7561cff0daf1e900b9","isMergeCommit":true,"messageTitle":"Merge pull request #64 from elhy1999/branch-edit-feature","messageBody":"Add Edit Transaction functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"bc03f270055ad1abf8d5853adbf0f0cb9286de41","isMergeCommit":false,"messageTitle":"Fix typo errors in AddTransactionCommandTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"ca863ef1728541ec07b756585199acbda05d9701","isMergeCommit":false,"messageTitle":"Fix variable name from addressbook to unicash","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"7679a9a98ad599ddeb0cb675ea5ebcf25a337673","isMergeCommit":false,"messageTitle":"Modify test parseIndex_validInput_success to test on transactions not persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"dfb744b56b433d038d3b54be85932b1c9f8ef36d","isMergeCommit":false,"messageTitle":"Remove person indexes as they are no longer used","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"1ace5e5dc9dd02120ff1db57dc906c649e0b26dc","isMergeCommit":false,"messageTitle":"Fix typo errors and remove repeated unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"3e68bf1d0a2ab72000218a977851b578a6480539","isMergeCommit":false,"messageTitle":"Add modifications to test find command\u0027s ability to find multiple transactions with the same keyword","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":25,"deletions":2}}},{"hash":"f1f150228e4c235ee2c5c1b4cb1717a947d15b02","isMergeCommit":false,"messageTitle":"Remove unused imports to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"88f31eadb74715b6541777b2f381a37d1519f2b3","isMergeCommit":false,"messageTitle":"Modify ModelManagerTest to fix regression caused by previous edit to \u0027INTERN\u0027 typical transaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"5dda189dcecd653110b36148d567c9e03f050661","isMergeCommit":false,"messageTitle":"Add more tests for Delete and Find commands\u0027 parser classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"dc9da3d6c8565ec0347f861daced87538d197715","isMergeCommit":false,"messageTitle":"Modify variable \u0027uc\u0027 to \u0027typicalUnicash\u0027 for better interpretability","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"77cd215968035b904cc8d5470dbe193d6ef169e5","isMergeCommit":false,"messageTitle":"Remove \u0027TODO\u0027 comment as it has already been completed","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"5e7705fd553774d46455a9457499bfac75cdf8b7","isMergeCommit":false,"messageTitle":"Add modifications to use typical transaction \u0027NUS\u0027 and \u0027INTERN\u0027 instead of rebuilding them again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"d7c6bc93592ced79f9e8dde7bd3fc16c15ff1ea6","isMergeCommit":true,"messageTitle":"Merge pull request #88 from elhy1999/branch-unit-tests","messageBody":"Modify and add tests for add, delete, and find commands","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"sp4ce-cowboy":{"docs":241,"functional-code":1120,"test-code":1213,"other":2},"woojiahao":{"docs":232,"functional-code":574,"test-code":1426,"other":1},"lipwei1808":{"docs":178,"functional-code":1748,"test-code":1816},"jamz903":{"docs":276,"functional-code":127,"test-code":34},"elhy1999":{"docs":136,"functional-code":260,"test-code":313}},"authorContributionVariance":{"sp4ce-cowboy":300499.0,"woojiahao":1242021.4,"lipwei1808":530931.06,"jamz903":3560.6487,"elhy1999":25715.857},"authorDisplayNameMap":{"sp4ce-cowboy":"CS2103-T16-3 SURE..BESH","woojiahao":"CS2103-T16-3 WOO .. HAO","lipwei1808":"CS2103-T16-3 TAN .. WEI","jamz903":"CS2103-T16-3 TOH ..AMIE","elhy1999":"CS2103-T16-3 LIU .. YUI"}} +{"authorDailyContributionsMap":{"sp4ce-cowboy":[{"date":"2023-09-26","commitResults":[{"hash":"a1535c496b20701b7c9305c33b22f1f9a2fa92f6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":377}}},{"hash":"ad18099905ac1467e464284c8eb9ba869647ae9f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md with website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}},{"hash":"785d81975ac2d4a6bcecac4ce0dc4c28bee6e6c3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include layout and title headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"eeb7e47f00a2047db8e1f1c3b5d56125e0d96f84","isMergeCommit":true,"messageTitle":"Merge pull request #23 from sp4ce-cowboy/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-27","commitResults":[{"hash":"92d7f3f1a9b4839583f5ddd324d2b05b586be463","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md links to standard Markdown","messageBody":"The links on the Developer Guide page are not hyperlinked on the hosted GitHub page.\r\n\r\nInteractive hyperlinks are more user-friendly to users who will have to interact with the hosted Developer Guide website. \r\n\r\nUse standard Markdown syntax instead of GFMD syntax to ensure that the links are visibly hyperlinked.","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"cec41a58f4d40e5f937296bdebf30b046cfbfdc0","isMergeCommit":true,"messageTitle":"Merge pull request #25 from sp4ce-cowboy/master","messageBody":"Update Developer Guide links","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"3b50770e1fba8c5231d4c0a92af8c3331f457195","isMergeCommit":false,"messageTitle":"Update AboutUs page and PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":5}}},{"hash":"1dab425d60fc82489bb8d1e96282b8403b130ef5","isMergeCommit":false,"messageTitle":"Add Remark Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"690e1805e41ddb59e2413310b4092d2b35358840","isMergeCommit":true,"messageTitle":"Merge pull request #44 from sp4ce-cowboy/master","messageBody":"Update AboutUs page and PPP","fileTypesAndContributionMap":{}},{"hash":"88f00bdb8fb07ef2cdb616eddae97868324aa6c9","isMergeCommit":false,"messageTitle":"Remove RemarkCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"97652304630f02fa47e180cab76520addbea54b8","isMergeCommit":true,"messageTitle":"Merge pull request #47 from sp4ce-cowboy/master","messageBody":"Remove RemarkCommand class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"e2f2805fc1054e043ff970d3b177820e5510aa9c","isMergeCommit":false,"messageTitle":"Update UG with expense deletion commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":100,"deletions":0}}},{"hash":"a721d6d5e6126b244a300330e97f67d0609afe58","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}},{"hash":"2d96b325d7b8ad0e06fe9c024a256a1e3d361e2e","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"9fe98a64588c463428ed7c36748753d3b9e95bdc","isMergeCommit":true,"messageTitle":"Merge pull request #48 from sp4ce-cowboy/master","messageBody":"Update UG with expense deletion commands","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"f28455f55e70feb048ffe24893516cdc025612f8","isMergeCommit":false,"messageTitle":"Add Delete command Use Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"97d7b590a76d5d3bfc14331c7c0e27378ba16161","isMergeCommit":false,"messageTitle":"Update delete expense use cases for the DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"d2e6e7d08f87bd52b7c194570940c6b389a9e742","isMergeCommit":false,"messageTitle":"Update Use Cases for Delete expense","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"763eea164e7139db5201d85264f2455579a41567","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sp4ce-cowboy/master","messageBody":"Add Delete command Use Case","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"777c01b250285514665396b514e86d3b38f8fa0f","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommand class and UniCashMessages class","messageBody":"Currently, the old Messages class is being used and this class contains references to the original AB3 AddressBook.\n\nIt would be better to encapsulate the messages specific to our\nimplementation in its own class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"e8c6b6306bb553760bb1ba54a6474cd50ddf450e","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":3}}},{"hash":"414d36f1a42cf007bdd3cef4ca74c7c80747c1ce","isMergeCommit":false,"messageTitle":"Update AddressBookParser to recognize DeleleTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"838cbb09556d398c4df2b8d06b5c709acb6c9508","isMergeCommit":false,"messageTitle":"Update import order to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"1cb1892e242dabaae3c23d7648bf2ac4d4fce7e1","isMergeCommit":false,"messageTitle":"Change import order to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"77f33e1b97e67dd0e6548ca32576c8c5743fd052","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"560953d59f77051667b3978e303798dd1f1da96a","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"eb1f29712c61f89ca59d45923819f8dc7d7ab5e9","isMergeCommit":false,"messageTitle":"Add Unit Tests for DeleteTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"de88e9517b0bff9a5dc287645556c88bf0a2817c","isMergeCommit":false,"messageTitle":"Update Unit test code to conform with checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"c57905fa3451a1decfd2f80cba9fe54a255bafb0","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommand unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"2be77be5b3a1cbf0b71d29df1c18f934e680e1c2","isMergeCommit":false,"messageTitle":"Comment out some failing unit tests for now","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"951a9f588fcebb6dbc325515e8f22b3f7424c461","isMergeCommit":false,"messageTitle":"Remove unused imports for disabled unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"6abca407210add18f1c19dbd56038f883ad89fb4","isMergeCommit":false,"messageTitle":"Add unit tests for new Predicate class and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"8fa8310eadbb1384068d52123b3f5d562f540229","isMergeCommit":false,"messageTitle":"Add UniCashMessagesTest class for more unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":0}}},{"hash":"8a0c413af932baaabe975cce4b61eec0426b7422","isMergeCommit":false,"messageTitle":"Update unit tests for UniCashMessages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"fdce6ed1b0c2842a6295fec5bdec2e5b54b2a9b8","isMergeCommit":false,"messageTitle":"Update UniCashMessages unit tests to conform to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"5d692ac6a4b504f45252ad86a78e6b3c7876da59","isMergeCommit":false,"messageTitle":"Update unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"66aa6e3052aaa1bb57adc478117f86759dc529f8","isMergeCommit":false,"messageTitle":"Remove a problematic unit test in UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":19}}},{"hash":"d7d1f073f12a6839efde019ebdc2fa558fedfc9e","isMergeCommit":false,"messageTitle":"Update UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":9}}},{"hash":"04a3f9ce7808770fc3095e7be296a51ef266092a","isMergeCommit":false,"messageTitle":"Update UniCashMessagesTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"0297be0c2af826bb1b8f108346198d0b6d934e20","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":47}}},{"hash":"c19e02190598fc5b5a7a64ec9b4cf148cb39c96d","isMergeCommit":false,"messageTitle":"Add unit tests for DeleteTransactionCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"47ab7e52adc84bc85130c0dd9567d1ec6739b5b1","isMergeCommit":false,"messageTitle":"Remove DeleteTransactionCommandParserTest for now","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":35}}},{"hash":"16f055a86d62b734d922d91a1b936bf1d213f1c8","isMergeCommit":false,"messageTitle":"Add DeleteTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"b2bdffe5c8abf859b0d9c9adfd0bb9759433335d","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":6}}},{"hash":"86dbff1598ed3efff56f16b99ecf5d546f05531b","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"971931978d3671b616b0be3885553b247a43310f","isMergeCommit":false,"messageTitle":"Update DeleteTransactionCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"70e956256e4c9442f8e24b5d7ba29735432227b8","isMergeCommit":false,"messageTitle":"Update unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":3}}},{"hash":"e47496668fad0fe7375bb042bc4368f3f46027da","isMergeCommit":false,"messageTitle":"Update more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"4b86bc653297fc3df1f45f03b3e22f6b17f3b729","isMergeCommit":false,"messageTitle":"Update unit tests again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"8d481c355c44108dd30fddec31594fe933a02c19","isMergeCommit":false,"messageTitle":"Remove old formatTransactions method from Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":19}}},{"hash":"777c9a9bdcbed9518a9e3c8a0b2ea6f1931bf638","isMergeCommit":false,"messageTitle":"Update Messages class to remove whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"c6b319f646ab55b4ae7ed2aaf4f845d9da6eb9e1","isMergeCommit":false,"messageTitle":"Update Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"61c7131ff4238f7c8e2c4b2a44d86867f27e403c","isMergeCommit":true,"messageTitle":"Merge pull request #62 from sp4ce-cowboy/branch-AddDeleteCommand","messageBody":"Add DeleteTransaction functionality and relevant Unit Tests","fileTypesAndContributionMap":{}},{"hash":"e02bab3c63949889c91e338140b422789215df75","isMergeCommit":false,"messageTitle":"Add clear transactions command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":2},"test-code":{"insertions":35,"deletions":0}}},{"hash":"9992cb370bd20e7a56e30f359671b5f55780e4d6","isMergeCommit":false,"messageTitle":"Remove redundant extra line and update AddressBookParser Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":8,"deletions":0}}},{"hash":"c560428d9f7e61287284d9fe4cad1619397f75ed","isMergeCommit":true,"messageTitle":"Merge pull request #63 from sp4ce-cowboy/branch-AddMassDeleteCommand","messageBody":"Add clear transactions command functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"8f0b0737cba41f85290c87f3fad93c5e8c8ff1c5","isMergeCommit":false,"messageTitle":"Add HelpCommand to UniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6},"test-code":{"insertions":36,"deletions":6}}},{"hash":"a900e69408f20c4ff00f529a180af6e0b188639a","isMergeCommit":false,"messageTitle":"Add UniCash specific ExitCommand functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":1},"test-code":{"insertions":33,"deletions":0}}},{"hash":"8b31426b90661378b063e3d88b1487e3b221a576","isMergeCommit":false,"messageTitle":"Update HelpWindow reference to UniCash\u0027s User Guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"4b86c2c11dfce8fb18ec105f9f84dbe7023a9b82","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"09314fd6b973c5597d5196615df287e08fe574db","isMergeCommit":false,"messageTitle":"Update import order again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"22b3daadc336fb28a1f3253a688f52c6d5ca3103","isMergeCommit":false,"messageTitle":"Update import order yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"729a1a228be993e377e104f2d05d214f85dbc303","isMergeCommit":false,"messageTitle":"Update wrong import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"50ff7304df3566dccdcafc1320de7b7ccf97e908","isMergeCommit":false,"messageTitle":"Add a blank line","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"f4939f619304dc20e56ae11ef5c0120d54144b81","isMergeCommit":false,"messageTitle":"Update Developer guide to Transactions instead of Expense or Income","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":45}}}]},{"date":"2023-10-17","commitResults":[{"hash":"46fd960ae8a1ad239b39bd00976aa7cb6ea3d0bd","isMergeCommit":true,"messageTitle":"Merge pull request #73 from sp4ce-cowboy/branch-AddHelpCommand","messageBody":"Update Help and Exit functionality","fileTypesAndContributionMap":{}},{"hash":"7d8613dddf88c93d54091338be0fd4ed2d75e003","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateDGUG","messageBody":"* master:\n Add a blank line\n Update wrong import\n Update import order yet again\n Update import order again\n Update import order\n Update HelpWindow reference to UniCash\u0027s User Guide\n Add UniCash specific ExitCommand functionality\n Add HelpCommand to UniCash\n","fileTypesAndContributionMap":{}},{"hash":"e2873727d1df0f0a9ad2e4faf4903c6600ffc067","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sp4ce-cowboy/branch-UpdateDGUG","messageBody":"Update Developer guide to Transactions instead of Expense or Income","fileTypesAndContributionMap":{}},{"hash":"639b256351d910e7c551212cbe7a7649726c0db9","isMergeCommit":false,"messageTitle":"Refactor seedu.address package to unicash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":76},"other":{"insertions":1046,"deletions":1052},"docs":{"insertions":7,"deletions":4},"test-code":{"insertions":245,"deletions":270}}},{"hash":"1b4b46c5d9063a604359d2dfdc52d8bfdbb666f9","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2023-10-18","commitResults":[{"hash":"726930d730fca8c1c114a0fd905938100b1d42dc","isMergeCommit":false,"messageTitle":"Fix styling for Main classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":71}}},{"hash":"10d51d308e8b825d83a5c1c6535517212b92051e","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":255,"deletions":238}}},{"hash":"30ac391c2936f88876d52a4de821b540e4a3d363","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-REFACTOR_ALL","messageBody":"* master:\n Make result section a more prominent colour\n Ui Update to Categories\n Edit Style and Display of Ui\n","fileTypesAndContributionMap":{}},{"hash":"e34e80ee44d1e0a15a943b0ecfaaf81a48013863","isMergeCommit":false,"messageTitle":"Fix style yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":127,"deletions":105}}},{"hash":"78d318190f09691e8bc56939f15388b0a3b26cda","isMergeCommit":true,"messageTitle":"Merge pull request #77 from sp4ce-cowboy/branch-REFACTOR_ALL","messageBody":"Refactor seedu.address package to unicash","fileTypesAndContributionMap":{}},{"hash":"2c42d02babae1898c6bffe62b58aa587c8aa52f2","isMergeCommit":false,"messageTitle":"Change title of app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"8b28f9744e7b1c038d4440b4f1bf4e2b7db62dac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UI/sidepane","messageBody":"* master:\n Fix style yet again\n Fix style\n Fix styling for Main classes\n Fix import order\n Refactor seedu.address package to unicash\n","fileTypesAndContributionMap":{}},{"hash":"cc906a7f342353469778cef769e6cd1f713cc0e3","isMergeCommit":false,"messageTitle":"Update app icon to a wallet instead of a ContactBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3b9e83819e41a2c835b22b12ae122dccec399a2c","isMergeCommit":false,"messageTitle":"Add new font to UniCash and touch up GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":33},"other":{"insertions":0,"deletions":0}}},{"hash":"6b72824ae687acac0823fb90ea8e493107d72839","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17}}},{"hash":"2f269467b8a25e9ea787990e621af19f3338cedd","isMergeCommit":false,"messageTitle":"Fix a failing test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"09b4bd9460f757bbe8a53f91b64c06cbeb3a6ea4","isMergeCommit":false,"messageTitle":"Use Bold font style for StatusBarFooter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"76666ed8652195520c1204a009d673ae203dd83e","isMergeCommit":true,"messageTitle":"Merge pull request #78 from sp4ce-cowboy/branch-UI/sidepane","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"67a024738b6db61d680879e14ec1e822ed580d8c","isMergeCommit":false,"messageTitle":"Update UI and make minor changes to syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":68},"other":{"insertions":2,"deletions":2}}},{"hash":"8e0bfc404b63096b1f8e717b1da8a420a06ee724","isMergeCommit":false,"messageTitle":"Update formatting for ResultDisplay and money amounts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6}}},{"hash":"9c0e59da02e1026139d5c37176c2fa24b0868614","isMergeCommit":false,"messageTitle":"Add local User Guide functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":9}}},{"hash":"bb397c6ab368cea9a46ecd86e57b408a84cadb70","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"58ae35afd17388d6fc522a37f114e50c3681c9ba","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f58daaaaac453cc73bf72b0f74d808b3519c4084","isMergeCommit":false,"messageTitle":"Add Unit Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"ddf8d2b6c94d9b8c7a6acf2f6fbeeaa727c05947","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f46397358730e07c54501cd55caa62a4f3243fbe","isMergeCommit":false,"messageTitle":"Fix style again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"f85e516dd61583a8f6a9cc4490c7a9190281b61b","isMergeCommit":false,"messageTitle":"Fix style yet again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"98286986bdcae0d911b68e87af5662a675a9b3da","isMergeCommit":false,"messageTitle":"Replace typical transactions with archetypal student expenditures","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":9}}},{"hash":"f1730290734711810976a7289fcd83201347747d","isMergeCommit":false,"messageTitle":"Add income and expense differentiation in TransactionCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":6}}},{"hash":"bb87ac81935f0611d5db7d2dee1995cf3a3ecf49","isMergeCommit":false,"messageTitle":"Update style for GUI final","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":22}}},{"hash":"1988517229c09965d76550e1726aa5c7d3b625a7","isMergeCommit":false,"messageTitle":"Rename AddressBook Parser to UniCashParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3e35a387bad0b29668d8943d42015933118e8c91","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5d2928423e845fc8a875a0e4384a27ac7703750d","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0},"other":{"insertions":1,"deletions":1}}},{"hash":"25fd87be0e31e55597b5056dc1a36fed8883a14c","isMergeCommit":false,"messageTitle":"Fix impmort order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f328c97584e92b8062bc3dc1c0d93848025fcf10","isMergeCommit":true,"messageTitle":"Merge pull request #82 from sp4ce-cowboy/branch-UI/sidepanel","messageBody":"Add SplitPane GUI, local UserGuide and some other minor changes","fileTypesAndContributionMap":{}},{"hash":"fedbe224f001b820824d752071ada6b2377a3b61","isMergeCommit":false,"messageTitle":"Update Transaction Card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":7},"test-code":{"insertions":1,"deletions":1}}},{"hash":"21c43a6ceb437669559d75caae5b7b870ad6b952","isMergeCommit":false,"messageTitle":"Split TransactionCard Constructor into smaller methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":15}}},{"hash":"cdbb43350a35ee10567a26321adc9d1d05a42e71","isMergeCommit":false,"messageTitle":"Add private Label styler methods to TransactionCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":3}}},{"hash":"631a9d95066e2f4efe5ab41f939ca59f5854fd70","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5f403edbbe510d4eef657e2e3beb2f50c1aec3cb","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5f8b53ea6152188fc84b3f74921f826998af9ac9","isMergeCommit":false,"messageTitle":"Add F2 shortcut to help menu and fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"f04357828b15ba33036632deab6b85e4c6187b99","isMergeCommit":true,"messageTitle":"Merge pull request #86 from sp4ce-cowboy/branch-UI/transactionCardUpdates","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"e8e415a39e39871faff539292f6c3416d6f7550a","isMergeCommit":false,"messageTitle":"Add Reset Functionality to UniCash","messageBody":"Currently, UniCash starts populated with sample data.\n\nHowever, once this data is cleared, there is no way to restore the\nsample data apart from manually deleting the unicash.json storage\nwhich would require the user to bypass the App and access its storage\nfiles directly.\n\nLet\u0027s fix this minor issue by allowing the user, and any possible\ntesters of the UniCash application to restore the UniCash to its\ninitial default state such that any data-modification actions or tests\ncan be conveniently reversed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":7},"other":{"insertions":8,"deletions":8},"test-code":{"insertions":57,"deletions":13}}},{"hash":"00c46cf07fd31e1ca5c3a00ff38fcd5401023f15","isMergeCommit":false,"messageTitle":"Change name from ResetUniCashCommand to ResetCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":4,"deletions":4}}},{"hash":"8e2bed4b0975ff47b330ec9b16a5da4da6952333","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"e373d9a418b271df5cad594647ba7801cc02a900","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fd6e8a5610674f631858f60096bd35dc9eabc45a","isMergeCommit":true,"messageTitle":"Merge pull request #90 from sp4ce-cowboy/branch-Code/AddResetCommand","messageBody":"Add Reset Functionality to UniCash","fileTypesAndContributionMap":{}}]}],"woojiahao":[{"date":"2023-09-27","commitResults":[{"hash":"df1a68d32e5bd6c8d90732e7bec5317031739f80","isMergeCommit":false,"messageTitle":"Add initial Expense model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"3b4aac5331350febf445b9158f5bc873bd91052c","isMergeCommit":false,"messageTitle":"Add Name model for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3}}},{"hash":"6976e8c30977b4ad5193e2c03b7975ec047dcbbc","isMergeCommit":false,"messageTitle":"Add Amount data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":3}}},{"hash":"3cad5132ba6b828384fe54f70ac30364c6874957","isMergeCommit":false,"messageTitle":"Add Category data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":5}}},{"hash":"bb9780309f090b6b4ace16a6489d5c49794344ae","isMergeCommit":false,"messageTitle":"Add Location data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":0}}},{"hash":"dc9027d63613f2db1998ab89f8d9ee3df204b0c5","isMergeCommit":false,"messageTitle":"Add Expense JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"45ed75ecdaac6711fa6290200ecedf70f45cf9e9","isMergeCommit":false,"messageTitle":"Add JavaDocs for all data class for Expense","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":9}}}]},{"date":"2023-09-29","commitResults":[{"hash":"8bad691c0bab2a41f0e50ba9bb962d9ae387b345","isMergeCommit":false,"messageTitle":"Add Amount data class tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":32,"deletions":0}}},{"hash":"6d2454d2c94befb47723b365c222960b17858faf","isMergeCommit":false,"messageTitle":"Add Name data class tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}},{"hash":"8f18d94741cfb006a90cd1346ce42dc4499ae036","isMergeCommit":false,"messageTitle":"Add Category data class tests","messageBody":"Expanded Category behavior to allow -, _, and \u0026 in the name\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":63,"deletions":0}}},{"hash":"cc5252b96f359ee4ce55ea1eaa212c06386e12af","isMergeCommit":false,"messageTitle":"Fix documentation for CategoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"fa0b7706f24c0ce8fdd19ffb21bd83c9c37276f0","isMergeCommit":false,"messageTitle":"Replace LocalDate with LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"6af546a1f9d40e19226136e69eee25dca4a00881","isMergeCommit":false,"messageTitle":"Add Location data class tests","messageBody":"Add more permitted characters for Location like _, -, \u0026, #, ., ,, ()\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":66,"deletions":0}}}]},{"date":"2023-09-30","commitResults":[{"hash":"273a6c7c7cbdd183026e1618bff035c1a9a2a2f8","isMergeCommit":false,"messageTitle":"Add Expense data model tests with helpers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":184,"deletions":0}}},{"hash":"d14fa40d5388ea8d721e26a19dfe0fcf4d4a1d2c","isMergeCommit":false,"messageTitle":"Address checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":5}}}]},{"date":"2023-10-01","commitResults":[{"hash":"82813f0d5c8fd20a3cae43e25edfc939b7c28cf7","isMergeCommit":true,"messageTitle":"Merge pull request #27 from woojiahao/feat/add-expense-model","messageBody":"Add Expense model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"881c03cf12f0da9b7e8eb5bf106de4e193393c10","isMergeCommit":false,"messageTitle":"Update README to contain project content","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":10}}},{"hash":"0a491e5ea88c931ccfda8e968750242a724dd3e1","isMergeCommit":false,"messageTitle":"Update Jekyll page configuration","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":8}}},{"hash":"0bbd5c66f90a3cae33f6ab0d274f26f7545a8aee","isMergeCommit":true,"messageTitle":"Merge pull request #29 from woojiahao/feat/project-admin-settings","messageBody":"Update project page settings","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"e48332a65ef41e0496f8335475f375e62af82f29","isMergeCommit":false,"messageTitle":"Add changes to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}}]},{"date":"2023-10-04","commitResults":[{"hash":"e8cc72937aa3dfecaa0328366c7ee2a7edae3a2a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from woojiahao/feat/about-us-jiahao","messageBody":"Add About Us","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"155d6a11f69ce909779cc2f9ac0792a2e8ae4701","isMergeCommit":false,"messageTitle":"Add Create Expense feature details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":185,"deletions":37}}},{"hash":"b7ee099c7d15d90451c98dc4acbe69b47d8363f4","isMergeCommit":false,"messageTitle":"Fix FAQ and add to command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":21}}},{"hash":"68623f95403fa50d3621e96703127b1321894dd4","isMergeCommit":true,"messageTitle":"Merge pull request #49 from woojiahao/feat/ug-add-create-expense","messageBody":"Add Create Expense feature details","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"513651223765ebc9473146d502af87b7da153512","isMergeCommit":false,"messageTitle":"Add GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"8cf2c0509e50d0a41c3f6d3da0339f12bdff3bf3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/total-expenditure","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f108c95c0ca3c737bf66635c542e0bec70213b0e","isMergeCommit":false,"messageTitle":"Add unit tests for get_total_expenditure","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0},"test-code":{"insertions":179,"deletions":0}}},{"hash":"34eb9e4c9c7e8d65a8b670c1e7c83ac010c95286","isMergeCommit":false,"messageTitle":"Add coverage for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":3}}},{"hash":"abd2b8adfc59ee32054bbcf4d9af0d440a84b80a","isMergeCommit":false,"messageTitle":"Move GetTotalExpenditure error to UniCashMessages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"f91621f345dac89e5170053768b13bd17626bc7b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from woojiahao/feat/total-expenditure","messageBody":"Add \"Get total expenditure\" command","fileTypesAndContributionMap":{}},{"hash":"2cfdc9a4dc4caef9ddf55f142a035a439f9d61b7","isMergeCommit":false,"messageTitle":"Add JSON adapted Transaction for storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":119,"deletions":0}}},{"hash":"d77c423829a55d8f76d185d3ec892f2d85b248e9","isMergeCommit":false,"messageTitle":"Migrate to use UniCash storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":81},"test-code":{"insertions":19,"deletions":17}}},{"hash":"38afbc1cda90ed1fd8054bcf27922709619028f6","isMergeCommit":false,"messageTitle":"Fix all unit test errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":21,"deletions":22}}},{"hash":"ef163506563cbd1833728c19c80e24c981ff0dce","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d46e23d248a3bb312d51b2148a47e1a627a9763e","isMergeCommit":false,"messageTitle":"Fix LogicManagerTest imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":5}}},{"hash":"2e683a8f36512ab2f155bf1007ec87444daaad76","isMergeCommit":false,"messageTitle":"Add unit test for getUniCashFilePath","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"0f1fc615f2728c627a643c5147f3dc1373c066fc","isMergeCommit":false,"messageTitle":"Add unit test for JsonAdaptedTransaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":178,"deletions":0}}},{"hash":"faed499571707ff9aa5151a60e341d5d99488338","isMergeCommit":false,"messageTitle":"Add unit tests for JsonUniCashStorage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":109,"deletions":0}}},{"hash":"300afbd343ac50a60cf48fe1d56401b180b48eb5","isMergeCommit":false,"messageTitle":"Add unit tests for JsonSerializableUniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":48,"deletions":2}}},{"hash":"47b2193e69aeaddbb230a171e0e0836ef83b8e20","isMergeCommit":false,"messageTitle":"Remove getUniCashFilePath test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"ed0b6d8e3ac6b142a5fcfe683f4647fff5b793a3","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":31},"test-code":{"insertions":2,"deletions":2}}},{"hash":"9ad5b0f7f8003490660c2c9bf049ee42b56ddcd2","isMergeCommit":false,"messageTitle":"Allow leading character of Category to be -","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"e9cc484011b7a8357478d9c6ea19a4c756b61d77","isMergeCommit":true,"messageTitle":"Merge pull request #68 from woojiahao/feat/persist-transactions","messageBody":"Support persisting of transactions into file","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"285514f16464589227f177fac2da24b3ae3e9407","isMergeCommit":false,"messageTitle":"Delete person commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":436},"other":{"insertions":5,"deletions":13},"test-code":{"insertions":18,"deletions":31}}},{"hash":"279a764d67adbb80272c7f98b95520cc68b482a8","isMergeCommit":false,"messageTitle":"Remove person parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":189},"other":{"insertions":5,"deletions":5},"test-code":{"insertions":3,"deletions":1}}},{"hash":"0010f4963dcb303b80f64691a087894e3e47196c","isMergeCommit":false,"messageTitle":"Remove model persons files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":1059},"test-code":{"insertions":42,"deletions":64}}},{"hash":"c75786deda1bc9e75e576418aa859e4022afeae1","isMergeCommit":false,"messageTitle":"Remove persons deps for UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":451}}},{"hash":"06ad62281b8719c896f3082c7c9f5bc0747ee713","isMergeCommit":false,"messageTitle":"Clean up logic command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":35},"other":{"insertions":8,"deletions":54},"test-code":{"insertions":156,"deletions":776}}},{"hash":"5e831a264ec7b4a126a67a7c94e4fdf7524165b2","isMergeCommit":false,"messageTitle":"Clean up logic parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":624}}},{"hash":"66e2fda059d17ae3cc64573e04b4076fc46caeb6","isMergeCommit":false,"messageTitle":"Move all parser tests to root parser/","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"5fca6b7dcecb80f7b28c403fe78772899390ea5f","isMergeCommit":false,"messageTitle":"Clean out person model tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":685}}},{"hash":"aa2e9c25d9f3b3f9b62dcb0124d762dcf1128ad3","isMergeCommit":false,"messageTitle":"Remove Messages dependencies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":84},"test-code":{"insertions":9,"deletions":624}}},{"hash":"35ee6c5bb38beb5a08518e97c97d841f840348f4","isMergeCommit":false,"messageTitle":"Fix checkstyleMain errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":49},"test-code":{"insertions":143,"deletions":137}}},{"hash":"b7af542b41dbb36a99d0278566e762b8f2a8258d","isMergeCommit":false,"messageTitle":"Fix test checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":195}}},{"hash":"83b4e820960dba22954806ae616295fb59b38a48","isMergeCommit":false,"messageTitle":"Fix failing unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":11}}},{"hash":"2433e22a025551419e97bd1903db92092d08a3ca","isMergeCommit":false,"messageTitle":"Fix checkstyleTest errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"a5f6ff3382d694fff4b528b689163dc3c1fecb19","isMergeCommit":false,"messageTitle":"Add unit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"855ca298be40b05e0b55a8c0baab1fe3a5f80127","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81fc77315b551264835bba2c62485fc588ece3e1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9d125ac69c1a832efb727a66061ae8a6e06f66e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/feat/cleanup-addressbook-deps\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"350cc38e04ec586b6ff3bb6d7f00c014503acc06","isMergeCommit":false,"messageTitle":"Fix checkstyleTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"6ca9c0f0ff3f771ab6475d067fb7193f74bd3acc","isMergeCommit":false,"messageTitle":"Re-address checkstyleTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":5}}},{"hash":"6396f637be4ca9127d5832836a261c3212fd8152","isMergeCommit":false,"messageTitle":"Add explicit assertFalse for equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"44e12717f72f31a19d3ce5fe2633a480bbfd4f9b","isMergeCommit":false,"messageTitle":"Add explicit false equality assertion","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":12}}},{"hash":"683fe988e559f382eacaa1f56e05baa0700f9dfc","isMergeCommit":false,"messageTitle":"Fix invalid unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4041cc23999badc6f97e228647fce94636d73e1f","isMergeCommit":false,"messageTitle":"Use proper false equality tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"90ae076b22d9395f1d03882a996d39783de8ab72","isMergeCommit":false,"messageTitle":"Add unit test for GetTotalExpenditureCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"8888c0c82313c233c3a541a1088607b72a295fb0","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"02183bf7d04740e1c86dfdeda3ab4cc87022ca89","isMergeCommit":false,"messageTitle":"Raise missing preamble exception","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":2}}},{"hash":"ce3a319146594ec2e19b826ca2b176b026bbcfea","isMergeCommit":false,"messageTitle":"Add wider test coverage for files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":10,"deletions":28}}},{"hash":"98add1a32f249d273fb4c95f1ba3cbbb4dbb6587","isMergeCommit":false,"messageTitle":"Add test coverage for misc files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":60,"deletions":0}}},{"hash":"f341950b6e6ad793bda2d10467e05b9cfd4f851a","isMergeCommit":false,"messageTitle":"Add minor test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":38,"deletions":0}}},{"hash":"2f0609f565661dbce918dbd44a37f382b0659b2b","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"3ac123e0f313d37e0cf7a7ee8a162ac781281153","isMergeCommit":false,"messageTitle":"Add more misc test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":1},"test-code":{"insertions":46,"deletions":0}}},{"hash":"7ab9751499b14f9ced8cd8ee574f3b30dfa8db15","isMergeCommit":false,"messageTitle":"Add final set of misc tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":0}}},{"hash":"aa50c586e47a56c37c5a8832e7e9820847666ef3","isMergeCommit":false,"messageTitle":"Update grammar","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4e961ae3d85ed11be6021afc1213a84fff7a1563","isMergeCommit":false,"messageTitle":"Fix documentation phrasing","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cb14b16287f74ace98607cc7cd0044cc37b915ca","isMergeCommit":false,"messageTitle":"Remove addressbook comment","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"39f9158f48e297aca8e36bedb300b2ec3ae0257c","isMergeCommit":false,"messageTitle":"Remove addressbook comment","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"6e18deda2228477fba9cc2cdb98ab8692b8e43f2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/cleanup-addressbook-deps","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c40e496db7d3f32fc014223391b6c1a67e6ee83","isMergeCommit":true,"messageTitle":"Merge pull request #75 from woojiahao/feat/cleanup-addressbook-deps","messageBody":"Clean up AddressBook dependencies","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"060b98fbb8f0c2d9f6bba55360c53de4c3639a8b","isMergeCommit":false,"messageTitle":"Fix GetTotalExpenditure for expense w/ no category","messageBody":"Behavior caused by default behavior of anyMatch where empty stream\ndefaults to false so hasCategory is naively assumed to be false even if\ncategory filter does not exist\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":17,"deletions":0}}},{"hash":"48e51e2c0c925b0005e8b700a5aa70a1bacf3d3d","isMergeCommit":false,"messageTitle":"Add unit test for GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":1}}},{"hash":"79050acd564e41f297bb38d002853799e469e67a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from woojiahao/fix/get-total-expenditure-category-bug","messageBody":"Fix GetTotalExpenditure for expense w/ no category","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"4033669c0413d4467855e7523f720936435941f9","isMergeCommit":false,"messageTitle":"Clean up basic command unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":14}}},{"hash":"9ab1147053e4789f437bd8f851c290482627e46d","isMergeCommit":false,"messageTitle":"Add more unit tests for GetTotalExpenditureCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"68c3722d36b79a58282b937db409b740b0d34267","isMergeCommit":false,"messageTitle":"Refactor GetTotalExpenditureCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"19dca861ba76916f821f2300e0280d868f3637fe","isMergeCommit":false,"messageTitle":"Fix GetTotalExpenditureCommandParser bug","messageBody":"where preamble does not always retrieve the appropriate value. Replace\nto use month/ prefix and added more unit tests for these corner cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":38,"deletions":3}}},{"hash":"5f89252cace09770125f570cf400864e97e98fca","isMergeCommit":false,"messageTitle":"Add equals \u0026 tests for ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":31,"deletions":1}}},{"hash":"90515eae21c7781b7e4ce89ea0d76aa46f825a10","isMergeCommit":false,"messageTitle":"Add unit tests for EditTransactionDescriptor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":14},"test-code":{"insertions":90,"deletions":71}}},{"hash":"c40acbac55b465bf449dbf6423240fa89364a88d","isMergeCommit":false,"messageTitle":"Add unit test for isAnyFieldEdited","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"da73e92ba856c30330dfeaad39cf14106f8564f7","isMergeCommit":false,"messageTitle":"Add more unit tests for EditTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":132,"deletions":64}}},{"hash":"07b300f31b6ce63671cb65865e4b6249d1852f47","isMergeCommit":false,"messageTitle":"Add parseType tests for ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":1}}},{"hash":"6158719ad4f09e4f5a0da1b65baed8d3298ded98","isMergeCommit":false,"messageTitle":"Add unit tests for JsonAdaptedCategory","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"9574447b0205d3c5bdc2846719a2c0fe58a9d004","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":9}}},{"hash":"185d541c5e1dfe6cf7516707c6deff37a36c94ca","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into chore/unit-testing-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"600d0c2cb95079a9814d9a3323a3e454d7cbea85","isMergeCommit":true,"messageTitle":"Merge pull request #84 from woojiahao/chore/unit-testing-updates","messageBody":"Improve existing unit tests","fileTypesAndContributionMap":{}}]}],"lipwei1808":[{"date":"2023-09-27","commitResults":[{"hash":"95439fba0c291743cae70356983ed59fb3651bf0","isMergeCommit":false,"messageTitle":"add lipwei1808 ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"d04e36ab84ad374cde52b120422ec6ea4b4b6c92","isMergeCommit":false,"messageTitle":"Update overview of ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"abab096f6208f57c27c5f0ccec2a3457397422c4","isMergeCommit":false,"messageTitle":"Update UserGuide - add income features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":135,"deletions":0}}},{"hash":"9b21499635e8ae776d1180bbdd8996666eaf7316","isMergeCommit":true,"messageTitle":"Merge pull request #26 from lipwei1808/branch-ppp","messageBody":"Add lipwei1808 ppp, picture and UG","fileTypesAndContributionMap":{}}]},{"date":"2023-09-28","commitResults":[{"hash":"7a6c7626214a3e352f26590222516fb1bf21e331","isMergeCommit":false,"messageTitle":"Add Income Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"973455cc2cde2ccaa0f34329f4acd8f9baf51679","isMergeCommit":false,"messageTitle":"Add Income Model Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":255,"deletions":0}}},{"hash":"b87422a9f547f6428d80868f1f0bbbb1ace51753","isMergeCommit":false,"messageTitle":"Removed unused imports added missing Javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":0,"deletions":3}}},{"hash":"425c99832bdf0e1feff32df0c3548d3aa5177fc1","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":12}}},{"hash":"9e58bd632b9f280011c3504cd7cd17ea5b97afbb","isMergeCommit":false,"messageTitle":"Fix failing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":4,"deletions":2}}},{"hash":"e727c780a5a51985da073b6ad33c030b4b9c1609","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cd56d6c4238298d6ec236941af6c6a206c8d4a4e","isMergeCommit":false,"messageTitle":"Update LocalDate to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2023-09-30","commitResults":[{"hash":"8ea0b6716606d8cdfdadfdcf9e3e1b74778a8cfd","isMergeCommit":true,"messageTitle":"Merge pull request #28 from lipwei1808/branch-IncomeModel","messageBody":"Add Income model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"0ad7af7a9669aa8fd890b91c09fc8192f0fe4327","isMergeCommit":false,"messageTitle":"Updated AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"548ebd274cc812ec9d8779926c62cc39ed683a05","isMergeCommit":true,"messageTitle":"Merge pull request #39 from lipwei1808/branch-lipwei-AboutUs","messageBody":"Updated AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2023-10-07","commitResults":[{"hash":"49743029316bd35267df013e36284318d6daa0bb","isMergeCommit":false,"messageTitle":"Add Use Cases for income features to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":0}}}]},{"date":"2023-10-08","commitResults":[{"hash":"6989eba566d9b72cb1e3755a6f8f2e1849a51314","isMergeCommit":false,"messageTitle":"Update no of tabs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"745dc647aa620930a1d90a396d6cb4ee62665b1b","isMergeCommit":false,"messageTitle":"Update ModelManager to include IncomeList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":445,"deletions":3},"test-code":{"insertions":71,"deletions":22}}},{"hash":"26f636acadc5b85f85b69e797c114033d55ab1a5","isMergeCommit":false,"messageTitle":"Add Parser for AddIncomeCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":236,"deletions":13},"test-code":{"insertions":9,"deletions":7}}},{"hash":"1b4c8b0bc61c1b98c7fc8a907909e0a09871f3c2","isMergeCommit":false,"messageTitle":"Add UI handling for incomes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":0}}},{"hash":"678fea7ec0cf2002175b84ae6e79f02112529904","isMergeCommit":false,"messageTitle":"Add unit test for IncomeList and DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":162,"deletions":0}}},{"hash":"56983f1aeae6014e54b94ee40d623292c355a4e9","isMergeCommit":false,"messageTitle":"Add Unit tests for AddIncomeCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":9},"test-code":{"insertions":221,"deletions":16}}},{"hash":"bdeec287671b061510f9da105964e92c43787bc9","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":29}}},{"hash":"d09adae00698d7899be195a451924f67d1078a54","isMergeCommit":false,"messageTitle":"Update Unit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":81,"deletions":4}}},{"hash":"cc1b7cdbcaae4f6e8e7b108233e2523cd1a73088","isMergeCommit":false,"messageTitle":"Added more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":47,"deletions":3}}},{"hash":"f178176c3ee6e525db50a93708e8e87a959b536a","isMergeCommit":false,"messageTitle":"Add Unit test for AddIncomeCommand and UniqueIncomeList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":1},"test-code":{"insertions":386,"deletions":0}}},{"hash":"322620e83f55ad57cd8fb005b719ba78f6085142","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":8}}},{"hash":"f528319fa2b4bf35bc6d36245989d0ecc9b84710","isMergeCommit":false,"messageTitle":"Add equals test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":11},"test-code":{"insertions":56,"deletions":8}}}]},{"date":"2023-10-11","commitResults":[{"hash":"141de6f5e0b10fa680dd94e8d7109ba10b954bcd","isMergeCommit":false,"messageTitle":"Fix typo and finetune use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1bfc66d91ef86ff411b443575baa45631119aa36","isMergeCommit":false,"messageTitle":"Update java docs for Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"8e5e8a6f421120b620a59d1aec48d90432d2698c","isMergeCommit":false,"messageTitle":"Add Transaction Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":340,"deletions":0},"test-code":{"insertions":294,"deletions":0}}}]},{"date":"2023-10-12","commitResults":[{"hash":"0624aba5304461c26c79e002b9047763b8fda756","isMergeCommit":false,"messageTitle":"Add DateTime Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":0}}},{"hash":"5cd5e8cfdf8758014dd71aaf53f9f92324a5595c","isMergeCommit":false,"messageTitle":"Add DateTime test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}},{"hash":"6b60761b9a64c0e8202c3d183392731457993522","isMergeCommit":false,"messageTitle":"Add TransactionTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":132,"deletions":11}}},{"hash":"27aa2e79c978a4db323284ed784c4f9c9c286302","isMergeCommit":false,"messageTitle":"Remove Income and Expense Models","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":541},"test-code":{"insertions":3,"deletions":679}}},{"hash":"fd10c274e1249ee0e573e0452c13daffedf98a6d","isMergeCommit":false,"messageTitle":"Add unit test for DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":0}}},{"hash":"5f88e52fa4b6ac2523743ec66132e5c8903878f3","isMergeCommit":false,"messageTitle":"Update Unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":4,"deletions":2}}},{"hash":"b992f728011753cb8c61ec2bb155fcbe64ae78e2","isMergeCommit":false,"messageTitle":"Add more Unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":1}}},{"hash":"6a0ffcf89bafa397827109ccf27daa0440e6d2f7","isMergeCommit":false,"messageTitle":"Add transction type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":3},"test-code":{"insertions":83,"deletions":5}}},{"hash":"37baf0316da2667227414fefad7cd74f3cdf2a58","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"9bd0d35a96ec5df0f94e4246e97448cc01a7b446","isMergeCommit":true,"messageTitle":"Merge pull request #52 from lipwei1808/branch-lipwei1808-UseCases","messageBody":"Add Use Cases for income features to DG","fileTypesAndContributionMap":{}},{"hash":"814dc90cf9d03c166b064b8687e0c32b433b0819","isMergeCommit":false,"messageTitle":"Update DateTime class to accept String","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18},"test-code":{"insertions":29,"deletions":30}}},{"hash":"4eb4c3f15d21bebec73b026d3726713de21a7b41","isMergeCommit":false,"messageTitle":"Add more Unit tests for DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":15,"deletions":3}}},{"hash":"f6c8daed6317b9e70711e7e3b0fd90f82da586ca","isMergeCommit":false,"messageTitle":"Add missing @Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"9fed96ae530f0e7c8793dcd09c44ef14221a4b74","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f70c886bf4d012afdb264530a9db2889cc7c6e3f","isMergeCommit":true,"messageTitle":"Merge pull request #58 from lipwei1808/branch-Transaction","messageBody":"Transaction Model","fileTypesAndContributionMap":{}},{"hash":"b82136d0864192ae1592979d8c190fdcdd7f5e54","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Income","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"08fd5cce3d27d2df72c298eebf64bc7c46c25ee0","isMergeCommit":false,"messageTitle":"Refactor to Transactions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":297},"other":{"insertions":66,"deletions":68},"test-code":{"insertions":290,"deletions":291}}},{"hash":"b9450abc9cc41a2c0ad9c56f28fddd0b1f32c608","isMergeCommit":false,"messageTitle":"Update AddTransactionCommand and TypicalTransactions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17},"other":{"insertions":11,"deletions":6},"test-code":{"insertions":32,"deletions":9}}},{"hash":"c905960f1736655924aa244fc3e2003607bf361c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":7,"deletions":18}}}]},{"date":"2023-10-13","commitResults":[{"hash":"c0eefb7ea9f790a5770564b18240cec4730e6369","isMergeCommit":false,"messageTitle":"Fix style and most tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":6},"other":{"insertions":10,"deletions":4},"test-code":{"insertions":107,"deletions":41}}},{"hash":"35c58bbca705229ee584493054535d11c66356a9","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"577ef479875518f53dd9db5046a2bc1c7baa089f","isMergeCommit":false,"messageTitle":"Add Unit test for TransactionList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":154,"deletions":0}}},{"hash":"56f41d47052d3c6f5246e514641e2b687e1b0dec","isMergeCommit":false,"messageTitle":"Add more Unit tests for UniCash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":42,"deletions":3}}},{"hash":"2a89b8380514aeb14fffcf9bf7245e4009c3e1bd","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"c5909acddcfe6098f0ebc9a79334e46a2bed3e70","isMergeCommit":false,"messageTitle":"Update all Income references to Transaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":28,"deletions":28}}},{"hash":"2fc33d9e2ad1a61ee0d2aed1a3f847db69fe554b","isMergeCommit":false,"messageTitle":"Update naming of tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":33,"deletions":4}}},{"hash":"e1c61ab337260224fbb45244210356d3b48441d2","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":4}}},{"hash":"fbcd60affde58ead4feb1f4f472baa815e52ed17","isMergeCommit":false,"messageTitle":"Update message displays","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}}]},{"date":"2023-10-14","commitResults":[{"hash":"6579c4492dfa5489f8260f920a5f6dfdd6d6716a","isMergeCommit":true,"messageTitle":"Merge pull request #53 from lipwei1808/branch-Income","messageBody":"Add Transaction and UniCash Model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"d9c0f2bbb0faa2aa253fcac96163503c5b42c42e","isMergeCommit":false,"messageTitle":"Update handling of invalid values for non-compulsary fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":13},"test-code":{"insertions":6,"deletions":0}}},{"hash":"d1cfbae63b14fa2e3fd05ba9a87e025bb49b9fda","isMergeCommit":false,"messageTitle":"Add unit test case for Category, Location","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":2}}},{"hash":"746bbf9e83ddf73060b650ffdc6640bd06ed0397","isMergeCommit":false,"messageTitle":"Add unit test for empty DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3},"test-code":{"insertions":15,"deletions":2}}},{"hash":"44dbf004ba49d819fa8f0897ee40c7f783038a7a","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"0997f500ca2ead3e1cf46e7713f718165ba91fa7","isMergeCommit":false,"messageTitle":"Update handling of DateTime","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":22},"test-code":{"insertions":16,"deletions":14}}},{"hash":"6d9cb1d2d9d1d96f1e2fee1100f41178e9a71ffa","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-add-transaction","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"206f247dd14bc82873a8352a7c95e67876c260fc","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"bd11b6082691aa578657196cc1b9c39eed5f3380","isMergeCommit":false,"messageTitle":"Add Unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ed1a61679842a9e5e154c80e021c433d9c605f83","isMergeCommit":false,"messageTitle":"Update unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"909b637fd654f853e20217a1709e6931c974c40d","isMergeCommit":false,"messageTitle":"add unit test for DateTime constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":0}}},{"hash":"805e5327005323dc09815d509f5a984aeda805de","isMergeCommit":true,"messageTitle":"Merge pull request #66 from lipwei1808/fix-add-transaction","messageBody":"Update handling of invalid values for non-compulsary fields","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"debfe076f9fe81f52ac9e126f664f676fd3b82b1","isMergeCommit":false,"messageTitle":"Update category to list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":218,"deletions":93},"other":{"insertions":16,"deletions":27},"test-code":{"insertions":204,"deletions":185}}},{"hash":"8fac539d9d586113d9080bd66c6803ceb0618ca2","isMergeCommit":false,"messageTitle":"fix srtyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":6,"deletions":2}}},{"hash":"fb45f3b2dd92a00bacf7a786a2d0cb2caa168d49","isMergeCommit":false,"messageTitle":"Update test case name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c63d7d8a48d12b12161c47ef05e70360e906f8cd","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"68219d45f2b536ae8eadfa99c2c5d5c184b70887","isMergeCommit":false,"messageTitle":"Add unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":3}}},{"hash":"b1350e2567007a10897773572f76e79b7717edb3","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/model/transaction/Transaction.java","messageBody":"Co-authored-by: Jiahao \u003cwoojiahao1234@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"add9ec1eae096b81f87370827772d76c11bcedee","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4da4a61c13a0185cfeb9e475a6a24c25cd8caede","isMergeCommit":true,"messageTitle":"Merge pull request #72 from lipwei1808/branch-Category","messageBody":"Update category to list","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"018902d796f839419c5e444c8d0c4cc9555bebf8","isMergeCommit":false,"messageTitle":"restrict category to 15 characters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":11,"deletions":0}}},{"hash":"770c16d0541743a100e9859b204f38c8c185ff9f","isMergeCommit":false,"messageTitle":"Add CategoryList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":195,"deletions":1},"test-code":{"insertions":181,"deletions":0}}},{"hash":"2eb024efde68abeccba9097d38dffb3156799075","isMergeCommit":false,"messageTitle":"Update to UniqueCategoryList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":76},"test-code":{"insertions":28,"deletions":23}}},{"hash":"47311c316298017b2a5b43a2f58ec5f0bf825961","isMergeCommit":false,"messageTitle":"Fix bugs with parser not accepting duplicate category","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7},"test-code":{"insertions":4,"deletions":9}}},{"hash":"5b8ab10ae063e409bfefc0482144f8f3f34b0e71","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Category-limits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e390fe0485fd3bc756f42f94f99e0cab7b93b47e","isMergeCommit":false,"messageTitle":"Add more Unit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"test-code":{"insertions":48,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"70069b7b9cf6d7568cdcd30968ec2dcaf75633ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Category-limits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12671094cf88d3a586035ca124ba0bdcec10d2f7","isMergeCommit":false,"messageTitle":"Add test for parser for duplicate categories","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"e6f55724418c8b5359bacc38ee1eb8a76699140e","isMergeCommit":false,"messageTitle":"Update src/test/java/unicash/logic/parser/ParserUtilTest.java","messageBody":"Co-authored-by: rubesh \u003crubesh77@gmail.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"37f22c00aa128c8aa84cd88b047ae242ab6363b9","isMergeCommit":true,"messageTitle":"Merge pull request #81 from lipwei1808/branch-Category-limits","messageBody":"Add constraints to Category","fileTypesAndContributionMap":{}},{"hash":"7ee5805718116e146be870ab2a1e3401ad7560e0","isMergeCommit":false,"messageTitle":"Add Integration test for AddTransaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":49}}},{"hash":"354628b748171af81ec215da293dacd883c17124","isMergeCommit":false,"messageTitle":"Add coverage for Model unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":37,"deletions":0}}},{"hash":"3359015e8f3ea6859a25e43606afe349e9e80898","isMergeCommit":false,"messageTitle":"Undo removal of constructor in AppUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"797835ac216c43047e06c20d417d672222585906","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-unit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cc031e684d04cf3dfe2454c833336e94a2d7123f","isMergeCommit":false,"messageTitle":"Undo removal of constructor in SampelDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"9d647927eb8d3bfc1fb3bb2b4d7612b51671d4d3","isMergeCommit":true,"messageTitle":"Merge pull request #85 from lipwei1808/branch-unit-test","messageBody":"Add Test coverage for Model","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"d62f24fab948f67865275cc83247fb33e0113c53","isMergeCommit":false,"messageTitle":"Add Budget, Interval and refactored Amount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":208,"deletions":11},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":6}}},{"hash":"26f3bc388f96134f32d56e2638bfc74a563d2a6f","isMergeCommit":false,"messageTitle":"Add unit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6},"test-code":{"insertions":216,"deletions":0}}},{"hash":"de5c663c6d8bf7c704f2ed007c496ced200b0e56","isMergeCommit":false,"messageTitle":"Fix some typo issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b55a9269b4b5bedf0baa3057b44392e1a614ad8c","isMergeCommit":true,"messageTitle":"Merge pull request #92 from lipwei1808/branch-Budget","messageBody":"Budget Model","fileTypesAndContributionMap":{}}]}],"jamz903":[{"date":"2023-10-04","commitResults":[{"hash":"18b7d8b489ca016734e506a1514306c16789e8f2","isMergeCommit":false,"messageTitle":"Add personal ppp and update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":6}}},{"hash":"b71a82c4593130d71bb90b36c24de0cab084c73d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jamz903/about-us-jamie","messageBody":"Add personal ppp and update AboutUs","fileTypesAndContributionMap":{}},{"hash":"dabacd0dee8564eaeb4ccb565f90f308196e3ff2","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jamz903/readme-update","messageBody":"Update README with new UI mockup","fileTypesAndContributionMap":{}},{"hash":"bb52899e77d758b2fe405866b4d16bf20f55567e","isMergeCommit":false,"messageTitle":"Remove traces of AB3 from UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":136}}},{"hash":"58a9751d2dc1abc691c4edc1aa23420633c2142c","isMergeCommit":false,"messageTitle":"Implement suggested changes to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7a31a8a9d7eb2dddbd53ef37f481defe4ef8e83c","isMergeCommit":true,"messageTitle":"Merge pull request #43 from jamz903/update-UG","messageBody":"Remove traces of AB3 from UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"509a0eb52e5f8cac09b0987753759a2dc92664a6","isMergeCommit":false,"messageTitle":"Add List, Find and Tabulate Expenditure Command Details to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":197,"deletions":9}}},{"hash":"4ca4d396faaa6b49d9e4109f0e79fd7891a69831","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-ug-jamie\u0027 into update-ug-jamie","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"c6ded5db8642a7e682d02373d3fa6738a73de3ec","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-ug-jamie\u0027 into update-ug-jamie","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"9e86671532c7c8659ac349190d2c8dae4c0bd4b6","isMergeCommit":true,"messageTitle":"Merge pull request #51 from jamz903/update-ug-jamie","messageBody":"Add List, Find and Tabulate Expenditure Command Details to UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"7cad62bedb4cb1549159286ee1f74005ea4ce359","isMergeCommit":false,"messageTitle":"Add Use Cases for List, Find, and Tabulate Total Expenses to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":0}}},{"hash":"385f117817ccb27164497f642e3af8ca2e010ead","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into uc-jamie","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"ed1f3a5d736ac5ffe31c9d5c52cbab8605d9b204","isMergeCommit":false,"messageTitle":"Fix typo and make minor edits to use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":15}}},{"hash":"34cf3265ee194762b647281249e24aabad86c2cb","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/uc-jamie\u0027 into uc-jamie","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"fc93dc8a3a8522918f5bfd02049de090a58602ea","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jamz903/uc-jamie","messageBody":"Add Use Cases for List, Find, and Tabulate Total Expenses to DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"da1aaa4086a5cfdd675e42f1cc1bd2ea493da748","isMergeCommit":false,"messageTitle":"Add ListCommand and Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":4}}},{"hash":"0e0aaa006906ceb5c5cb9bd06470599eec985d3a","isMergeCommit":false,"messageTitle":"Add Unit Test for Parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"8f8619c57d650d28be1a5c884731573c9d51686c","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4}}},{"hash":"ae1c421c31a086ad374afa46dd47813f597b379e","isMergeCommit":false,"messageTitle":"Fix Checkstyle Import Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"a9838a3b2632a742bbe1e3a9bf416c531f0c2338","isMergeCommit":false,"messageTitle":"Minor Change to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"81292970ef67b1968cf8c78f34465807b7bdee30","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into list-jamie","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0defd966daebf8a532d67b241a65b5f2a51e3ae8","isMergeCommit":false,"messageTitle":"Minor Change to Parser and ParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"25c8238feba175808a0e8e5f2e742577eb4630ec","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/list-jamie\u0027 into list-jamie","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n","fileTypesAndContributionMap":{}},{"hash":"158b2ff73767617a645ef3b71f57339b430dfc12","isMergeCommit":false,"messageTitle":"Edit Tests for List Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"5a68795bc724d717d209ced27f4de97309d1d1bb","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"test-code":{"insertions":21,"deletions":31}}},{"hash":"eea54405c796ca513a920e3fd6705da3a87b5b82","isMergeCommit":false,"messageTitle":"Edit Message for List Command Usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e8c3acb052edfbdc5af10f352549f6dc3312964e","isMergeCommit":false,"messageTitle":"Minor changes to find command unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":8,"deletions":4}}},{"hash":"1e27151189176c9459cc88312c8b869e241813e3","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":4}}},{"hash":"2ea98d8218d1c3c7129717eb2de8e50691df34f9","isMergeCommit":true,"messageTitle":"Merge pull request #60 from jamz903/list-jamie","messageBody":"Add List Command for Transactions","fileTypesAndContributionMap":{}},{"hash":"12c46f5085c75fba86fe7b111d56a50254578dbe","isMergeCommit":false,"messageTitle":"Fix unused import issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"7d4c5fd28e954c459029564cab1b478af3bddfff","isMergeCommit":false,"messageTitle":"Migrate to use UniCashMessages.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":2,"deletions":2}}},{"hash":"9f404ade108ba47216a84a70a6a337785e0c8ef7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from jamz903/find-jamie","messageBody":"Add Find Command for Transactions","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"d78bd8b795103f5db3b8e6f4929e83f9a1d48ad0","isMergeCommit":false,"messageTitle":"Edit Style and Display of Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":59}}},{"hash":"b87f1498acc8a875ea1c335459834d4e8a03750b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"009603b84c7502799bbd06015057f3b027f9eef3","isMergeCommit":false,"messageTitle":"Ui Update to Categories","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"12f131d1ac26bbea03366fa1bc36da5681c37bf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into ui-update","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"f75ec21532b06246376fd34b1373a63196b7a799","isMergeCommit":false,"messageTitle":"Make result section a more prominent colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"08a8c371bdf8b57b6dd562ed660a53c25ab9c926","isMergeCommit":true,"messageTitle":"Merge pull request #76 from jamz903/ui-update","messageBody":"Edit Style and Display of Ui to match prototype","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"b7285b6ab32e17f258190fb5940dfde879e03f93","isMergeCommit":false,"messageTitle":"Add support for user to input multiple date formats","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":22,"deletions":5}}}]},{"date":"2023-10-23","commitResults":[{"hash":"34632e67244fb9bde10ae71621bafe67f670a2bc","isMergeCommit":false,"messageTitle":"Add unit test and fix minor formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5},"test-code":{"insertions":12,"deletions":0}}},{"hash":"6ad092a97cb509717f8c41a0393205ae75e2200b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103-T16-3:master\u0027 into date-parser","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"6171e512e9fdf4a5e6d938c0d30f21610578f824","isMergeCommit":false,"messageTitle":"Rename originalString to inputString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":7}}},{"hash":"f3e27254586a71bf779f4ca178d04ad9d3534e73","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/date-parser\u0027 into date-parser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b7d66c64858ffd1d234edbba24df20b7c21e87ea","isMergeCommit":true,"messageTitle":"Merge pull request #87 from jamz903/date-parser","messageBody":"Add support for user to input multiple dateTime formats","fileTypesAndContributionMap":{}}]}],"elhy1999":[{"date":"2023-10-04","commitResults":[{"hash":"da3dea001ecea81df500e23b6f8cd0f45a297a87","isMergeCommit":false,"messageTitle":"Add elhy1999.md file for link in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":0}}},{"hash":"c1c36c722e384912e12b52ed6da7a2ba83a0966f","isMergeCommit":false,"messageTitle":"AboutUs.md: Add personal information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1a8bb09ccfcb527af16cbe79cb348dd23d8d7c62","isMergeCommit":true,"messageTitle":"Merge master to about-us-ernest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b73eae208368138f3b8198f3e8d42caa715a6a0f","isMergeCommit":false,"messageTitle":"elhy1999.md: Add newline at EOF for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4b659b8d5e1c5a45da864b109078bea9e41adb35","isMergeCommit":true,"messageTitle":"Merge pull request #41 from elhy1999/about-us-ernest","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"a8cce91c7771fb922a18c344ec28751e1cb89338","isMergeCommit":false,"messageTitle":"UserGuide.md: Add documentation for expense-editing feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":95,"deletions":0}}},{"hash":"300bff7fe821a43cfc8addc551b7ea4b25ff495c","isMergeCommit":false,"messageTitle":"UserGuide.md: Mark \u0027Edit Expense\u0027 feature as \u0027coming soon\u0027","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fc30bc09c65a229e886f5bbf149d49556c46c6e4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from elhy1999/branch-ug","messageBody":"Update User Guide with \u0027Edit Expense\u0027 feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"ae4baacf831658c54e6165c0dce06f6c99fbef9d","isMergeCommit":false,"messageTitle":"Adapt EditTransactionCommand.java according to EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":0}}},{"hash":"0523189ecb49d736f5720920a69d7bdd3db121be","isMergeCommit":false,"messageTitle":"Complete EditTransactionCommand and incorporating it to the existing classes","messageBody":"1. Add setTransaction method to Model and ModelManager classes\n2. Add isSameTransaction method to Transaction class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":2}}},{"hash":"f33fe890013cf0e657b37ef673babe08689c2d55","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandParser to AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"92c2d5176ee0415ab930a33a51e5173ef767862e","isMergeCommit":true,"messageTitle":"Merge delete feature to edit feature branch","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"171c212185205f2f09bda27d884c8e8fb1e4328c","isMergeCommit":false,"messageTitle":"Create editTransactionCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":15}}},{"hash":"5e404c61ff8692208f80d217c542de2e698c3d9e","isMergeCommit":false,"messageTitle":"AddressBookParser: Rearrange imports to fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"0e9a3e41a6e49f756dafa997fbd2538679bba9a9","isMergeCommit":false,"messageTitle":"EditTransactionCommandParser: Rearrange imports and decrease line length to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":2}}},{"hash":"2e9c3388c8f02c3446a2cb0830bdf409f28a8934","isMergeCommit":false,"messageTitle":"Transaction.java: Remove Person import to fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"ceeca90ea9398ef839d2440b3f430a040f57af06","isMergeCommit":false,"messageTitle":"Add setTransaction method implementation to ModelStub","messageBody":"The setTransaction method was added to the Model class, which the\nModelStub implements. This method was previously added as it is\nneeded for the EditTransactionCommand.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"e431cd79409a561c527b3c894216d855164085f0","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandTest and EditTransactionDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":283,"deletions":0}}},{"hash":"9bed6147b8f140c0f02db842e370528789fc1a64","isMergeCommit":false,"messageTitle":"CommandTestUtil.java: Add DESC_NUS and DESC_SHOPPING static variables","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"e71a4caaeee2ce352bf1b66819f2e5fd9996e492","isMergeCommit":false,"messageTitle":"TransactionBuilder: Modify DEFAULT_NAME from \u0027Amy Bee\u0027 to \u0027Dog food\u0027 to better suit transaction names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"aa55d9eb5db5706ca8da4ae3ef705cd768b0a900","isMergeCommit":false,"messageTitle":"Modify EditTransactionCommandTest to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":22}}},{"hash":"2e913f0135297d836f9690fad8e0f3fdaf355ae3","isMergeCommit":false,"messageTitle":"Add EditTransactionCommandParserTest unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":223,"deletions":0}}},{"hash":"13b0c131a5e4cf77d96509636179964c6ab6f5a5","isMergeCommit":false,"messageTitle":"Edit CommandParserTestUtil to catch IllegalArgumentExceptions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"e89eb5bbe45530545bc939c2fa304bf6557b02b0","isMergeCommit":false,"messageTitle":"CommandTestUtil.java: Add CATEGORY_DESC_NUS and LOCATION_DESC_NUS","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"a1cc3fabe078e59fec5252fedb9aefbb24ff08e5","isMergeCommit":false,"messageTitle":"EditTransactionCommandParser.java: Remove unused code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"4251d70af9ea7abfe05bcb513b58639405d638c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bcd1f1e813e49d42336143686f2962aee9d98e9a","isMergeCommit":false,"messageTitle":"Modify imports to improve code readability","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":65}}},{"hash":"7d9f62088a9b93effc2b6fc07a7fd8761f845658","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-feature\u0027 of https://github.com/elhy1999/tp into branch-edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e519fed244cc581672850b0f60fb429bd4d2d35","isMergeCommit":false,"messageTitle":"Modify EditTransactionCommandParserTest to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"13ced29b6d2150866439e39e6b05901161c11436","isMergeCommit":false,"messageTitle":"Add tests to EditTransactionDescriptor class to improve coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"c77087a638e8a0b3869b9d348df2e62c51e728ce","isMergeCommit":false,"messageTitle":"Remove Transaction#isSameTransaction from Transaction and EditTransactionCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":18}}},{"hash":"9cff780853655a578786743731a178930cc9831b","isMergeCommit":false,"messageTitle":"Remove transaction duplicate test from EditTransactionCommandTest following the removal of isSameTransaction method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":23}}},{"hash":"f3669223a9246e4303409f8f7298d22adac9f016","isMergeCommit":false,"messageTitle":"Add unit test for EditTransactionCommand in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"bb6910a374cfbb08ec0bfae4caeae28cd04d6ca7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":15}}},{"hash":"75516e849acc29271fb33c7561cff0daf1e900b9","isMergeCommit":true,"messageTitle":"Merge pull request #64 from elhy1999/branch-edit-feature","messageBody":"Add Edit Transaction functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"bc03f270055ad1abf8d5853adbf0f0cb9286de41","isMergeCommit":false,"messageTitle":"Fix typo errors in AddTransactionCommandTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"ca863ef1728541ec07b756585199acbda05d9701","isMergeCommit":false,"messageTitle":"Fix variable name from addressbook to unicash","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"7679a9a98ad599ddeb0cb675ea5ebcf25a337673","isMergeCommit":false,"messageTitle":"Modify test parseIndex_validInput_success to test on transactions not persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"dfb744b56b433d038d3b54be85932b1c9f8ef36d","isMergeCommit":false,"messageTitle":"Remove person indexes as they are no longer used","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"1ace5e5dc9dd02120ff1db57dc906c649e0b26dc","isMergeCommit":false,"messageTitle":"Fix typo errors and remove repeated unit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"3e68bf1d0a2ab72000218a977851b578a6480539","isMergeCommit":false,"messageTitle":"Add modifications to test find command\u0027s ability to find multiple transactions with the same keyword","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":25,"deletions":2}}},{"hash":"f1f150228e4c235ee2c5c1b4cb1717a947d15b02","isMergeCommit":false,"messageTitle":"Remove unused imports to fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"88f31eadb74715b6541777b2f381a37d1519f2b3","isMergeCommit":false,"messageTitle":"Modify ModelManagerTest to fix regression caused by previous edit to \u0027INTERN\u0027 typical transaction","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"5dda189dcecd653110b36148d567c9e03f050661","isMergeCommit":false,"messageTitle":"Add more tests for Delete and Find commands\u0027 parser classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"dc9da3d6c8565ec0347f861daced87538d197715","isMergeCommit":false,"messageTitle":"Modify variable \u0027uc\u0027 to \u0027typicalUnicash\u0027 for better interpretability","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"77cd215968035b904cc8d5470dbe193d6ef169e5","isMergeCommit":false,"messageTitle":"Remove \u0027TODO\u0027 comment as it has already been completed","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"5e7705fd553774d46455a9457499bfac75cdf8b7","isMergeCommit":false,"messageTitle":"Add modifications to use typical transaction \u0027NUS\u0027 and \u0027INTERN\u0027 instead of rebuilding them again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"d7c6bc93592ced79f9e8dde7bd3fc16c15ff1ea6","isMergeCommit":true,"messageTitle":"Merge pull request #88 from elhy1999/branch-unit-tests","messageBody":"Modify and add tests for add, delete, and find commands","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"sp4ce-cowboy":{"docs":241,"functional-code":1120,"test-code":1211,"other":2},"woojiahao":{"docs":232,"functional-code":573,"test-code":1425,"other":1},"lipwei1808":{"docs":178,"functional-code":1739,"test-code":1810},"jamz903":{"docs":276,"functional-code":151,"test-code":72},"elhy1999":{"docs":136,"functional-code":260,"test-code":313}},"authorContributionVariance":{"sp4ce-cowboy":277106.12,"woojiahao":1137979.9,"lipwei1808":491978.16,"jamz903":3256.9963,"elhy1999":23578.648},"authorDisplayNameMap":{"sp4ce-cowboy":"CS2103-T16-3 SURE..BESH","woojiahao":"CS2103-T16-3 WOO .. HAO","lipwei1808":"CS2103-T16-3 TAN .. WEI","jamz903":"CS2103-T16-3 TOH ..AMIE","elhy1999":"CS2103-T16-3 LIU .. YUI"}} diff --git a/AY2324S1-CS2103T-F11-4_tp_master/authorship.json b/AY2324S1-CS2103T-F11-4_tp_master/authorship.json index 0243dcd9..1953bd3e 100644 --- a/AY2324S1-CS2103T-F11-4_tp_master/authorship.json +++ b/AY2324S1-CS2103T-F11-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Connectify","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F11-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F11-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"## Introduction","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"**Connectify** is a robust client management tool designed to streamline the process of tracking, categorizing, and interacting with clients for salesperson. It enables users to efficiently manage client profiles and interactions through a series of straightforward commands. From creating new profiles to logging interactions and categorizing leads, Connectify provides a comprehensive solution for managing client relationships and ensuring no detail is overlooked.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":"![UiMockup](docs/images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"## Key Features","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"### 1. **Client Profile Management**","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":"- **Add**: Easily create and add new client profiles, including details like profession, contact information, income, and additional notes.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":"- **Delete**: Remove client profiles from the address book swiftly.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":"- **View**: Access and view the full details of a client\u0027s profile.","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":"### 2. **Lead Categorization**","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":"- Categorize your clients as \"Cold\", \"Warm\", or \"Hot\" leads to prioritize interactions and follow-ups effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"### 3. **Client Interaction Logging**","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"- Log and keep track of interactions with clients, ensuring every discussion and detail is recorded and easily accessible.","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":"## User-Friendly Commands","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":"Connectify utilizes a command-line interface with intuitive commands that allow users to:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":"- **Create** client profiles with detailed information.","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":"- **Categorize** clients based on lead temperature.","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"- **Delete** client profiles when they are no longer needed.","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":"- **View** detailed client profiles.","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":"- **Log** interactions with clients to keep track of discussions and plans.","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":"## Error Handling","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":"With clear expected outputs for both successful commands and failure notices, users are guided through error resolution, ensuring smooth operation and minimal disruption to workflow.","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":"## Getting Started","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":"To begin using Connectify, refer to the detailed command guides and examples provided in the user guide. Each command is designed with simplicity in mind, ensuring users can quickly adapt and integrate Connectify into their client management processes.","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":"## Conclusion","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":"Connectify offers a seamless approach to client management, ensuring that every interaction, detail, and categorization is just a simple command away. With a focus on ease of use and efficient management, it stands as a valuable tool for any professional seeking to enhance their client relationship management.","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":"For detailed command usage, examples, and acceptable values, please refer to the comprehensive user guide.","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"KamiliArsyad":43,"zhyuhan":1,"-":3,"dickongwd":4}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" \u003cmodule name\u003d\"SuppressWithPlainTextCommentFilter\"\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"// CHECKSTYLE\\.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"// CHECKSTYLE\\.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" \u003c/module\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":161,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":162,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":239,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":247,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":249,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":250,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":251,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":272,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":282,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":321,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":329,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22"},{"lineNumber":335,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":348,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":356,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":359,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":368,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":382,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":385,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":387,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":390,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":391,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":392,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":410,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":420,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":422,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":429,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":432,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"lineNumber":434,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":436,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":437,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":439,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":440,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MagnificentCreature":6,"-":434}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"You can reach us at the email `connectify[at]comp.nus.edu.sg`","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"### Kamili Arsyad","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/kamiliarsyad.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"dickongwd"},"content":"[[github](https://github.com/KamiliArsyad)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/kamiliarsyad.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"dickongwd"},"content":"### Dick Ong","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/dickongwd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/dickongwd)]","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/dickongwd.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":"### Jair Goh","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/lilozz2.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/lilozz2)]","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/lilozz2.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":"### Sean Wang","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/magnificentcreature.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/magnificentcreature)]","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/magnificentcreature.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":"### Zhang Yu Han","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/zhyuhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/zhyuhan)]","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/zhyuhan.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":32,"dickongwd":28}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"MagnificentCreature"},"content":"* has a need to track information about business clients","lastModifiedDate":"2023-10-03"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"MagnificentCreature"},"content":"**Value proposition**: manage useful information about a clients faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | record my client’s contact information | conveniently refer to it later |","lastModifiedDate":"2023-10-03"},{"lineNumber":276,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | access the full details of a particular client\u0027s information comprehensively | aid my future interaction with this client |","lastModifiedDate":"2023-10-03"},{"lineNumber":277,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | client profiles | remove entries that I no longer need |","lastModifiedDate":"2023-10-03"},{"lineNumber":278,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | add notes of my meetings with my clients | track details for future interaction with client |","lastModifiedDate":"2023-10-03"},{"lineNumber":279,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | log the outcomes of my client interactions (e.g., interested, not interested, follow-up required) | track progress of client interactions |","lastModifiedDate":"2023-10-03"},{"lineNumber":280,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | mark a client as a \"hot lead,\" \"warm lead,\" or \"cold lead | gauge the sales potential of the client |","lastModifiedDate":"2023-10-03"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"MagnificentCreature"},"content":"(For all use cases below, the **System** is the `Connectify` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Delete a client**","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":293,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":294,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests to delete a specific client in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":295,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify deletes the client","lastModifiedDate":"2023-10-03"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Add a client interaction**","lastModifiedDate":"2023-10-03"},{"lineNumber":313,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":314,"author":{"gitId":"MagnificentCreature"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":315,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":316,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":317,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":318,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests create a client interaction","lastModifiedDate":"2023-10-03"},{"lineNumber":319,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify adds the interaction to the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":320,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":321,"author":{"gitId":"MagnificentCreature"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":322,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"MagnificentCreature"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"MagnificentCreature"},"content":"* 3a. The user does not exist.","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"MagnificentCreature"},"content":" * 3a1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":328,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":329,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":330,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":331,"author":{"gitId":"MagnificentCreature"},"content":"* 3b. The client interaction is empty","lastModifiedDate":"2023-10-03"},{"lineNumber":332,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":333,"author":{"gitId":"MagnificentCreature"},"content":" * 3b1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":334,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":335,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":336,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":337,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":338,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Mark a client as “Cold”, “Warm” or “Hot” Leads**","lastModifiedDate":"2023-10-03"},{"lineNumber":339,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":340,"author":{"gitId":"MagnificentCreature"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":341,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":342,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":343,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":344,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests to mark a client as “Cold”, “Warm” or “Hot” Lead","lastModifiedDate":"2023-10-03"},{"lineNumber":345,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify displays the updated client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":346,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":347,"author":{"gitId":"MagnificentCreature"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":348,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":349,"author":{"gitId":"MagnificentCreature"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":350,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":351,"author":{"gitId":"MagnificentCreature"},"content":"* 3a. The user does not exist.","lastModifiedDate":"2023-10-03"},{"lineNumber":352,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":353,"author":{"gitId":"MagnificentCreature"},"content":" * 3a1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":354,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":355,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":356,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":357,"author":{"gitId":"MagnificentCreature"},"content":"* 3b. The lead category is key\u0027ed in wrong or empty","lastModifiedDate":"2023-10-03"},{"lineNumber":358,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":359,"author":{"gitId":"MagnificentCreature"},"content":" * 3b1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":360,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":361,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":362,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":363,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2023-10-03"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"lilozz2"},"content":"4. The system should work in both 32-bit and 64-bit environments.","lastModifiedDate":"2023-10-03"},{"lineNumber":371,"author":{"gitId":"lilozz2"},"content":"5. Response time for fetching a contact\u0027s details should not exceed 1.5 seconds. ","lastModifiedDate":"2023-10-03"},{"lineNumber":372,"author":{"gitId":"lilozz2"},"content":"6. Search operations should return results within 2 seconds for queries against the full dataset.","lastModifiedDate":"2023-10-03"},{"lineNumber":373,"author":{"gitId":"lilozz2"},"content":"7. The system must be backward compatible with data generated from previous versions of the software.","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"MagnificentCreature"},"content":"* **Hot/Warm/Cold Lead**: A hot lead is a potential client who is ready to buy. A warm lead is a potential client who is interested in buying. A cold lead is a potential client who is not ready to buy.","lastModifiedDate":"2023-10-03"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"MagnificentCreature"},"content":"*{More to be added}*","lastModifiedDate":"2023-10-03"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":382,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"lilozz2":4,"MagnificentCreature":67,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"Connectify is a **desktop app for managing clients, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Connectify can get your client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"![Ui Markup](images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"dickongwd"},"content":"## Quick start [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":"## Features [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"dickongwd"},"content":"### Viewing help [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"dickongwd"},"content":"### Adding a client profile: `create profile` [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"dickongwd"},"content":"Creates a new client profile with various details.","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":"create profile \u003cclient_name\u003e --profession \u003cprofession\u003e --email \u003cemail\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":"--telegram \u003ctelegram_handle\u003e --phone \u003cphone_number\u003e --income \u003cincome\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"dickongwd"},"content":"--details \u003cadditional_details\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":"create profile John Doe --profession Sales --email john@example.com","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":"--telegram @john_doe --phone +1234567890 --income $50,000","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"dickongwd"},"content":"--details \"Birthday: 01/15, Family: Spouse, 2 children\"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":"Acceptable values","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, up to 50 characters, has to be unique","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"dickongwd"},"content":"- \u003cprofession\u003e: Alphanumeric, up to 50 characters","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":"- \u003cemail\u003e: Valid email address format","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":"- \u003ctelegram_handle\u003e: Alphanumeric, up to 50 characters, starting with \u0027@\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":"- \u003cphone_number\u003e: Numeric, valid phone number format","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":"- \u003cincome\u003e: Numeric, representing annual income","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":"- \u003cadditional_details\u003e: Alphanumeric, additional client details","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":"- The new client profile is created and added to the address book","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":"- The GUI should reflect the newly added client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"dickongwd"},"content":"- Invalid email, telegram handle, or phone number format: \"Invalid email/telegram/phone format.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":"- Missing required parameters: \"Missing parameters. Please provide all required details.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":"### Marking a client as Cold, Warm, or Hot Leads [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":"Tag a client as a \"hot lead\", \"warm lead\", or \"cold lead\" to prioritise your interactions.","lastModifiedDate":"2023-10-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":"lead \u003clead_category\u003e \u003cclient_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":65,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":68,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":69,"author":{"gitId":"dickongwd"},"content":"lead hot John Doe","lastModifiedDate":"2023-10-03"},{"lineNumber":70,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":73,"author":{"gitId":"dickongwd"},"content":"- \u003clead_category\u003e: \"hot\", \"warm\" or \"cold\"","lastModifiedDate":"2023-10-03"},{"lineNumber":74,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":77,"author":{"gitId":"dickongwd"},"content":"- The specified client is marked with the chosen lead category","lastModifiedDate":"2023-10-03"},{"lineNumber":78,"author":{"gitId":"dickongwd"},"content":"- The GUI should display the updated lead category for the client","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":81,"author":{"gitId":"dickongwd"},"content":"- Invalid lead category: \"Invalid lead category. Please choose \u0027hot,\u0027 \u0027warm,\u0027 or \u0027cold.\u0027\"","lastModifiedDate":"2023-10-03"},{"lineNumber":82,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"dickongwd"},"content":"### Delete a client profile [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"dickongwd"},"content":"Delete a client\u0027s profile from the address book.","lastModifiedDate":"2023-10-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":89,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":90,"author":{"gitId":"dickongwd"},"content":"delete profile \u003cclient_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":91,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"dickongwd"},"content":"delete profile John Doe","lastModifiedDate":"2023-10-03"},{"lineNumber":96,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"dickongwd"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-03"},{"lineNumber":99,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":"- The specified client profile is deleted from the address book","lastModifiedDate":"2023-10-03"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":"- The GUI should reflect the removal of the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"dickongwd"},"content":"- Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":"- Missing client name parameter: \"Please enter the client name.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":"### Viewing a client profile [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"dickongwd"},"content":"View the full details of a client profile.","lastModifiedDate":"2023-10-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"zhyuhan"},"content":"view \u003cindex\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"zhyuhan"},"content":"view 1","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":123,"author":{"gitId":"zhyuhan"},"content":"- \u003cindex\u003e: Number, the index of the client to view in the list displayed.","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"dickongwd"},"content":"- The full details of the selected client profile are displayed in the GUI","lastModifiedDate":"2023-10-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":129,"author":{"gitId":"zhyuhan"},"content":"- Invalid index: \"The person index provided is invalid\"","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"dickongwd"},"content":"### Create a client interaction [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"dickongwd"},"content":"Create an interaction that is tagged to a client.","lastModifiedDate":"2023-10-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":136,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":137,"author":{"gitId":"dickongwd"},"content":"log \u003cclient_name\u003e \u003cinteraction\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":138,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"dickongwd"},"content":"Example ","lastModifiedDate":"2023-10-03"},{"lineNumber":141,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"dickongwd"},"content":"log John Doe “Discussed financial plans”","lastModifiedDate":"2023-10-03"},{"lineNumber":143,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":146,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"dickongwd"},"content":"- \u003cinteraction\u003e: Alphanumeric, details of interaction with the client","lastModifiedDate":"2023-10-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":150,"author":{"gitId":"dickongwd"},"content":"- The client profile is shown","lastModifiedDate":"2023-10-03"},{"lineNumber":151,"author":{"gitId":"dickongwd"},"content":"- The interaction is added to the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":154,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":155,"author":{"gitId":"dickongwd"},"content":"- Missing client name parameter: \"Please enter the client name.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":156,"author":{"gitId":"dickongwd"},"content":"- Missing interaction parameter: “Please enter the client interaction.”","lastModifiedDate":"2023-10-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"dickongwd"},"content":"## FAQ [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"dickongwd"},"content":"## Known issues [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"dickongwd"},"content":"## Command summary [coming soon]","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":4,"-":61,"dickongwd":104}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"title: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F11-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F11-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"![UiMockup](images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"**Connectify is a desktop application for managing your clients.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"* If you are interested in using Connectify, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":"* If you are interested about developing Connectify, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":12,"dickongwd":6}},{"path":"docs/team/dickongwd.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: dickongwd\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/kamiliarsyad.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: KamiliArsyad\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/lilozz2.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: lilozz2\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/magnificentcreature.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: MagnificentCreature\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/zhyuhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: zhyuhan\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" /** Returns the currently selected person */","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" SimpleObjectProperty\u003cPerson\u003e getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"zhyuhan":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"zhyuhan"},"content":" return model.getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"zhyuhan":6,"-":88}},{"path":"src/main/java/seedu/address/logic/commands/CreateCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PROFESSION;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommand extends Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" public static final String COMMAND_WORD \u003d \"create\";","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a client. \"","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" + \"Optional Fields: \"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_PROFESSION + \"PROFESSION \"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_INCOME + \"INCOME \"","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_DETAILS + \"DETAILS\\n\"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TELEGRAM + \"meowies \"","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_PROFESSION + \"student \"","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_INCOME + \"1000 \"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_DETAILS + \"Likes to play games \";","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client created: %1$s\";","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" * Creates an CreateCommand to add the specified {@code Person}","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"KamiliArsyad"},"content":" public CreateCommand(Person person) {","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"KamiliArsyad"},"content":" if (!(other instanceof CreateCommand)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand otherCreateCommand \u003d (CreateCommand) other;","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"KamiliArsyad"},"content":" return toAdd.equals(otherCreateCommand.toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":23,"-":74}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":" Lead updatedLead \u003d editPersonDescriptor.getLead().orElse(personToEdit.getLead());","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"dickongwd"},"content":" person.setLead(updatedLead);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"dickongwd"},"content":" setLead(toCopy.lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"dickongwd"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"dickongwd"},"content":" public void setLead(Lead lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"dickongwd"},"content":" public Optional\u003cLead\u003e getLead() {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"dickongwd"},"content":" return Optional.ofNullable(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":234,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"-":240,"dickongwd":17}},{"path":"src/main/java/seedu/address/logic/commands/InteractionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OUTCOME;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.List;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":" * Represents a command that creates an interaction with the client.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommand extends Command {","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":" public static final String COMMAND_WORD \u003d \"interaction\";","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates an interaction with the client \"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" + \"specified by clientID and a note and a outcome.\\n\"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" + \"[\" + PREFIX_OUTCOME + \"OUTCOME] \"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" + \"[\" + \"NOTE] \"","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" + PREFIX_OUTCOME + \"INTERESTED \"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" + \"I am interested in this product\";","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_INTERACTION_SUCCESS \u003d \"Created client interaction\";","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_NOT_ADDED \u003d \"At least one field (outcome or note) must be provided.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" // public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"This command is not implemented yet\";","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" private final Index index;","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" private final Interaction interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" * Creates an InteractionCommand to add the specified {@code Interaction}","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" public InteractionCommand(Index index, Interaction interaction) {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" this.interaction \u003d interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" // throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" Set\u003cInteraction\u003e editInteractions \u003d personToEdit.getInteractions();","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" editInteractions.add(interaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" personToEdit.getAddress(), personToEdit.getTags(), personToEdit.getTelegram(),","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" personToEdit.getProfession(), personToEdit.getIncome(), personToEdit.getDetails(),","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" personToEdit.getLead());","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" editedPerson.addInteractions(editInteractions);","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" return new CommandResult(String.format(MESSAGE_INTERACTION_SUCCESS, editedPerson));","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" if (!(other instanceof InteractionCommand)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand e \u003d (InteractionCommand) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"MagnificentCreature"},"content":" return index.equals(e.index)","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"MagnificentCreature"},"content":" \u0026\u0026 interaction.equals(e.interaction);","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":86,"dickongwd":2}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" * View the detailed profile of a client.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" public static final String MESSAGE_USAGE \u003d \"View the profile of the client identified \"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" public static final String MESSAGE_VIEW_CLIENT_SUCCESS \u003d \"Viewing Client Profile: %1$s\";","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" private final Index index;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" * @param index of the person in the filtered person list to view","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" public ViewCommand(Index index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" Person personToView \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" model.getSelectedPerson().setValue(personToView);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_CLIENT_SUCCESS, Messages.format(personToView)));","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" return index.equals(otherViewCommand.index);","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" public String toString() {","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zhyuhan"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"zhyuhan"},"content":" .toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":74}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.InteractionCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"KamiliArsyad"},"content":" case CreateCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"KamiliArsyad"},"content":" return new CreateCommandParser().parse(arguments);","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" case InteractionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" return new InteractionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":3,"MagnificentCreature":4,"zhyuhan":3,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_PROFESSION \u003d new Prefix(\"pf/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_INCOME \u003d new Prefix(\"i/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" public static final Prefix PREFIX_OUTCOME \u003d new Prefix(\"o/\");","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":" public static final Prefix PREFIX_LEAD \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"KamiliArsyad":4,"MagnificentCreature":1,"-":14,"dickongwd":1}},{"path":"src/main/java/seedu/address/logic/parser/CreateCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LEAD;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PROFESSION;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Details;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandParser implements Parser\u003cCreateCommand\u003e {","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" public CreateCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":" PREFIX_TELEGRAM, PREFIX_PROFESSION, PREFIX_INCOME, PREFIX_DETAILS, PREFIX_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"KamiliArsyad"},"content":" // OPTIONAL FIELDS","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"KamiliArsyad"},"content":" TelegramHandle telegram \u003d argMultimap.getValue(PREFIX_TELEGRAM).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"KamiliArsyad"},"content":" Profession profession \u003d argMultimap.getValue(PREFIX_PROFESSION).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseProfession(argMultimap.getValue(PREFIX_PROFESSION).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"KamiliArsyad"},"content":" Income income \u003d argMultimap.getValue(PREFIX_INCOME).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" Details details \u003d argMultimap.getValue(PREFIX_DETAILS).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseDetails(argMultimap.getValue(PREFIX_DETAILS).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"dickongwd"},"content":" Lead lead \u003d argMultimap.getValue(PREFIX_LEAD).isPresent()","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"dickongwd"},"content":" ? ParserUtil.parseLead(argMultimap.getValue(PREFIX_LEAD).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"dickongwd"},"content":" : null;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, telegram, profession, income, details, lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"KamiliArsyad"},"content":" return new CreateCommand(person);","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"KamiliArsyad":29,"-":54,"dickongwd":7}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LEAD;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" if (argMultimap.getValue(PREFIX_LEAD).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" editPersonDescriptor.setLead(ParserUtil.parseLead(argMultimap.getValue(PREFIX_LEAD).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":83,"dickongwd":6}},{"path":"src/main/java/seedu/address/logic/parser/InteractionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OUTCOME;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.InteractionCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":" * Parses input arguments and creates a new InteractionCommand object.","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommandParser implements Parser\u003cCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":" * Parses the given {@code String} of arguments in the context of the InteractionCommand","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":" * and returns an InteractionCommand object for execution.","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" public Command parse(String args) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_OUTCOME);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" Index index;","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" try {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble().split(\"\\\\s+\")[0]);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_OUTCOME);","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" Outcome outcome \u003d Outcome.UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":" String note \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" if (argMultimap.getValue(PREFIX_OUTCOME).isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" String outcomeString \u003d argMultimap.getValue(PREFIX_OUTCOME).get().split(\"\\\\s+\")[0];","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" outcome \u003d ParserUtil.parseOutcome(outcomeString);","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" String[] trimmedArgsParts \u003d trimmedArgs.split(\"\\\\s+\", 3);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" //This is to check if there is a note","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" if (trimmedArgsParts.length \u003e 2) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" note \u003d trimmedArgsParts[3];","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" } else {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":" String[] trimmedArgsParts \u003d trimmedArgs.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" if (trimmedArgsParts.length \u003c 3) {","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" note \u003d trimmedArgsParts[1];","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" return new InteractionCommand(index, new Interaction(note, outcome));","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":64}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Details;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"KamiliArsyad"},"content":" // NOW FOR THE OPTIONAL FIELDS","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":122,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String telegram} into a {@code TelegramHandle}.","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":126,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":127,"author":{"gitId":"KamiliArsyad"},"content":" public static TelegramHandle parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":128,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":130,"author":{"gitId":"KamiliArsyad"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegram)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"KamiliArsyad"},"content":" return new TelegramHandle(trimmedTelegram);","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String profession} into a {@code Profession}.","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":140,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code profession} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"KamiliArsyad"},"content":" public static Profession parseProfession(String profession) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(profession);","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedProfession \u003d profession.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"KamiliArsyad"},"content":" if (!Profession.isValidProfession(trimmedProfession)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Profession.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":148,"author":{"gitId":"KamiliArsyad"},"content":" return new Profession(trimmedProfession);","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String income} into a {@code Income}.","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":155,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code income} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":157,"author":{"gitId":"KamiliArsyad"},"content":" public static Income parseIncome(String income) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":158,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(income);","lastModifiedDate":"2023-10-08"},{"lineNumber":159,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedIncome \u003d income.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":160,"author":{"gitId":"KamiliArsyad"},"content":" if (!Income.isValidIncome(trimmedIncome)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"KamiliArsyad"},"content":" Double incomeDouble \u003d Double.parseDouble(trimmedIncome);","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":166,"author":{"gitId":"KamiliArsyad"},"content":" return new Income(incomeDouble);","lastModifiedDate":"2023-10-08"},{"lineNumber":167,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":168,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":169,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":170,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String Details} into a {@code Details}.","lastModifiedDate":"2023-10-08"},{"lineNumber":171,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":172,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":173,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code details} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":174,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":175,"author":{"gitId":"KamiliArsyad"},"content":" public static Details parseDetails(String details) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(details);","lastModifiedDate":"2023-10-08"},{"lineNumber":177,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedDetails \u003d details.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":178,"author":{"gitId":"KamiliArsyad"},"content":" if (!Details.isValidDetails(trimmedDetails)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":179,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Details.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":180,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":181,"author":{"gitId":"KamiliArsyad"},"content":" return new Details(trimmedDetails);","lastModifiedDate":"2023-10-08"},{"lineNumber":182,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":183,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":184,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":185,"author":{"gitId":"MagnificentCreature"},"content":" * Parses a {@code String outcome} into a {@code Outcome}.","lastModifiedDate":"2023-10-11"},{"lineNumber":186,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":187,"author":{"gitId":"MagnificentCreature"},"content":" * @throws ParseException if the given {@code outcome} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":188,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":189,"author":{"gitId":"MagnificentCreature"},"content":" public static Outcome parseOutcome(String outcome) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":190,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(outcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":191,"author":{"gitId":"MagnificentCreature"},"content":" String trimmedOutcome \u003d outcome.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"MagnificentCreature"},"content":" if (!Outcome.isValidOutcome(trimmedOutcome)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":193,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(Outcome.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":194,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":195,"author":{"gitId":"MagnificentCreature"},"content":" return Outcome.valueOf(trimmedOutcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":196,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":197,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":209,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"dickongwd"},"content":" * Parses {@code String lead} into a {@code Lead}.","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"dickongwd"},"content":" public static Lead parseLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"dickongwd"},"content":" requireNonNull(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"dickongwd"},"content":" if (!Lead.isValidLead(lead)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"dickongwd"},"content":" return null;","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"dickongwd"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"dickongwd"},"content":" return new Lead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"KamiliArsyad":69,"MagnificentCreature":15,"-":125,"dickongwd":12}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" return new ViewCommand(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":27}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"zhyuhan"},"content":" * Returns the currently selected person","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"zhyuhan"},"content":" SimpleObjectProperty\u003cPerson\u003e getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"zhyuhan":6,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"zhyuhan"},"content":" return selectedPerson;","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"zhyuhan":7,"-":148}},{"path":"src/main/java/seedu/address/model/lead/Lead.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dickongwd"},"content":"package seedu.address.model.lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"dickongwd"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":" * Represents the potential of a client.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"public class Lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Lead should only take values hot|warm|cold\";","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":" private final LeadType leadType;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":" * Returns a lead given a string. Checks if the string is a valid lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"dickongwd"},"content":" * @param lead the string representation for the lead.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":" public Lead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"dickongwd"},"content":" checkArgument(isValidLead(lead.toUpperCase()), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":" this.leadType \u003d Enum.valueOf(LeadType.class, lead.toUpperCase());","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"dickongwd"},"content":" public Lead(LeadType lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"dickongwd"},"content":" this.leadType \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":" * Determines whether a given string is a valid lead.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":" * A valid lead is either \"hot\", \"warm\" or \"cold\".","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" * @param lead the string to check","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"dickongwd"},"content":" * @return true if the string is a valid lead, false otherwise","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" public static boolean isValidLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":" return lead.equalsIgnoreCase(\"HOT\")","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":" || lead.equalsIgnoreCase(\"WARM\")","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":" || lead.equalsIgnoreCase(\"COLD\");","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"dickongwd"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" return leadType.name();","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":" if (!(other instanceof Lead)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"dickongwd"},"content":" Lead otherLead \u003d (Lead) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":" return leadType.equals(otherLead.leadType);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"dickongwd"},"content":" return leadType.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"dickongwd":63}},{"path":"src/main/java/seedu/address/model/lead/LeadType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dickongwd"},"content":"package seedu.address.model.lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"dickongwd"},"content":" * Represents the types of leads to tag a client.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"public enum LeadType {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":" HOT,","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":" WARM,","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":" COLD,","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"dickongwd":10}},{"path":"src/main/java/seedu/address/model/person/Details.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s details in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Details {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Details should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Details}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param details A valid details.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public Details(String details) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d details;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid details.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidDetails(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":34}},{"path":"src/main/java/seedu/address/model/person/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s income in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Income {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Income should only contain numbers \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":" public final Number value;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Income}.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" * @param income A valid income.","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" public Income(Number income) {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d income;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid income.","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidIncome(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" Double.parseDouble(test);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" return value.toString();","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" || (other instanceof Income // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" \u0026\u0026 value.equals(((Income) other).value)); // state check","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":50}},{"path":"src/main/java/seedu/address/model/person/Interaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":" * Represents an interaction with the client in the addressbook.","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"public class Interaction {","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":" * Represents the outcome of the interaction.","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":" public static enum Outcome {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":" INTERESTED,","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":" NOT_INTERESTED,","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":" FOLLOWUP_REQUIRED,","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":" UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Outcome should be one of the following: \"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" + \"INTERESTED, NOT_INTERESTED, FOLLOWUP_REQUIRED, UNKNOWN \"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" * Returns true if a given string is a valid outcome.","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" public static boolean isValidOutcome(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" return test.matches(\"INTERESTED|NOT_INTERESTED|FOLLOWUP_REQUIRED|UNKNOWN\");","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" private final String interactionNote;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":" private final Outcome outcome;","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" * Constructs a {@code Interaction} with a default LeadStatus of UNKNOWN.","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactionNote A valid Interaction note.","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" * @param outcome A valid outcome.","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" public Interaction(String interactionNote) {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" this.interactionNote \u003d interactionNote;","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" this.outcome \u003d Outcome.UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":" * Constructs a {@code Interaction}.","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactionNote A valid Interaction note.","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" * @param outcome A valid LeadStatus.","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" public Interaction(String interactionNote, Outcome outcome) {","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" this.interactionNote \u003d interactionNote;","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" this.outcome \u003d outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":" public String getInteraction() {","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" return this.interactionNote;","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" public String getOutcome() {","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" return this.outcome.toString();","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":" return interactionNote + \"\\nThe outcome of this interaction is: \" + outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":" if (!(other instanceof Interaction)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":" Interaction otherInteraction \u003d (Interaction) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":" return otherInteraction.interactionNote.equals(this.interactionNote)","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" \u0026\u0026 otherInteraction.outcome.equals(this.outcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":81}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":" // Optional fields","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" private final TelegramHandle telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" private final Profession profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" private final Income income;","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" private final Details details;","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" private final Set\u003cInteraction\u003e interactions \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d null;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" this.telegram \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":" this.profession \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" this.income \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"KamiliArsyad"},"content":" this.details \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"KamiliArsyad"},"content":" * Same constructor but with optional fields.","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"KamiliArsyad"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" TelegramHandle telegram, Profession profession, Income income, Details details, Lead lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"KamiliArsyad"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"KamiliArsyad"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"KamiliArsyad"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"KamiliArsyad"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"KamiliArsyad"},"content":" this.profession \u003d profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" this.income \u003d income;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" this.details \u003d details;","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":90,"author":{"gitId":"dickongwd"},"content":" public Lead getLead() {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"dickongwd"},"content":" return lead;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"KamiliArsyad"},"content":" public TelegramHandle getTelegram() {","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"KamiliArsyad"},"content":" return telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"KamiliArsyad"},"content":" public Profession getProfession() {","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"KamiliArsyad"},"content":" return profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"KamiliArsyad"},"content":" public Income getIncome() {","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"KamiliArsyad"},"content":" return income;","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":105,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"KamiliArsyad"},"content":" public Details getDetails() {","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"KamiliArsyad"},"content":" return details;","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"MagnificentCreature"},"content":" public Set\u003cInteraction\u003e getInteractions() {","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"MagnificentCreature"},"content":" return interactions;","lastModifiedDate":"2023-10-11"},{"lineNumber":112,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"MagnificentCreature"},"content":" * Adds an interaction to the person.","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactions the set of interaction to be added","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"MagnificentCreature"},"content":" * @return the updated set of interactions","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"MagnificentCreature"},"content":" public Set\u003cInteraction\u003e addInteractions(Set\u003cInteraction\u003e interactions) {","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zhyuhan"},"content":" this.interactions.addAll(interactions);","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"zhyuhan"},"content":" return this.interactions;","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"dickongwd"},"content":" * Changes the lead potential of the client.","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"dickongwd"},"content":" public void setLead(Lead newLead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d newLead;","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":44,"MagnificentCreature":13,"zhyuhan":2,"-":117,"dickongwd":16}},{"path":"src/main/java/seedu/address/model/person/Profession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s profession in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Profession {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Professions should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Profession}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param profession A valid profession.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public Profession(String profession) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid profession.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidProfession(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":34}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class TelegramHandle {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram handles should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank. It also should start with \u0027@\u0027\";","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"@[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code TelegramHandle}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param telegramHandle A valid telegram handle.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public TelegramHandle(String telegramHandle) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d telegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":" || (other instanceof TelegramHandle // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":" \u0026\u0026 value.equals(((TelegramHandle) other).value)); // state check","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":46}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" private final String lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"lead\") String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" if (source.getLead() \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" lead \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"dickongwd"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"dickongwd"},"content":" lead \u003d source.getLead().toString().toLowerCase();","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"dickongwd"},"content":" if (lead !\u003d null \u0026\u0026 !lead.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"dickongwd"},"content":" person.setLead(new Lead(lead));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":108,"dickongwd":14}},{"path":"src/main/java/seedu/address/ui/ClientProfilePanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" * A UI component that displays the profile of a {@code Client}.","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":"public class ClientProfilePanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"ClientProfilePanel.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" public final Person client;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" private Label name;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" private Text phone;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" private Text telegram;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" private Text address;","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" private Text email;","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" private Text profession;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" private Text income;","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" private FlowPane tags;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" private ListView\u003cInteraction\u003e interactionsList;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code ClientProfilePanel} with the given {@code Person}.","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" public ClientProfilePanel(Person client) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" this.client \u003d client;","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" address.setText(client.getAddress().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" client.getTags().stream()","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" // optional fields","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" TelegramHandle t \u003d client.getTelegram();","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" telegram.setText(t.value);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":" Profession p \u003d client.getProfession();","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" if (p !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" profession.setText(p.value);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"zhyuhan"},"content":" Income i \u003d client.getIncome();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"zhyuhan"},"content":" if (i !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"zhyuhan"},"content":" income.setText(\"$\" + i.value.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"zhyuhan"},"content":" // interactions","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"zhyuhan"},"content":" ObservableList\u003cInteraction\u003e interactions \u003d FXCollections.observableArrayList(client.getInteractions());","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"zhyuhan"},"content":" interactionsList.setItems(interactions);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"zhyuhan"},"content":" interactionsList.setCellFactory(listView -\u003e new InteractionListViewCell());","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"zhyuhan"},"content":" static class InteractionListViewCell extends ListCell\u003cInteraction\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"zhyuhan"},"content":" protected void updateItem(Interaction interaction, boolean empty) {","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"zhyuhan"},"content":" super.updateItem(interaction, empty);","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"zhyuhan"},"content":" if (empty || interaction \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"zhyuhan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"zhyuhan"},"content":" setText(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"zhyuhan"},"content":" } else {","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"zhyuhan"},"content":" setGraphic(new InteractionEntry(interaction).getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":96}},{"path":"src/main/java/seedu/address/ui/ContentDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" * The area for displaying content.","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"public class ContentDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"ContentDisplay.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ContentDisplay.class);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" private ClientProfilePanel clientProfilePanel;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" private StackPane contentDisplayPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" private VBox clientProfilePanelPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code ContentDisplay} with the given {@code personList} and {@code selectedPerson}.","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" public ContentDisplay(ObservableList\u003cPerson\u003e personList, SimpleObjectProperty\u003cPerson\u003e selectedPerson) {","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" personListView.setItems(personList);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" selectedPerson.setValue(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" });","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" selectedPerson.addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanel \u003d new ClientProfilePanel(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanelPlaceholder.getChildren().clear();","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanelPlaceholder.getChildren().add(clientProfilePanel.getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" // set focus within the list if the change is from a `view` command","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" personListView.getSelectionModel().select(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" });","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" static class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" setText(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" } else {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":70}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-f11-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MagnificentCreature":1,"-":101}},{"path":"src/main/java/seedu/address/ui/InteractionEntry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" * A UI component that displays information of a {@code Client} {@code Interaction}.","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"public class InteractionEntry extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"InteractionEntry.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" public final Interaction interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" private Label note;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" private Label outcome;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code InteractionEntry} with the given {@code Interaction}.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" public InteractionEntry(Interaction interaction) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" this.interaction \u003d interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" note.setText(interaction.getInteraction());","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" outcome.setText(interaction.getOutcome());","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"MagnificentCreature":2,"zhyuhan":29}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" private ContentDisplay contentDisplay;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" private StackPane contentDisplayPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"zhyuhan"},"content":" contentDisplay \u003d new ContentDisplay(logic.getFilteredPersonList(), logic.getSelectedPerson());","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"zhyuhan"},"content":" contentDisplayPlaceholder.getChildren().add(contentDisplay.getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"zhyuhan":4,"-":188}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":" private FlowPane lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":" if (person.getLead() !\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":" Label leadLabel \u003d new Label(person.getLead().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" leadLabel.setId(person.getLead().toString().toLowerCase() + \"-lead\");","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":" lead.getChildren().add(leadLabel);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":56,"dickongwd":7}},{"path":"src/main/resources/view/ClientProfilePanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" minWidth\u003d\"350\" prefWidth\u003d\"500\" stylesheets\u003d\"@css/clientProfile.css\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"15\" right\u003d\"15\" bottom\u003d\"15\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel id\u003d\"name\" fx:id\u003d\"name\" text\u003d\"\\$name\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"16\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox id\u003d\"contact\" spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Phone\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"phone\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Telegram\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"telegram\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Address\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"address\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Email\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"email\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Profession\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"profession\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Income\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"income\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Past Interactions\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" \u003cListView fx:id\u003d\"interactionsList\" styleClass\u003d\"interactions\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":59}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" stylesheets\u003d\"@css/commandBox.css\"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" maxHeight\u003d\"Infinity\" promptText\u003d\"Enter Command Here...\"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" styleClass\u003d\"command\" HBox.hgrow\u003d\"ALWAYS\" \u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":" \u003cInsets left\u003d\"40.0\" right\u003d\"40.0\" top\u003d\"40.0\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":"\u003c/TextField\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":12,"-":4}},{"path":"src/main/resources/view/ContentDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"\u003cHBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox styleClass\u003d\"pane\" minWidth\u003d\"340\" prefWidth\u003d\"340\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox fx:id\u003d\"clientProfilePanelPlaceholder\" styleClass\u003d\"pane\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":19}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"lilozz2"},"content":".pane {","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":252,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":275,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":280,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":285,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":297,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":311,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":324,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"dickongwd"},"content":"#hot-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #ee4b2b;","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"dickongwd"},"content":"#warm-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #e97451;","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":341,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":342,"author":{"gitId":"dickongwd"},"content":"#cold-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #85c1e9;","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lilozz2":1,"-":322,"dickongwd":26}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"lilozz2":2,"-":43}},{"path":"src/main/resources/view/InteractionEntry.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel fx:id\u003d\"outcome\" styleClass\u003d\"outcome\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel fx:id\u003d\"note\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":14}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" stylesheets\u003d\"@css/menuBar.css\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"lilozz2"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane\"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"contentDisplayPlaceholder\" styleClass\u003d\"pane\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"lilozz2":3,"zhyuhan":1,"-":50}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.image.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17.0.2-ea\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":" \u003cHBox alignment\u003d\"BASELINE_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":" \u003cFlowPane fx:id\u003d\"lead\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"lilozz2"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"8.0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lilozz2"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lilozz2"},"content":" \u003cImageView fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lilozz2"},"content":" \u003cImage url\u003d\"@../images/phone.png\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lilozz2"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lilozz2"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"lilozz2"},"content":" \u003cInsets left\u003d\"-5.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox.margin\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"lilozz2"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lilozz2"},"content":" \u003cInsets right\u003d\"5.0\" top\u003d\"6.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lilozz2"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"8.0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lilozz2"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lilozz2"},"content":" \u003cImageView fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lilozz2"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"lilozz2"},"content":" \u003cImage url\u003d\"@../images/email.png\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"lilozz2"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lilozz2"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"lilozz2"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox.margin\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"lilozz2"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"6.0\" left\u003d\"-3.0\" right\u003d\"5.0\" top\u003d\"6.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"lilozz2"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"lilozz2"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"lilozz2"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"lilozz2":44,"-":21,"dickongwd":4}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cStackPane xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" wrapText\u003d\"true\" text\u003d\"Command Output Window\"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" styleClass\u003d\"result-window\" stylesheets\u003d\"@css/resultWindow.css\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"40.0\" right\u003d\"40.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":" \u003c/TextArea\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"lilozz2":9,"-":6}},{"path":"src/main/resources/view/css/clientProfile.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":".label {","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: #aaaaaa;","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"Text {","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":" -fx-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"#name {","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":".interactions {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":".interactions .outcome {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" -fx-background-color: #ff8888;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":25}},{"path":"src/main/resources/view/css/commandBox.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":"/*@@AY2122S2-CS2103T-T09-4 {lilozz2}-reused","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":"Past year senior project*/","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":".command {","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-font-family: monospace;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #F1F2F3;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":" -fx-background-radius: 4;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 15 15 15 45;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" -fx-background-image: url(\u0027../../images/terminal.png\u0027);","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" -fx-background-repeat: no-repeat;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" -fx-background-position: 15px center;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-size: 20px;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":".command:focused {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":" -fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.2), 3.5, 0.4, 0, 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lilozz2"},"content":" -fx-prompt-text-fill: derive(-fx-control-inner-background,-30%);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":19}},{"path":"src/main/resources/view/css/menuBar.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":"/*@@AY2122S2-CS2103T-T09-4 {lilozz2}-reused","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":"Past year senior project*/","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":".menu .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-font-size: 15;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":".menu:hover,","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":".menu:showing {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #479ECF;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":".context-menu {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 0;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"lilozz2"},"content":".menu-item {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":".menu-item .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"lilozz2"},"content":".menu-item:focused .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lilozz2"},"content":".menu-item:focused {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" -fx-background: -fx-accent;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #E0E0E0;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":37}},{"path":"src/main/resources/view/css/resultWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":".result-window {","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":" -fx-font-family: monospace;","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":" -fx-min-height: 100;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":" -fx-pref-height: 100;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 18, 0, 0, 5);","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 10;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":" -fx-font-size: 16;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":".text-area {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":".text-area .content {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":17}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"KamiliArsyad"},"content":" String createCommand \u003d CreateCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandFailure(createCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"KamiliArsyad":3,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/CreateCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandIntegrationTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandSuccess(new CreateCommand(validPerson), model,","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandFailure(new CreateCommand(personInList), model,","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"KamiliArsyad":5,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/CreateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateCommand(null));","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" CommandResult commandResult \u003d new CreateCommand(validPerson).execute(modelStub);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createCommand \u003d new CreateCommand(validPerson);","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"KamiliArsyad"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e createCommand.execute(modelStub));","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createAliceCommand \u003d new CreateCommand(alice);","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createBobCommand \u003d new CreateCommand(bob);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":" assertTrue(createAliceCommand.equals(createAliceCommand));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand addAliceCommandCopy \u003d new CreateCommand(alice);","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" assertTrue(createAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(1));","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(createBobCommand));","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createCommand \u003d new CreateCommand(ALICE);","lastModifiedDate":"2023-10-08"},{"lineNumber":85,"author":{"gitId":"KamiliArsyad"},"content":" String expected \u003d CreateCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2023-10-08"},{"lineNumber":86,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(expected, createCommand.toString());","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"zhyuhan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"KamiliArsyad":18,"zhyuhan":6,"-":187}},{"path":"src/test/java/seedu/address/logic/commands/InteractionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" * Contains integration tests (interaction with the Model) and unit tests for InteractionCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":" private static final String INTERACTION_NOTE_STUB \u003d \"Test note\";","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" private static final Outcome INTERACTION_OUTCOME_STUB \u003d Outcome.INTERESTED;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" Person personToAddInteractions \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" Set\u003cInteraction\u003e interactions \u003d personToAddInteractions.getInteractions();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" interactions.add(interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" Person editedPerson \u003d new PersonBuilder(personToAddInteractions).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":" editedPerson.addInteractions(interactions);","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand interactionCommand \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" String expectedMessage \u003d String.format(InteractionCommand.MESSAGE_INTERACTION_SUCCESS, personToAddInteractions);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" expectedModel.setPerson(personToAddInteractions, editedPerson);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" assertCommandSuccess(interactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand interactionCommand \u003d new InteractionCommand(outOfBoundIndex, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":" assertCommandFailure(interactionCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":" final InteractionCommand standardCommand \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand commandWithSameValues \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"MagnificentCreature"},"content":" // different index -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new InteractionCommand(Index.fromOneBased(2), interactionToAdd)));","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"MagnificentCreature"},"content":" // different interaction -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new InteractionCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"MagnificentCreature"},"content":" new Interaction(\"Different note\", Outcome.UNKNOWN))));","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"MagnificentCreature":89}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand command \u003d (CreateCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(new CreateCommand(person), command);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" ViewCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" assertEquals(new ViewCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"KamiliArsyad":3,"zhyuhan":6,"-":100}},{"path":"src/test/java/seedu/address/logic/parser/CreateCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandParserTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" private CreateCommandParser parser \u003d new CreateCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new CreateCommand(expectedPerson));","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" new CreateCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"KamiliArsyad"},"content":" new CreateCommand(expectedPerson));","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"KamiliArsyad"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"KamiliArsyad"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"KamiliArsyad":8,"-":188}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":" private static final String INVALID_LEAD \u003d \"medium\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":" private static final String VALID_LEAD \u003d BENSON.getLead().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":100,"dickongwd":15}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":" public static final String DEFAULT_LEAD \u003d \"cold\";","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" lead \u003d new Lead(DEFAULT_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" lead \u003d personToCopy.getLead();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"dickongwd"},"content":" * Sets the {@code Lead} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"dickongwd"},"content":" public PersonBuilder withLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d new Lead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":" * Creates the built {@code Person} after building.","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"dickongwd"},"content":" * @return the built {@code Person}","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":111,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(name, phone, email, address, tags);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"dickongwd"},"content":" person.setLead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":95,"dickongwd":21}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" return CreateCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"KamiliArsyad":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" .withTags(\"owesMoney\", \"friends\").withLead(\"warm\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"-":75,"dickongwd":1}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Connectify","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F11-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F11-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"## Introduction","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"**Connectify** is a robust client management tool designed to streamline the process of tracking, categorizing, and interacting with clients for salesperson. It enables users to efficiently manage client profiles and interactions through a series of straightforward commands. From creating new profiles to logging interactions and categorizing leads, Connectify provides a comprehensive solution for managing client relationships and ensuring no detail is overlooked.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":"![UiMockup](docs/images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"## Key Features","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"### 1. **Client Profile Management**","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":"- **Add**: Easily create and add new client profiles, including details like profession, contact information, income, and additional notes.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":"- **Delete**: Remove client profiles from the address book swiftly.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":"- **View**: Access and view the full details of a client\u0027s profile.","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":"### 2. **Lead Categorization**","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":"- Categorize your clients as \"Cold\", \"Warm\", or \"Hot\" leads to prioritize interactions and follow-ups effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"### 3. **Client Interaction Logging**","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"- Log and keep track of interactions with clients, ensuring every discussion and detail is recorded and easily accessible.","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":"## User-Friendly Commands","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":"Connectify utilizes a command-line interface with intuitive commands that allow users to:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":"- **Create** client profiles with detailed information.","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":"- **Categorize** clients based on lead temperature.","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"- **Delete** client profiles when they are no longer needed.","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":"- **View** detailed client profiles.","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":"- **Log** interactions with clients to keep track of discussions and plans.","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":"## Error Handling","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":"With clear expected outputs for both successful commands and failure notices, users are guided through error resolution, ensuring smooth operation and minimal disruption to workflow.","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":"## Getting Started","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":"To begin using Connectify, refer to the detailed command guides and examples provided in the user guide. Each command is designed with simplicity in mind, ensuring users can quickly adapt and integrate Connectify into their client management processes.","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":"## Conclusion","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":"Connectify offers a seamless approach to client management, ensuring that every interaction, detail, and categorization is just a simple command away. With a focus on ease of use and efficient management, it stands as a valuable tool for any professional seeking to enhance their client relationship management.","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":"For detailed command usage, examples, and acceptable values, please refer to the comprehensive user guide.","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"KamiliArsyad":43,"zhyuhan":1,"-":3,"dickongwd":4}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" \u003cmodule name\u003d\"SuppressWithPlainTextCommentFilter\"\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"// CHECKSTYLE\\.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"// CHECKSTYLE\\.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" \u003c/module\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":161,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":162,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":239,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":247,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":249,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":250,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":251,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":272,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":282,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":321,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":329,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22"},{"lineNumber":335,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":348,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":356,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":359,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":368,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":382,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":385,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":387,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":390,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":391,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":392,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":410,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":420,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":422,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":429,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":432,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"lineNumber":434,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":436,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":437,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":439,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":440,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MagnificentCreature":6,"-":434}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"You can reach us at the email `connectify[at]comp.nus.edu.sg`","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"### Kamili Arsyad","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/kamiliarsyad.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"dickongwd"},"content":"[[github](https://github.com/KamiliArsyad)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/kamiliarsyad.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"dickongwd"},"content":"### Dick Ong","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/dickongwd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/dickongwd)]","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/dickongwd.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":"### Jair Goh","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/lilozz2.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/lilozz2)]","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/lilozz2.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":"### Sean Wang","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/magnificentcreature.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/magnificentcreature)]","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/magnificentcreature.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":"### Zhang Yu Han","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"\u003cimg src\u003d\"images/zhyuhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":"[[github](http://github.com/zhyuhan)]","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":"[[portfolio](team/zhyuhan.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":"* Responsibilities: _to be updated_","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":32,"dickongwd":28}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"MagnificentCreature"},"content":"* has a need to track information about business clients","lastModifiedDate":"2023-10-03"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"MagnificentCreature"},"content":"**Value proposition**: manage useful information about a clients faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | record my client’s contact information | conveniently refer to it later |","lastModifiedDate":"2023-10-03"},{"lineNumber":276,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | access the full details of a particular client\u0027s information comprehensively | aid my future interaction with this client |","lastModifiedDate":"2023-10-03"},{"lineNumber":277,"author":{"gitId":"MagnificentCreature"},"content":"| `* * *` | user | client profiles | remove entries that I no longer need |","lastModifiedDate":"2023-10-03"},{"lineNumber":278,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | add notes of my meetings with my clients | track details for future interaction with client |","lastModifiedDate":"2023-10-03"},{"lineNumber":279,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | log the outcomes of my client interactions (e.g., interested, not interested, follow-up required) | track progress of client interactions |","lastModifiedDate":"2023-10-03"},{"lineNumber":280,"author":{"gitId":"MagnificentCreature"},"content":"| `* *` | user | mark a client as a \"hot lead,\" \"warm lead,\" or \"cold lead | gauge the sales potential of the client |","lastModifiedDate":"2023-10-03"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"MagnificentCreature"},"content":"(For all use cases below, the **System** is the `Connectify` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Delete a client**","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":293,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":294,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests to delete a specific client in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":295,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify deletes the client","lastModifiedDate":"2023-10-03"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Add a client interaction**","lastModifiedDate":"2023-10-03"},{"lineNumber":313,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":314,"author":{"gitId":"MagnificentCreature"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":315,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":316,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":317,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":318,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests create a client interaction","lastModifiedDate":"2023-10-03"},{"lineNumber":319,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify adds the interaction to the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":320,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":321,"author":{"gitId":"MagnificentCreature"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":322,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"MagnificentCreature"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"MagnificentCreature"},"content":"* 3a. The user does not exist.","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"MagnificentCreature"},"content":" * 3a1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":328,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":329,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":330,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":331,"author":{"gitId":"MagnificentCreature"},"content":"* 3b. The client interaction is empty","lastModifiedDate":"2023-10-03"},{"lineNumber":332,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":333,"author":{"gitId":"MagnificentCreature"},"content":" * 3b1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":334,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":335,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":336,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":337,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":338,"author":{"gitId":"MagnificentCreature"},"content":"**Use case: Mark a client as “Cold”, “Warm” or “Hot” Leads**","lastModifiedDate":"2023-10-03"},{"lineNumber":339,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":340,"author":{"gitId":"MagnificentCreature"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":341,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":342,"author":{"gitId":"MagnificentCreature"},"content":"1. User requests to list clients","lastModifiedDate":"2023-10-03"},{"lineNumber":343,"author":{"gitId":"MagnificentCreature"},"content":"2. Connectify shows a list of clients","lastModifiedDate":"2023-10-03"},{"lineNumber":344,"author":{"gitId":"MagnificentCreature"},"content":"3. User requests to mark a client as “Cold”, “Warm” or “Hot” Lead","lastModifiedDate":"2023-10-03"},{"lineNumber":345,"author":{"gitId":"MagnificentCreature"},"content":"4. Connectify displays the updated client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":346,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":347,"author":{"gitId":"MagnificentCreature"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":348,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":349,"author":{"gitId":"MagnificentCreature"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":350,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":351,"author":{"gitId":"MagnificentCreature"},"content":"* 3a. The user does not exist.","lastModifiedDate":"2023-10-03"},{"lineNumber":352,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":353,"author":{"gitId":"MagnificentCreature"},"content":" * 3a1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":354,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":355,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":356,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":357,"author":{"gitId":"MagnificentCreature"},"content":"* 3b. The lead category is key\u0027ed in wrong or empty","lastModifiedDate":"2023-10-03"},{"lineNumber":358,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":359,"author":{"gitId":"MagnificentCreature"},"content":" * 3b1. Connectify shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":360,"author":{"gitId":"MagnificentCreature"},"content":" ","lastModifiedDate":"2023-10-03"},{"lineNumber":361,"author":{"gitId":"MagnificentCreature"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":362,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":363,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2023-10-03"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"lilozz2"},"content":"4. The system should work in both 32-bit and 64-bit environments.","lastModifiedDate":"2023-10-03"},{"lineNumber":371,"author":{"gitId":"lilozz2"},"content":"5. Response time for fetching a contact\u0027s details should not exceed 1.5 seconds. ","lastModifiedDate":"2023-10-03"},{"lineNumber":372,"author":{"gitId":"lilozz2"},"content":"6. Search operations should return results within 2 seconds for queries against the full dataset.","lastModifiedDate":"2023-10-03"},{"lineNumber":373,"author":{"gitId":"lilozz2"},"content":"7. The system must be backward compatible with data generated from previous versions of the software.","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"MagnificentCreature"},"content":"* **Hot/Warm/Cold Lead**: A hot lead is a potential client who is ready to buy. A warm lead is a potential client who is interested in buying. A cold lead is a potential client who is not ready to buy.","lastModifiedDate":"2023-10-03"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"MagnificentCreature"},"content":"*{More to be added}*","lastModifiedDate":"2023-10-03"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":382,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"lilozz2":4,"MagnificentCreature":67,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"Connectify is a **desktop app for managing clients, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Connectify can get your client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"![Ui Markup](images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"dickongwd"},"content":"## Quick start [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":"## Features [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"dickongwd"},"content":"### Viewing help [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"dickongwd"},"content":"### Adding a client profile: `create profile` [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"dickongwd"},"content":"Creates a new client profile with various details.","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":"create profile \u003cclient_name\u003e --profession \u003cprofession\u003e --email \u003cemail\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":"--telegram \u003ctelegram_handle\u003e --phone \u003cphone_number\u003e --income \u003cincome\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"dickongwd"},"content":"--details \u003cadditional_details\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":"create profile John Doe --profession Sales --email john@example.com","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":"--telegram @john_doe --phone +1234567890 --income $50,000","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"dickongwd"},"content":"--details \"Birthday: 01/15, Family: Spouse, 2 children\"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":"Acceptable values","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, up to 50 characters, has to be unique","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"dickongwd"},"content":"- \u003cprofession\u003e: Alphanumeric, up to 50 characters","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":"- \u003cemail\u003e: Valid email address format","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":"- \u003ctelegram_handle\u003e: Alphanumeric, up to 50 characters, starting with \u0027@\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":"- \u003cphone_number\u003e: Numeric, valid phone number format","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":"- \u003cincome\u003e: Numeric, representing annual income","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":"- \u003cadditional_details\u003e: Alphanumeric, additional client details","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":"- The new client profile is created and added to the address book","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":"- The GUI should reflect the newly added client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"dickongwd"},"content":"- Invalid email, telegram handle, or phone number format: \"Invalid email/telegram/phone format.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":"- Missing required parameters: \"Missing parameters. Please provide all required details.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":"### Marking a client as Cold, Warm, or Hot Leads [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":"Tag a client as a \"hot lead\", \"warm lead\", or \"cold lead\" to prioritise your interactions.","lastModifiedDate":"2023-10-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":"lead \u003clead_category\u003e \u003cclient_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":65,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":68,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":69,"author":{"gitId":"dickongwd"},"content":"lead hot John Doe","lastModifiedDate":"2023-10-03"},{"lineNumber":70,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":73,"author":{"gitId":"dickongwd"},"content":"- \u003clead_category\u003e: \"hot\", \"warm\" or \"cold\"","lastModifiedDate":"2023-10-03"},{"lineNumber":74,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":77,"author":{"gitId":"dickongwd"},"content":"- The specified client is marked with the chosen lead category","lastModifiedDate":"2023-10-03"},{"lineNumber":78,"author":{"gitId":"dickongwd"},"content":"- The GUI should display the updated lead category for the client","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":81,"author":{"gitId":"dickongwd"},"content":"- Invalid lead category: \"Invalid lead category. Please choose \u0027hot,\u0027 \u0027warm,\u0027 or \u0027cold.\u0027\"","lastModifiedDate":"2023-10-03"},{"lineNumber":82,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"dickongwd"},"content":"### Delete a client profile [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"dickongwd"},"content":"Delete a client\u0027s profile from the address book.","lastModifiedDate":"2023-10-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":89,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":90,"author":{"gitId":"dickongwd"},"content":"delete profile \u003cclient_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":91,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"dickongwd"},"content":"Example","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"dickongwd"},"content":"delete profile John Doe","lastModifiedDate":"2023-10-03"},{"lineNumber":96,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"dickongwd"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-03"},{"lineNumber":99,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":"- The specified client profile is deleted from the address book","lastModifiedDate":"2023-10-03"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":"- The GUI should reflect the removal of the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"dickongwd"},"content":"- Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":"- Missing client name parameter: \"Please enter the client name.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":"### Viewing a client profile [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"dickongwd"},"content":"View the full details of a client profile.","lastModifiedDate":"2023-10-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"zhyuhan"},"content":"view \u003cindex\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"zhyuhan"},"content":"view 1","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":123,"author":{"gitId":"zhyuhan"},"content":"- \u003cindex\u003e: Number, the index of the client to view in the list displayed.","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"dickongwd"},"content":"- The full details of the selected client profile are displayed in the GUI","lastModifiedDate":"2023-10-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":129,"author":{"gitId":"zhyuhan"},"content":"- Invalid index: \"The person index provided is invalid\"","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"dickongwd"},"content":"### Create a client interaction [to be implemented]","lastModifiedDate":"2023-10-03"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"dickongwd"},"content":"Create an interaction that is tagged to a client.","lastModifiedDate":"2023-10-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"dickongwd"},"content":"Format","lastModifiedDate":"2023-10-03"},{"lineNumber":136,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":137,"author":{"gitId":"dickongwd"},"content":"log \u003cclient_name\u003e \u003cinteraction\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":138,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"dickongwd"},"content":"Example ","lastModifiedDate":"2023-10-03"},{"lineNumber":141,"author":{"gitId":"dickongwd"},"content":"```text","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"dickongwd"},"content":"log John Doe “Discussed financial plans”","lastModifiedDate":"2023-10-03"},{"lineNumber":143,"author":{"gitId":"dickongwd"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"dickongwd"},"content":"Acceptable Values","lastModifiedDate":"2023-10-03"},{"lineNumber":146,"author":{"gitId":"dickongwd"},"content":"- \u003cclient_name\u003e: Alphanumeric, the name of an existing client","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"dickongwd"},"content":"- \u003cinteraction\u003e: Alphanumeric, details of interaction with the client","lastModifiedDate":"2023-10-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"dickongwd"},"content":"Expected Output (Success)","lastModifiedDate":"2023-10-03"},{"lineNumber":150,"author":{"gitId":"dickongwd"},"content":"- The client profile is shown","lastModifiedDate":"2023-10-03"},{"lineNumber":151,"author":{"gitId":"dickongwd"},"content":"- The interaction is added to the client profile","lastModifiedDate":"2023-10-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"dickongwd"},"content":"Expected Output (Failure)","lastModifiedDate":"2023-10-03"},{"lineNumber":154,"author":{"gitId":"dickongwd"},"content":"- Client not found: \"Client not found in the address book.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":155,"author":{"gitId":"dickongwd"},"content":"- Missing client name parameter: \"Please enter the client name.\"","lastModifiedDate":"2023-10-03"},{"lineNumber":156,"author":{"gitId":"dickongwd"},"content":"- Missing interaction parameter: “Please enter the client interaction.”","lastModifiedDate":"2023-10-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"dickongwd"},"content":"## FAQ [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"dickongwd"},"content":"## Known issues [coming soon]","lastModifiedDate":"2023-10-03"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"dickongwd"},"content":"## Command summary [coming soon]","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":4,"-":61,"dickongwd":104}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"title: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F11-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F11-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"![UiMockup](images/Ui.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"**Connectify is a desktop application for managing your clients.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"* If you are interested in using Connectify, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":"* If you are interested about developing Connectify, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":12,"dickongwd":6}},{"path":"docs/team/dickongwd.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: dickongwd\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/kamiliarsyad.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: KamiliArsyad\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/lilozz2.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: lilozz2\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/magnificentcreature.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: MagnificentCreature\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"docs/team/zhyuhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"title: zhyuhan\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"### Project: Connectify","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"to be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"zhyuhan":8}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" /** Returns the currently selected person */","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" SimpleObjectProperty\u003cPerson\u003e getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"zhyuhan":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"zhyuhan"},"content":" return model.getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"zhyuhan":6,"-":88}},{"path":"src/main/java/seedu/address/logic/commands/CreateCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PROFESSION;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommand extends Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" public static final String COMMAND_WORD \u003d \"create\";","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a client. \"","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" + \"Optional Fields: \"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_PROFESSION + \"PROFESSION \"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_INCOME + \"INCOME \"","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_DETAILS + \"DETAILS\\n\"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_TELEGRAM + \"meowies \"","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_PROFESSION + \"student \"","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_INCOME + \"1000 \"","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" + PREFIX_DETAILS + \"Likes to play games \";","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client created: %1$s\";","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" * Creates an CreateCommand to add the specified {@code Person}","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"KamiliArsyad"},"content":" public CreateCommand(Person person) {","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"KamiliArsyad"},"content":" if (!(other instanceof CreateCommand)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand otherCreateCommand \u003d (CreateCommand) other;","lastModifiedDate":"2023-10-08"},{"lineNumber":88,"author":{"gitId":"KamiliArsyad"},"content":" return toAdd.equals(otherCreateCommand.toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":23,"-":74}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":" Lead updatedLead \u003d editPersonDescriptor.getLead().orElse(personToEdit.getLead());","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"dickongwd"},"content":" person.setLead(updatedLead);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"dickongwd"},"content":" setLead(toCopy.lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"dickongwd"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"dickongwd"},"content":" public void setLead(Lead lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"dickongwd"},"content":" public Optional\u003cLead\u003e getLead() {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"dickongwd"},"content":" return Optional.ofNullable(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":234,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"-":240,"dickongwd":17}},{"path":"src/main/java/seedu/address/logic/commands/InteractionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OUTCOME;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.List;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":" * Represents a command that creates an interaction with the client.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommand extends Command {","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":" public static final String COMMAND_WORD \u003d \"interaction\";","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates an interaction with the client \"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" + \"specified by clientID and a note and a outcome.\\n\"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" + \"[\" + PREFIX_OUTCOME + \"OUTCOME] \"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" + \"[\" + \"NOTE] \"","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" + PREFIX_OUTCOME + \"INTERESTED \"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" + \"I am interested in this product\";","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_INTERACTION_SUCCESS \u003d \"Created client interaction\";","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_NOT_ADDED \u003d \"At least one field (outcome or note) must be provided.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" // public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"This command is not implemented yet\";","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" private final Index index;","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" private final Interaction interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" * Creates an InteractionCommand to add the specified {@code Interaction}","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" public InteractionCommand(Index index, Interaction interaction) {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" this.interaction \u003d interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" // throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" Set\u003cInteraction\u003e editInteractions \u003d personToEdit.getInteractions();","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" editInteractions.add(interaction);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" personToEdit.getAddress(), personToEdit.getTags(), personToEdit.getTelegram(),","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" personToEdit.getProfession(), personToEdit.getIncome(), personToEdit.getDetails(),","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" personToEdit.getLead());","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" editedPerson.addInteractions(editInteractions);","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" return new CommandResult(String.format(MESSAGE_INTERACTION_SUCCESS, editedPerson));","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" if (!(other instanceof InteractionCommand)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand e \u003d (InteractionCommand) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"MagnificentCreature"},"content":" return index.equals(e.index)","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"MagnificentCreature"},"content":" \u0026\u0026 interaction.equals(e.interaction);","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":86,"dickongwd":2}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" * View the detailed profile of a client.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" public static final String MESSAGE_USAGE \u003d \"View the profile of the client identified \"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" public static final String MESSAGE_VIEW_CLIENT_SUCCESS \u003d \"Viewing Client Profile: %1$s\";","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" private final Index index;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" * @param index of the person in the filtered person list to view","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" public ViewCommand(Index index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" Person personToView \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" model.getSelectedPerson().setValue(personToView);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_CLIENT_SUCCESS, Messages.format(personToView)));","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" return index.equals(otherViewCommand.index);","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" public String toString() {","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zhyuhan"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"zhyuhan"},"content":" .toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":74}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.InteractionCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"KamiliArsyad"},"content":" case CreateCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"KamiliArsyad"},"content":" return new CreateCommandParser().parse(arguments);","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" case InteractionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" return new InteractionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":3,"MagnificentCreature":4,"zhyuhan":3,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_PROFESSION \u003d new Prefix(\"pf/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_INCOME \u003d new Prefix(\"i/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" public static final Prefix PREFIX_OUTCOME \u003d new Prefix(\"o/\");","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":" public static final Prefix PREFIX_LEAD \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"KamiliArsyad":4,"MagnificentCreature":1,"-":14,"dickongwd":1}},{"path":"src/main/java/seedu/address/logic/parser/CreateCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LEAD;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PROFESSION;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Details;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandParser implements Parser\u003cCreateCommand\u003e {","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" public CreateCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":" PREFIX_TELEGRAM, PREFIX_PROFESSION, PREFIX_INCOME, PREFIX_DETAILS, PREFIX_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"KamiliArsyad"},"content":" // OPTIONAL FIELDS","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"KamiliArsyad"},"content":" TelegramHandle telegram \u003d argMultimap.getValue(PREFIX_TELEGRAM).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"KamiliArsyad"},"content":" Profession profession \u003d argMultimap.getValue(PREFIX_PROFESSION).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseProfession(argMultimap.getValue(PREFIX_PROFESSION).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"KamiliArsyad"},"content":" Income income \u003d argMultimap.getValue(PREFIX_INCOME).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" Details details \u003d argMultimap.getValue(PREFIX_DETAILS).isPresent()","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"KamiliArsyad"},"content":" ? ParserUtil.parseDetails(argMultimap.getValue(PREFIX_DETAILS).get())","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"KamiliArsyad"},"content":" : null;","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"dickongwd"},"content":" Lead lead \u003d argMultimap.getValue(PREFIX_LEAD).isPresent()","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"dickongwd"},"content":" ? ParserUtil.parseLead(argMultimap.getValue(PREFIX_LEAD).get())","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"dickongwd"},"content":" : null;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, telegram, profession, income, details, lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"KamiliArsyad"},"content":" return new CreateCommand(person);","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"KamiliArsyad":29,"-":54,"dickongwd":7}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LEAD;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" if (argMultimap.getValue(PREFIX_LEAD).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" editPersonDescriptor.setLead(ParserUtil.parseLead(argMultimap.getValue(PREFIX_LEAD).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":83,"dickongwd":6}},{"path":"src/main/java/seedu/address/logic/parser/InteractionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OUTCOME;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.InteractionCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":" * Parses input arguments and creates a new InteractionCommand object.","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommandParser implements Parser\u003cCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":" * Parses the given {@code String} of arguments in the context of the InteractionCommand","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":" * and returns an InteractionCommand object for execution.","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" public Command parse(String args) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_OUTCOME);","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" Index index;","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" try {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble().split(\"\\\\s+\")[0]);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_OUTCOME);","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" Outcome outcome \u003d Outcome.UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":" String note \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" if (argMultimap.getValue(PREFIX_OUTCOME).isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" String outcomeString \u003d argMultimap.getValue(PREFIX_OUTCOME).get().split(\"\\\\s+\")[0];","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" outcome \u003d ParserUtil.parseOutcome(outcomeString);","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" String[] trimmedArgsParts \u003d trimmedArgs.split(\"\\\\s+\", 3);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" //This is to check if there is a note","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" if (trimmedArgsParts.length \u003e 2) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" note \u003d trimmedArgsParts[3];","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" } else {","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":" String[] trimmedArgsParts \u003d trimmedArgs.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" if (trimmedArgsParts.length \u003c 3) {","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" note \u003d trimmedArgsParts[1];","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" return new InteractionCommand(index, new Interaction(note, outcome));","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":64}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Details;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"KamiliArsyad"},"content":" // NOW FOR THE OPTIONAL FIELDS","lastModifiedDate":"2023-10-08"},{"lineNumber":121,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":122,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String telegram} into a {@code TelegramHandle}.","lastModifiedDate":"2023-10-08"},{"lineNumber":123,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":124,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":125,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":126,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":127,"author":{"gitId":"KamiliArsyad"},"content":" public static TelegramHandle parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":128,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-08"},{"lineNumber":129,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":130,"author":{"gitId":"KamiliArsyad"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegram)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":131,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":132,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":133,"author":{"gitId":"KamiliArsyad"},"content":" return new TelegramHandle(trimmedTelegram);","lastModifiedDate":"2023-10-08"},{"lineNumber":134,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":135,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":136,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":137,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String profession} into a {@code Profession}.","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":139,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":140,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code profession} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":141,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":142,"author":{"gitId":"KamiliArsyad"},"content":" public static Profession parseProfession(String profession) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(profession);","lastModifiedDate":"2023-10-08"},{"lineNumber":144,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedProfession \u003d profession.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":145,"author":{"gitId":"KamiliArsyad"},"content":" if (!Profession.isValidProfession(trimmedProfession)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":146,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Profession.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":147,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":148,"author":{"gitId":"KamiliArsyad"},"content":" return new Profession(trimmedProfession);","lastModifiedDate":"2023-10-08"},{"lineNumber":149,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":150,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":151,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":152,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String income} into a {@code Income}.","lastModifiedDate":"2023-10-08"},{"lineNumber":153,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":154,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":155,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code income} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":156,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":157,"author":{"gitId":"KamiliArsyad"},"content":" public static Income parseIncome(String income) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":158,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(income);","lastModifiedDate":"2023-10-08"},{"lineNumber":159,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedIncome \u003d income.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":160,"author":{"gitId":"KamiliArsyad"},"content":" if (!Income.isValidIncome(trimmedIncome)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":161,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":162,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":163,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":164,"author":{"gitId":"KamiliArsyad"},"content":" Double incomeDouble \u003d Double.parseDouble(trimmedIncome);","lastModifiedDate":"2023-10-08"},{"lineNumber":165,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":166,"author":{"gitId":"KamiliArsyad"},"content":" return new Income(incomeDouble);","lastModifiedDate":"2023-10-08"},{"lineNumber":167,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":168,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":169,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":170,"author":{"gitId":"KamiliArsyad"},"content":" * Parses a {@code String Details} into a {@code Details}.","lastModifiedDate":"2023-10-08"},{"lineNumber":171,"author":{"gitId":"KamiliArsyad"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-08"},{"lineNumber":172,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":173,"author":{"gitId":"KamiliArsyad"},"content":" * @throws ParseException if the given {@code details} is invalid.","lastModifiedDate":"2023-10-08"},{"lineNumber":174,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":175,"author":{"gitId":"KamiliArsyad"},"content":" public static Details parseDetails(String details) throws ParseException {","lastModifiedDate":"2023-10-08"},{"lineNumber":176,"author":{"gitId":"KamiliArsyad"},"content":" requireNonNull(details);","lastModifiedDate":"2023-10-08"},{"lineNumber":177,"author":{"gitId":"KamiliArsyad"},"content":" String trimmedDetails \u003d details.trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":178,"author":{"gitId":"KamiliArsyad"},"content":" if (!Details.isValidDetails(trimmedDetails)) {","lastModifiedDate":"2023-10-08"},{"lineNumber":179,"author":{"gitId":"KamiliArsyad"},"content":" throw new ParseException(Details.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-08"},{"lineNumber":180,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":181,"author":{"gitId":"KamiliArsyad"},"content":" return new Details(trimmedDetails);","lastModifiedDate":"2023-10-08"},{"lineNumber":182,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":183,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":184,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":185,"author":{"gitId":"MagnificentCreature"},"content":" * Parses a {@code String outcome} into a {@code Outcome}.","lastModifiedDate":"2023-10-11"},{"lineNumber":186,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":187,"author":{"gitId":"MagnificentCreature"},"content":" * @throws ParseException if the given {@code outcome} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":188,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":189,"author":{"gitId":"MagnificentCreature"},"content":" public static Outcome parseOutcome(String outcome) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":190,"author":{"gitId":"MagnificentCreature"},"content":" requireNonNull(outcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":191,"author":{"gitId":"MagnificentCreature"},"content":" String trimmedOutcome \u003d outcome.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"MagnificentCreature"},"content":" if (!Outcome.isValidOutcome(trimmedOutcome)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":193,"author":{"gitId":"MagnificentCreature"},"content":" throw new ParseException(Outcome.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":194,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":195,"author":{"gitId":"MagnificentCreature"},"content":" return Outcome.valueOf(trimmedOutcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":196,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":197,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":209,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"dickongwd"},"content":" * Parses {@code String lead} into a {@code Lead}.","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"dickongwd"},"content":" public static Lead parseLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"dickongwd"},"content":" requireNonNull(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"dickongwd"},"content":" if (!Lead.isValidLead(lead)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"dickongwd"},"content":" return null;","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"dickongwd"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"dickongwd"},"content":" return new Lead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"KamiliArsyad":69,"MagnificentCreature":15,"-":125,"dickongwd":12}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" return new ViewCommand(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":27}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"zhyuhan"},"content":" * Returns the currently selected person","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"zhyuhan"},"content":" SimpleObjectProperty\u003cPerson\u003e getSelectedPerson();","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"zhyuhan":6,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"zhyuhan"},"content":" return selectedPerson;","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"zhyuhan":7,"-":148}},{"path":"src/main/java/seedu/address/model/lead/Lead.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dickongwd"},"content":"package seedu.address.model.lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"dickongwd"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":" * Represents the potential of a client.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":"public class Lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Lead should only take values hot|warm|cold\";","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":" private final LeadType leadType;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":" * Returns a lead given a string. Checks if the string is a valid lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"dickongwd"},"content":" * @param lead the string representation for the lead.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":" public Lead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"dickongwd"},"content":" checkArgument(isValidLead(lead.toUpperCase()), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"dickongwd"},"content":" this.leadType \u003d Enum.valueOf(LeadType.class, lead.toUpperCase());","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"dickongwd"},"content":" public Lead(LeadType lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"dickongwd"},"content":" this.leadType \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":" * Determines whether a given string is a valid lead.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":" * A valid lead is either \"hot\", \"warm\" or \"cold\".","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" * @param lead the string to check","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"dickongwd"},"content":" * @return true if the string is a valid lead, false otherwise","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" public static boolean isValidLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"dickongwd"},"content":" return lead.equalsIgnoreCase(\"HOT\")","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"dickongwd"},"content":" || lead.equalsIgnoreCase(\"WARM\")","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"dickongwd"},"content":" || lead.equalsIgnoreCase(\"COLD\");","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"dickongwd"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" return leadType.name();","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"dickongwd"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"dickongwd"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"dickongwd"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"dickongwd"},"content":" if (!(other instanceof Lead)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"dickongwd"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"dickongwd"},"content":" Lead otherLead \u003d (Lead) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"dickongwd"},"content":" return leadType.equals(otherLead.leadType);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"dickongwd"},"content":" return leadType.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"dickongwd":63}},{"path":"src/main/java/seedu/address/model/lead/LeadType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dickongwd"},"content":"package seedu.address.model.lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"dickongwd"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"dickongwd"},"content":" * Represents the types of leads to tag a client.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"public enum LeadType {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"dickongwd"},"content":" HOT,","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"dickongwd"},"content":" WARM,","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"dickongwd"},"content":" COLD,","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"dickongwd":10}},{"path":"src/main/java/seedu/address/model/person/Details.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s details in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Details {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Details should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Details}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param details A valid details.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public Details(String details) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d details;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid details.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidDetails(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":34}},{"path":"src/main/java/seedu/address/model/person/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s income in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Income {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Income should only contain numbers \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":" public final Number value;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Income}.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" * @param income A valid income.","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" public Income(Number income) {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d income;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid income.","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidIncome(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" Double.parseDouble(test);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" return value.toString();","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" || (other instanceof Income // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" \u0026\u0026 value.equals(((Income) other).value)); // state check","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":50}},{"path":"src/main/java/seedu/address/model/person/Interaction.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":" * Represents an interaction with the client in the addressbook.","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"public class Interaction {","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":" * Represents the outcome of the interaction.","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":" public static enum Outcome {","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":" CLOSED,","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":" INTERESTED,","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":" NOT_INTERESTED,","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":" FOLLOWUP_REQUIRED,","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":" UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Outcome should be one of the following: \"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":" + \"CLOSED, INTERESTED, NOT_INTERESTED, FOLLOWUP_REQUIRED, UNKNOWN \"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":" * Returns true if a given string is a valid outcome.","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":" public static boolean isValidOutcome(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" return test.matches(\"CLOSED|INTERESTED|NOT_INTERESTED|FOLLOWUP_REQUIRED|UNKNOWN\");","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":" private final String interactionNote;","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" private final Outcome outcome;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":" * Constructs a {@code Interaction} with a default LeadStatus of UNKNOWN.","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactionNote A valid Interaction note.","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" * @param outcome A valid outcome.","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" public Interaction(String interactionNote) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" this.interactionNote \u003d interactionNote;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":" this.outcome \u003d Outcome.UNKNOWN;","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" * Constructs a {@code Interaction}.","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactionNote A valid Interaction note.","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":" * @param outcome A valid LeadStatus.","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" public Interaction(String interactionNote, Outcome outcome) {","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":" this.interactionNote \u003d interactionNote;","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" this.outcome \u003d outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" public String getInteraction() {","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" return this.interactionNote;","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" public String getOutcome() {","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":" return this.outcome.toString();","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":" public String toString() {","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" return interactionNote + \"\\nThe outcome of this interaction is: \" + outcome;","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" if (!(other instanceof Interaction)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":" Interaction otherInteraction \u003d (Interaction) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" return otherInteraction.interactionNote.equals(this.interactionNote)","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" \u0026\u0026 otherInteraction.outcome.equals(this.outcome);","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"MagnificentCreature":82}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":" // Optional fields","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" private final TelegramHandle telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" private final Profession profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" private final Income income;","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":" private final Details details;","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" private final Set\u003cInteraction\u003e interactions \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d null;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" this.telegram \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"KamiliArsyad"},"content":" this.profession \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" this.income \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"KamiliArsyad"},"content":" this.details \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"KamiliArsyad"},"content":" * Same constructor but with optional fields.","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"KamiliArsyad"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" TelegramHandle telegram, Profession profession, Income income, Details details, Lead lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"KamiliArsyad"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"KamiliArsyad"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"KamiliArsyad"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"KamiliArsyad"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"KamiliArsyad"},"content":" this.profession \u003d profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" this.income \u003d income;","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" this.details \u003d details;","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":90,"author":{"gitId":"dickongwd"},"content":" public Lead getLead() {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"dickongwd"},"content":" return lead;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"KamiliArsyad"},"content":" public TelegramHandle getTelegram() {","lastModifiedDate":"2023-10-08"},{"lineNumber":95,"author":{"gitId":"KamiliArsyad"},"content":" return telegram;","lastModifiedDate":"2023-10-08"},{"lineNumber":96,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":97,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":98,"author":{"gitId":"KamiliArsyad"},"content":" public Profession getProfession() {","lastModifiedDate":"2023-10-08"},{"lineNumber":99,"author":{"gitId":"KamiliArsyad"},"content":" return profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":100,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":101,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":102,"author":{"gitId":"KamiliArsyad"},"content":" public Income getIncome() {","lastModifiedDate":"2023-10-08"},{"lineNumber":103,"author":{"gitId":"KamiliArsyad"},"content":" return income;","lastModifiedDate":"2023-10-08"},{"lineNumber":104,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":105,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":106,"author":{"gitId":"KamiliArsyad"},"content":" public Details getDetails() {","lastModifiedDate":"2023-10-08"},{"lineNumber":107,"author":{"gitId":"KamiliArsyad"},"content":" return details;","lastModifiedDate":"2023-10-08"},{"lineNumber":108,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":109,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":110,"author":{"gitId":"MagnificentCreature"},"content":" public Set\u003cInteraction\u003e getInteractions() {","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"MagnificentCreature"},"content":" return interactions;","lastModifiedDate":"2023-10-11"},{"lineNumber":112,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"MagnificentCreature"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"MagnificentCreature"},"content":" * Adds an interaction to the person.","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"MagnificentCreature"},"content":" * @param interactions the set of interaction to be added","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"MagnificentCreature"},"content":" * @return the updated set of interactions","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"MagnificentCreature"},"content":" public Set\u003cInteraction\u003e addInteractions(Set\u003cInteraction\u003e interactions) {","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zhyuhan"},"content":" this.interactions.addAll(interactions);","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"zhyuhan"},"content":" return this.interactions;","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"dickongwd"},"content":" * Changes the lead potential of the client.","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"dickongwd"},"content":" public void setLead(Lead newLead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d newLead;","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KamiliArsyad":44,"MagnificentCreature":13,"zhyuhan":2,"-":117,"dickongwd":16}},{"path":"src/main/java/seedu/address/model/person/Profession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s profession in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class Profession {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Professions should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code Profession}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param profession A valid profession.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public Profession(String profession) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d profession;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid profession.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidProfession(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":34}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KamiliArsyad"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"KamiliArsyad"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"KamiliArsyad"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"KamiliArsyad"},"content":"public class TelegramHandle {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"KamiliArsyad"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram handles should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"KamiliArsyad"},"content":" + \"and spaces, and it should not be blank. It also should start with \u0027@\u0027\";","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"KamiliArsyad"},"content":" public static final String VALIDATION_REGEX \u003d \"@[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"KamiliArsyad"},"content":" public final String value;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"KamiliArsyad"},"content":" * Constructs a {@code TelegramHandle}.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"KamiliArsyad"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":" * @param telegramHandle A valid telegram handle.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"KamiliArsyad"},"content":" public TelegramHandle(String telegramHandle) {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":" value \u003d telegramHandle;","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"KamiliArsyad"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"KamiliArsyad"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"KamiliArsyad"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"KamiliArsyad"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"KamiliArsyad"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"KamiliArsyad"},"content":" return value;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"KamiliArsyad"},"content":" || (other instanceof TelegramHandle // instanceof handles nulls","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":" \u0026\u0026 value.equals(((TelegramHandle) other).value)); // state check","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"KamiliArsyad"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"KamiliArsyad"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"KamiliArsyad":46}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" private final String lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"lead\") String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"dickongwd"},"content":" if (source.getLead() \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"dickongwd"},"content":" lead \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"dickongwd"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"dickongwd"},"content":" lead \u003d source.getLead().toString().toLowerCase();","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"dickongwd"},"content":" if (lead !\u003d null \u0026\u0026 !lead.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"dickongwd"},"content":" person.setLead(new Lead(lead));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":108,"dickongwd":14}},{"path":"src/main/java/seedu/address/ui/ClientProfilePanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Income;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Profession;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" * A UI component that displays the profile of a {@code Client}.","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":"public class ClientProfilePanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"ClientProfilePanel.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" public final Person client;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" private Label name;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" private Text phone;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" private Text telegram;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" private Text address;","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" private Text email;","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" private Text profession;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" private Text income;","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" private FlowPane tags;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" private ListView\u003cInteraction\u003e interactionsList;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code ClientProfilePanel} with the given {@code Person}.","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" public ClientProfilePanel(Person client) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" this.client \u003d client;","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" address.setText(client.getAddress().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" client.getTags().stream()","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":" // optional fields","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" TelegramHandle t \u003d client.getTelegram();","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" telegram.setText(t.value);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":" Profession p \u003d client.getProfession();","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" if (p !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" profession.setText(p.value);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"zhyuhan"},"content":" Income i \u003d client.getIncome();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"zhyuhan"},"content":" if (i !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"zhyuhan"},"content":" income.setText(\"$\" + i.value.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"zhyuhan"},"content":" // interactions","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"zhyuhan"},"content":" ObservableList\u003cInteraction\u003e interactions \u003d FXCollections.observableArrayList(client.getInteractions());","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"zhyuhan"},"content":" interactionsList.setItems(interactions);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"zhyuhan"},"content":" interactionsList.setCellFactory(listView -\u003e new InteractionListViewCell());","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"zhyuhan"},"content":" static class InteractionListViewCell extends ListCell\u003cInteraction\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"zhyuhan"},"content":" protected void updateItem(Interaction interaction, boolean empty) {","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"zhyuhan"},"content":" super.updateItem(interaction, empty);","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"zhyuhan"},"content":" if (empty || interaction \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"zhyuhan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"zhyuhan"},"content":" setText(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"zhyuhan"},"content":" } else {","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"zhyuhan"},"content":" setGraphic(new InteractionEntry(interaction).getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":96}},{"path":"src/main/java/seedu/address/ui/ContentDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" * The area for displaying content.","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"public class ContentDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"ContentDisplay.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ContentDisplay.class);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" private ClientProfilePanel clientProfilePanel;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" private StackPane contentDisplayPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" private VBox clientProfilePanelPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code ContentDisplay} with the given {@code personList} and {@code selectedPerson}.","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" public ContentDisplay(ObservableList\u003cPerson\u003e personList, SimpleObjectProperty\u003cPerson\u003e selectedPerson) {","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" personListView.setItems(personList);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":" selectedPerson.setValue(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" });","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" selectedPerson.addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanel \u003d new ClientProfilePanel(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanelPlaceholder.getChildren().clear();","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" clientProfilePanelPlaceholder.getChildren().add(clientProfilePanel.getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" // set focus within the list if the change is from a `view` command","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" personListView.getSelectionModel().select(newValue);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" });","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" static class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"zhyuhan"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"zhyuhan"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zhyuhan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"zhyuhan"},"content":" setText(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"zhyuhan"},"content":" } else {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zhyuhan"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":70}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-f11-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MagnificentCreature":1,"-":101}},{"path":"src/main/java/seedu/address/ui/InteractionEntry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" * A UI component that displays information of a {@code Client} {@code Interaction}.","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"public class InteractionEntry extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" private static final String FXML \u003d \"InteractionEntry.fxml\";","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" public final Interaction interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" private Label note;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" private Label outcome;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" * Creates a {@code InteractionEntry} with the given {@code Interaction}.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" public InteractionEntry(Interaction interaction) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" super(FXML);","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" this.interaction \u003d interaction;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":" note.setText(interaction.getInteraction());","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":" outcome.setText(interaction.getOutcome());","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"MagnificentCreature":2,"zhyuhan":29}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" private ContentDisplay contentDisplay;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" private StackPane contentDisplayPlaceholder;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"zhyuhan"},"content":" contentDisplay \u003d new ContentDisplay(logic.getFilteredPersonList(), logic.getSelectedPerson());","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"zhyuhan"},"content":" contentDisplayPlaceholder.getChildren().add(contentDisplay.getRoot());","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"zhyuhan":4,"-":188}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"dickongwd"},"content":" private FlowPane lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"dickongwd"},"content":" if (person.getLead() !\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"dickongwd"},"content":" Label leadLabel \u003d new Label(person.getLead().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"dickongwd"},"content":" leadLabel.setId(person.getLead().toString().toLowerCase() + \"-lead\");","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"dickongwd"},"content":" lead.getChildren().add(leadLabel);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":56,"dickongwd":7}},{"path":"src/main/resources/view/ClientProfilePanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" minWidth\u003d\"350\" prefWidth\u003d\"500\" stylesheets\u003d\"@css/clientProfile.css\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"15\" right\u003d\"15\" bottom\u003d\"15\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel id\u003d\"name\" fx:id\u003d\"name\" text\u003d\"\\$name\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"16\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox id\u003d\"contact\" spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Phone\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"phone\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Telegram\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"telegram\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Address\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"address\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Email\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"email\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Profession\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"profession\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" \u003cHBox spacing\u003d\"4\" HBox.hgrow\u003d\"ALWAYS\" alignment\u003d\"BASELINE_LEFT\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Income\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zhyuhan"},"content":" \u003cText fx:id\u003d\"income\" text\u003d\"Unknown\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zhyuhan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel text\u003d\"Past Interactions\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zhyuhan"},"content":" \u003cListView fx:id\u003d\"interactionsList\" styleClass\u003d\"interactions\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"zhyuhan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":59}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" stylesheets\u003d\"@css/commandBox.css\"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" maxHeight\u003d\"Infinity\" promptText\u003d\"Enter Command Here...\"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" styleClass\u003d\"command\" HBox.hgrow\u003d\"ALWAYS\" \u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":" \u003cInsets left\u003d\"40.0\" right\u003d\"40.0\" top\u003d\"40.0\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":"\u003c/TextField\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":12,"-":4}},{"path":"src/main/resources/view/ContentDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"\u003cHBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox styleClass\u003d\"pane\" minWidth\u003d\"340\" prefWidth\u003d\"340\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":" \u003cVBox fx:id\u003d\"clientProfilePanelPlaceholder\" styleClass\u003d\"pane\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":19}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"lilozz2"},"content":".pane {","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":252,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":275,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":280,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":285,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":297,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":311,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":324,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"dickongwd"},"content":"#hot-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #ee4b2b;","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"dickongwd"},"content":"#warm-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #e97451;","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":341,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":342,"author":{"gitId":"dickongwd"},"content":"#cold-lead {","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"dickongwd"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"dickongwd"},"content":" -fx-background-color: #85c1e9;","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"dickongwd"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"dickongwd"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"dickongwd"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"dickongwd"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"dickongwd"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"lilozz2":1,"-":322,"dickongwd":26}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"lilozz2":2,"-":43}},{"path":"src/main/resources/view/InteractionEntry.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" spacing\u003d\"4\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":" \u003cInsets top\u003d\"8\" right\u003d\"8\" bottom\u003d\"8\" left\u003d\"8\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel fx:id\u003d\"outcome\" styleClass\u003d\"outcome\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":" \u003cLabel fx:id\u003d\"note\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":14}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" stylesheets\u003d\"@css/menuBar.css\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"lilozz2"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane\"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"contentDisplayPlaceholder\" styleClass\u003d\"pane\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"lilozz2":3,"zhyuhan":1,"-":50}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.image.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17.0.2-ea\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"dickongwd"},"content":" \u003cHBox alignment\u003d\"BASELINE_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"dickongwd"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"dickongwd"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"dickongwd"},"content":" \u003cFlowPane fx:id\u003d\"lead\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"lilozz2"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"8.0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lilozz2"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lilozz2"},"content":" \u003cImageView fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lilozz2"},"content":" \u003cImage url\u003d\"@../images/phone.png\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lilozz2"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"lilozz2"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"lilozz2"},"content":" \u003cInsets left\u003d\"-5.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox.margin\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"lilozz2"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"lilozz2"},"content":" \u003cInsets right\u003d\"5.0\" top\u003d\"6.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"lilozz2"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"8.0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"lilozz2"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"lilozz2"},"content":" \u003cImageView fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"lilozz2"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"lilozz2"},"content":" \u003cImage url\u003d\"@../images/email.png\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"lilozz2"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"lilozz2"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"lilozz2"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"lilozz2"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"lilozz2"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox.margin\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"lilozz2"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"6.0\" left\u003d\"-3.0\" right\u003d\"5.0\" top\u003d\"6.0\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"lilozz2"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"lilozz2"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"lilozz2"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"lilozz2"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"lilozz2":44,"-":21,"dickongwd":4}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"\u003cStackPane xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" wrapText\u003d\"true\" text\u003d\"Command Output Window\"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" styleClass\u003d\"result-window\" stylesheets\u003d\"@css/resultWindow.css\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"40.0\" right\u003d\"40.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":" \u003c/TextArea\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"lilozz2":9,"-":6}},{"path":"src/main/resources/view/css/clientProfile.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhyuhan"},"content":".label {","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: #aaaaaa;","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"zhyuhan"},"content":"Text {","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"zhyuhan"},"content":" -fx-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"zhyuhan"},"content":"#name {","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zhyuhan"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"zhyuhan"},"content":".interactions {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"zhyuhan"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"zhyuhan"},"content":".interactions .outcome {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"zhyuhan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"zhyuhan"},"content":" -fx-background-color: #ff8888;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"zhyuhan"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"zhyuhan"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"zhyuhan"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zhyuhan"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"zhyuhan":25}},{"path":"src/main/resources/view/css/commandBox.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":"/*@@AY2122S2-CS2103T-T09-4 {lilozz2}-reused","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":"Past year senior project*/","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":".command {","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-font-family: monospace;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #F1F2F3;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":" -fx-background-radius: 4;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 15 15 15 45;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":" -fx-background-image: url(\u0027../../images/terminal.png\u0027);","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":" -fx-background-repeat: no-repeat;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" -fx-background-position: 15px center;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-size: 20px;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":".command:focused {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":" -fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.2), 3.5, 0.4, 0, 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lilozz2"},"content":" -fx-prompt-text-fill: derive(-fx-control-inner-background,-30%);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":19}},{"path":"src/main/resources/view/css/menuBar.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":"/*@@AY2122S2-CS2103T-T09-4 {lilozz2}-reused","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":"Past year senior project*/","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":".menu .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-font-size: 15;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":".menu:hover,","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":".menu:showing {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #479ECF;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":".context-menu {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 0;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"lilozz2"},"content":".menu-item {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"lilozz2"},"content":".menu-item .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"lilozz2"},"content":".menu-item:focused .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"lilozz2"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"lilozz2"},"content":".menu-item:focused {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"lilozz2"},"content":" -fx-background: -fx-accent;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: #E0E0E0;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":37}},{"path":"src/main/resources/view/css/resultWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lilozz2"},"content":".result-window {","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"lilozz2"},"content":" -fx-font-family: monospace;","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"lilozz2"},"content":" -fx-min-height: 100;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"lilozz2"},"content":" -fx-pref-height: 100;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"lilozz2"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 18, 0, 0, 5);","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"lilozz2"},"content":" -fx-padding: 10;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"lilozz2"},"content":" -fx-font-size: 16;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"lilozz2"},"content":".text-area {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"lilozz2"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"lilozz2"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"lilozz2"},"content":".text-area .content {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"lilozz2"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"lilozz2"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"lilozz2":17}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"KamiliArsyad"},"content":" String createCommand \u003d CreateCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandFailure(createCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"KamiliArsyad":3,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/CreateCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandIntegrationTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandSuccess(new CreateCommand(validPerson), model,","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"KamiliArsyad"},"content":" String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"KamiliArsyad"},"content":" assertCommandFailure(new CreateCommand(personInList), model,","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"KamiliArsyad":5,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/CreateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"zhyuhan"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"KamiliArsyad"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateCommand(null));","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" CommandResult commandResult \u003d new CreateCommand(validPerson).execute(modelStub);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createCommand \u003d new CreateCommand(validPerson);","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"KamiliArsyad"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e createCommand.execute(modelStub));","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createAliceCommand \u003d new CreateCommand(alice);","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createBobCommand \u003d new CreateCommand(bob);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"KamiliArsyad"},"content":" assertTrue(createAliceCommand.equals(createAliceCommand));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand addAliceCommandCopy \u003d new CreateCommand(alice);","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"KamiliArsyad"},"content":" assertTrue(createAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(1));","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"KamiliArsyad"},"content":" assertFalse(createAliceCommand.equals(createBobCommand));","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand createCommand \u003d new CreateCommand(ALICE);","lastModifiedDate":"2023-10-08"},{"lineNumber":85,"author":{"gitId":"KamiliArsyad"},"content":" String expected \u003d CreateCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2023-10-08"},{"lineNumber":86,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(expected, createCommand.toString());","lastModifiedDate":"2023-10-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"zhyuhan"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"zhyuhan"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"zhyuhan"},"content":" public SimpleObjectProperty\u003cPerson\u003e getSelectedPerson() {","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"zhyuhan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"zhyuhan"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"KamiliArsyad":18,"zhyuhan":6,"-":187}},{"path":"src/test/java/seedu/address/logic/commands/InteractionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MagnificentCreature"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"MagnificentCreature"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"MagnificentCreature"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"MagnificentCreature"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"MagnificentCreature"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"MagnificentCreature"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Interaction.Outcome;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"MagnificentCreature"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"MagnificentCreature"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"MagnificentCreature"},"content":" * Contains integration tests (interaction with the Model) and unit tests for InteractionCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"MagnificentCreature"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"MagnificentCreature"},"content":"public class InteractionCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"MagnificentCreature"},"content":" private static final String INTERACTION_NOTE_STUB \u003d \"Test note\";","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"MagnificentCreature"},"content":" private static final Outcome INTERACTION_OUTCOME_STUB \u003d Outcome.INTERESTED;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"MagnificentCreature"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"MagnificentCreature"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"MagnificentCreature"},"content":" Person personToAddInteractions \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"MagnificentCreature"},"content":" Set\u003cInteraction\u003e interactions \u003d personToAddInteractions.getInteractions();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"MagnificentCreature"},"content":" interactions.add(interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"MagnificentCreature"},"content":" Person editedPerson \u003d new PersonBuilder(personToAddInteractions).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"MagnificentCreature"},"content":" editedPerson.addInteractions(interactions);","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand interactionCommand \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"MagnificentCreature"},"content":" String expectedMessage \u003d String.format(InteractionCommand.MESSAGE_INTERACTION_SUCCESS, personToAddInteractions);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"MagnificentCreature"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"MagnificentCreature"},"content":" expectedModel.setPerson(personToAddInteractions, editedPerson);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"MagnificentCreature"},"content":" assertCommandSuccess(interactionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"MagnificentCreature"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"MagnificentCreature"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand interactionCommand \u003d new InteractionCommand(outOfBoundIndex, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"MagnificentCreature"},"content":" assertCommandFailure(interactionCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"MagnificentCreature"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"MagnificentCreature"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"MagnificentCreature"},"content":" Interaction interactionToAdd \u003d new Interaction(INTERACTION_NOTE_STUB, INTERACTION_OUTCOME_STUB);","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"MagnificentCreature"},"content":" final InteractionCommand standardCommand \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"MagnificentCreature"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"MagnificentCreature"},"content":" InteractionCommand commandWithSameValues \u003d new InteractionCommand(INDEX_FIRST_PERSON, interactionToAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"MagnificentCreature"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"MagnificentCreature"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"MagnificentCreature"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"MagnificentCreature"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"MagnificentCreature"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"MagnificentCreature"},"content":" // different index -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new InteractionCommand(Index.fromOneBased(2), interactionToAdd)));","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"MagnificentCreature"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"MagnificentCreature"},"content":" // different interaction -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"MagnificentCreature"},"content":" assertFalse(standardCommand.equals(new InteractionCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"MagnificentCreature"},"content":" new Interaction(\"Different note\", Outcome.UNKNOWN))));","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"MagnificentCreature"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"MagnificentCreature"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"MagnificentCreature":89}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"zhyuhan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"KamiliArsyad"},"content":" CreateCommand command \u003d (CreateCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"KamiliArsyad"},"content":" assertEquals(new CreateCommand(person), command);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"zhyuhan"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zhyuhan"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"zhyuhan"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"zhyuhan"},"content":" ViewCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zhyuhan"},"content":" assertEquals(new ViewCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"KamiliArsyad":3,"zhyuhan":6,"-":100}},{"path":"src/test/java/seedu/address/logic/parser/CreateCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"KamiliArsyad"},"content":"public class CreateCommandParserTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"KamiliArsyad"},"content":" private CreateCommandParser parser \u003d new CreateCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"KamiliArsyad"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new CreateCommand(expectedPerson));","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"KamiliArsyad"},"content":" new CreateCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"KamiliArsyad"},"content":" new CreateCommand(expectedPerson));","lastModifiedDate":"2023-10-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"KamiliArsyad"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"KamiliArsyad"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"KamiliArsyad":8,"-":188}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"dickongwd"},"content":" private static final String INVALID_LEAD \u003d \"medium\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"dickongwd"},"content":" private static final String VALID_LEAD \u003d BENSON.getLead().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"dickongwd"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":100,"dickongwd":15}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"dickongwd"},"content":"import seedu.address.model.lead.Lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"dickongwd"},"content":" public static final String DEFAULT_LEAD \u003d \"cold\";","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"dickongwd"},"content":" private Lead lead;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"dickongwd"},"content":" lead \u003d new Lead(DEFAULT_LEAD);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"dickongwd"},"content":" lead \u003d personToCopy.getLead();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"dickongwd"},"content":" * Sets the {@code Lead} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"dickongwd"},"content":" public PersonBuilder withLead(String lead) {","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"dickongwd"},"content":" this.lead \u003d new Lead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"dickongwd"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"dickongwd"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"dickongwd"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"dickongwd"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"dickongwd"},"content":" * Creates the built {@code Person} after building.","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"dickongwd"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"dickongwd"},"content":" * @return the built {@code Person}","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"dickongwd"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":111,"author":{"gitId":"dickongwd"},"content":" Person person \u003d new Person(name, phone, email, address, tags);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"dickongwd"},"content":" person.setLead(lead);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"dickongwd"},"content":" return person;","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":95,"dickongwd":21}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"KamiliArsyad"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"KamiliArsyad"},"content":" return CreateCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"KamiliArsyad":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"dickongwd"},"content":" .withTags(\"owesMoney\", \"friends\").withLead(\"warm\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"-":75,"dickongwd":1}}] diff --git a/AY2324S1-CS2103T-F11-4_tp_master/commits.json b/AY2324S1-CS2103T-F11-4_tp_master/commits.json index 3b7f25c6..a9219755 100644 --- a/AY2324S1-CS2103T-F11-4_tp_master/commits.json +++ b/AY2324S1-CS2103T-F11-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lilozz2":[{"date":"2023-10-03","commitResults":[{"hash":"c9f08e6ec2b5b878aaac1691aba6d50294c9a641","isMergeCommit":true,"messageTitle":"Merge pull request #14 from KamiliArsyad/master","messageBody":"Update UI image and README.md to match the project","fileTypesAndContributionMap":{}},{"hash":"dcf0db29540f3b94d9f2fb6fe72acbdff90da10a","isMergeCommit":true,"messageTitle":"Merge pull request #16 from MagnificentCreature/patch-1","messageBody":"Update the DG (WIP)","fileTypesAndContributionMap":{}},{"hash":"5a257cee6eb8715cd59e846afae97a7995bcb2f4","isMergeCommit":true,"messageTitle":"Merge pull request #22 from MagnificentCreature/patch-1","messageBody":"update DG use cases (WIP)","fileTypesAndContributionMap":{}},{"hash":"0a0f7f804d85b73c5a418d7cb0c6ee3fcb42ed87","isMergeCommit":false,"messageTitle":"add more NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"f7190facc3fea213bfd4a584e3a24113f5eaf63f","isMergeCommit":true,"messageTitle":"Merge pull request #24 from dickongwd/tidy-documentation","messageBody":"Tidy documentation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"644e6a58c2ab2f220a1a591edaec024e8048b901","isMergeCommit":false,"messageTitle":"Added Improvements to Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0}}},{"hash":"3e65e7ca1c388712cbefbde44fe80b1b7cab2005","isMergeCommit":false,"messageTitle":"Improve menuToolBar, CommandLine \u0026 PersonList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":61}}},{"hash":"269a6b354e374ef41402d91e63cf81d3fd8b70b2","isMergeCommit":false,"messageTitle":"remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"94771f56dd7a6367e6007e671126c15c41972f86","isMergeCommit":false,"messageTitle":"change command font and box proportions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"1debf8dc526b98ffac9203a717a8f21706b29375","isMergeCommit":true,"messageTitle":"Merge pull request #50 from MagnificentCreature/help-link","messageBody":"Help-link","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"6ae3aecba092d91b3d03727f3595cea3f2961122","isMergeCommit":true,"messageTitle":"Merge pull request #49 from MagnificentCreature/fix-interactions","messageBody":"Fix-interactions","fileTypesAndContributionMap":{}}]}],"KamiliArsyad":[{"date":"2023-10-03","commitResults":[{"hash":"092da76238c656ecf5b801bd922c1ab7847280bc","isMergeCommit":false,"messageTitle":"Update UI image and README.md to match the project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":10}}},{"hash":"20f4315edd2076b967f701878f755c068b75a6be","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aeeed8686ab596db554f10a071ad5daf25207fa0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from lilozz2/add-about-us","messageBody":"Add About Us page","fileTypesAndContributionMap":{}},{"hash":"e687932bc2e211801325dd9dcf084ec2d12765b2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"962ad4ec5b65d5f5a1a6b536c3f40e7f225fd21c","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AY2324S1-CS2103T-F11-4/KamiliArsyad-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"fa398ab77aa7b71d84eabb1492e16b3acfc92a7e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from dickongwd/migrate-user-guide","messageBody":"Migrate user guide","fileTypesAndContributionMap":{}},{"hash":"9eec520ed3d1826bf1b031760ac55cd03edcb1b6","isMergeCommit":false,"messageTitle":"Update README.md to include acknoledgement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"4ffd2deb5ff8cf74603cfa21b5915fba33d37daf","isMergeCommit":true,"messageTitle":"Merge pull request #19 from AY2324S1-CS2103T-F11-4/KamiliArsyad-readme-patch","messageBody":"Update README.md to include acknoledgement","fileTypesAndContributionMap":{}},{"hash":"b75e3fa7c4769239629738899ee76367d5a0c9fb","isMergeCommit":true,"messageTitle":"Merge pull request #20 from zhyuhan/update-build-status-badge","messageBody":"Update build status badge URL","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"c7cd7c6dd2e2ed9c1cc1a802d1b270c3a9f6e215","isMergeCommit":false,"messageTitle":"Add meow command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":10}}},{"hash":"0ee1c0847febe33669e37cab1f13ba58218676f9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from KamiliArsyad/tutorial-adding-command","messageBody":"Add meow command","fileTypesAndContributionMap":{}},{"hash":"cbe26ad711b24a5c38e662305dafd6e0acd1b443","isMergeCommit":false,"messageTitle":"Add client class and package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"578c0c326cceebfd33f6d3f79ac34a34a026424b","isMergeCommit":false,"messageTitle":"Add exception package and DuplicateClientException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"0b7e6acdcb6b486bf01c231615ce8adc717c1087","isMergeCommit":false,"messageTitle":"Add ClientList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}}]},{"date":"2023-10-08","commitResults":[{"hash":"a22fda4a6559a742347101dd24f894d0008b6ba1","isMergeCommit":false,"messageTitle":"Update ClientList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":0}}},{"hash":"094c7e2a69e8456de9987e1131d3efb5a589ede6","isMergeCommit":false,"messageTitle":"Add ClientNotFoundException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"ffb1b569fef2753707337a86020e7b525e6d4d97","isMergeCommit":false,"messageTitle":"Create Client version of AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}},{"hash":"0d12ba5138644589c5f44a7a5213983874139252","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":14}}},{"hash":"2caccfd81f641087c99df6f2a0cee01e58060a92","isMergeCommit":false,"messageTitle":"Add new Client class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0}}},{"hash":"5a7aedfc7790b8e69e3d81c47559258f53a23a1d","isMergeCommit":false,"messageTitle":"Remove Client class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":46}}},{"hash":"c3f689c9f2c10d8f32b33d6e360fd87fc93ab9d0","isMergeCommit":false,"messageTitle":"Modify Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"96f3355dc909a8fc2227fe6cb55694cd80810c20","isMergeCommit":false,"messageTitle":"More person details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":0}}},{"hash":"fbf993cf15c8ad1d00cd4f282f87e044d1712356","isMergeCommit":false,"messageTitle":"Modify Person\u0027s additional fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"75fae076520b92e53678c6a098dac2fe0f8d1050","isMergeCommit":false,"messageTitle":"Add support for parsing additional fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":2}}},{"hash":"238f39c846dfd4c8da0811b30525eba55bb7d86f","isMergeCommit":false,"messageTitle":"Add optional fields in command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"8a57c77f10ac50ab17c229cff5e169633826a00f","isMergeCommit":false,"messageTitle":"Renamed Add to Create","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":38,"deletions":37},"test-code":{"insertions":7,"deletions":7}}},{"hash":"1c43ca0fc6be1b7e5a204b752e0a8a9bff5d3edd","isMergeCommit":false,"messageTitle":"Cleanup on unused progress","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":354}}}]},{"date":"2023-10-10","commitResults":[{"hash":"e2798fb22fe71a48e9fbff573fb2770f58eefda8","isMergeCommit":false,"messageTitle":"Minor change according to PR review from Yu Han and Sean","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":10,"deletions":10}}},{"hash":"e60946f3472568cc2c24b22362f9d819b6782b9e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from KamiliArsyad/client-basic-commands","messageBody":"Client basic commands","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"fbcd7a25ad7fc93fa473f874ce2634f6b39e85aa","isMergeCommit":true,"messageTitle":"Merge pull request #30 from MagnificentCreature/add-interaction","messageBody":"Add Interaction command ","fileTypesAndContributionMap":{}}]}],"MagnificentCreature":[{"date":"2023-10-03","commitResults":[{"hash":"150a6cae65216dbe3fa444f93d016ccb3339802e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":2}}},{"hash":"c99752b53664d980e18e974e57ea7541e25c82fe","isMergeCommit":false,"messageTitle":"small changes to DG (half done)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":14}}},{"hash":"a4141ce25de7cb8ebc0da9f0281fbe69baa599d2","isMergeCommit":false,"messageTitle":"update developer guide (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f6c78c8554f8e270728b8c8c11b94ffcce179525","isMergeCommit":false,"messageTitle":"update DG (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":7}}},{"hash":"7c6ec9b73cd19d7792a18be50cd95bfafe7f09d1","isMergeCommit":false,"messageTitle":"update DG use cases (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"fedc86b0bd129388240ed756cf3633eff73d3de5","isMergeCommit":false,"messageTitle":"update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":1}}},{"hash":"defb8e5e5711c14b08ae1e2bcd59da14cd11ef3c","isMergeCommit":false,"messageTitle":"update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"95b09f8feaadf47aceebd86373d98092e6c0daf2","isMergeCommit":true,"messageTitle":"Merge pull request #23 from lilozz2/edit-develper-guide","messageBody":"add more NFR","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"5ddac2f659cc2335d98e7804b24a4f3802c795ed","isMergeCommit":true,"messageTitle":"Merge pull request #27 from dickongwd/fix-image-paths","messageBody":"Correct image paths","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"d574d3066049b4804126d453db69c1167e48c002","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a26ab8d7d74e9a0b5a92063fffe706c9be396026","isMergeCommit":false,"messageTitle":"change gitignore","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":580}}},{"hash":"ef35bafa226b580d80f13cdc52938061cc6c988e","isMergeCommit":false,"messageTitle":"WIP: Add Interaction class \u0026 interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"27d2cb7012ceb6622db648b22c7ceca46efdb745","isMergeCommit":false,"messageTitle":"WIP","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":8}}},{"hash":"4120f14a85cb59ea07648677cafeb59523da94c6","isMergeCommit":false,"messageTitle":"Change Checkstyle for LineLength, interaction WIP Also change gitignore again as per @lilozz2 suggestion, the change earlier didn\u0027t seem to have done it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":5},"other":{"insertions":6,"deletions":0}}},{"hash":"3d159da897e5e223edb15ff592083074782d27f6","isMergeCommit":false,"messageTitle":"Implement InteractionCommandParser But have not tested functionality yet Changed ParserUtil to include parseInteraction Changed InteractionCommand to include interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":2}}},{"hash":"34c262d214f3e65d9b96d39259c73268c16d91b1","isMergeCommit":false,"messageTitle":"WIP Interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":7}}},{"hash":"37d16ca2511130d884d9c2fcda24a39510c82597","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"42d60be33da72d2a2856ece9ddaca27f59111115","isMergeCommit":false,"messageTitle":"Implement core set of logic for interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":8}}},{"hash":"02b59efc12c92a073f55c0689a10a6457249a564","isMergeCommit":false,"messageTitle":"Bug fixes for interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}}]},{"date":"2023-10-12","commitResults":[{"hash":"7ebb5df08306b95f5ce1e7c56794c8b40edcf0da","isMergeCommit":false,"messageTitle":"Bug fixes Fix the issue of running \"interaction 1 I am interested in this product\" which will throw a formatting error because the preamble is read as \"1 I am interested in this product\" and the index cannot be parsed.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"3ec357beecbffccb22057d7f3cd22147468202d1","isMergeCommit":false,"messageTitle":"Added the change @KamiliArsyad suggested","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-14","commitResults":[{"hash":"6e5e55aa98eb754700b53e5ced6c4c8690063976","isMergeCommit":false,"messageTitle":"Add tests and fixes by @lilozz2 @KamiliArsyad","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":13},"test-code":{"insertions":89,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"0472c06e63664b44235daa9e0dc5427a074af754","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2324S1-CS2103T-F11-4:master","messageBody":"Master","fileTypesAndContributionMap":{}},{"hash":"8000cbd9c992603e5b3084b4bf26fb5d13e06bce","isMergeCommit":false,"messageTitle":"fix #42 and #41","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9}}},{"hash":"49398cd765fc337b21f384649edc065d95335858","isMergeCommit":false,"messageTitle":"Change HelpWindow link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-23","commitResults":[{"hash":"aea1d31ed74b2c3f3f91f4a297083d58b1948a5a","isMergeCommit":false,"messageTitle":"Fix nit by @zhyuhan","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3b97ea2ceed55f53e75ec54f76e9c47048180d3e","isMergeCommit":false,"messageTitle":"Comment changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"fe77160931c62b5f483344a777c564fa7522af20","isMergeCommit":false,"messageTitle":"Fix interaction display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"3e4024202e45d8276b53af964864d134295a5d95","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2324S1-CS2103T-F11-4/tp into fix-interactions","messageBody":"","fileTypesAndContributionMap":{}}]}],"zhyuhan":[{"date":"2023-10-03","commitResults":[{"hash":"fbd90ebeb6298e4963440afccee67c449361811b","isMergeCommit":false,"messageTitle":"Add team PPPs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":0}}},{"hash":"48ea9cd8eb1efde30c9dd998bc52550d707c522e","isMergeCommit":false,"messageTitle":"Fix PPP project name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"75d36e273c83b4d650c7fbcbe26da349b11cf33d","isMergeCommit":true,"messageTitle":"Merge pull request #13 from zhyuhan/add-ppps","messageBody":"Add team PPPs","fileTypesAndContributionMap":{}},{"hash":"22378b0af7018085fd91c7f04e5143d6991cb560","isMergeCommit":false,"messageTitle":"Update build status badge URL","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d565e4ad002c6a9b13ae84def5043f625bb4ba39","isMergeCommit":true,"messageTitle":"Merge pull request #21 from dickongwd/update-jekyll-config","messageBody":"Update jekyll config","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"01534505714153ae55f6f95ba5564b97cf58d6bd","isMergeCommit":true,"messageTitle":"Merge pull request #38 from lilozz2/improve-ui","messageBody":"Improve UI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"8d0d19fbecef9512a7ab843bff46db1df3271e67","isMergeCommit":true,"messageTitle":"Merge pull request #35 from dickongwd/remove-meow","messageBody":"Remove meow command","fileTypesAndContributionMap":{}},{"hash":"77a499eb0b7efd1d47b72d046bb4b00f2569cf8e","isMergeCommit":false,"messageTitle":"Add detailed client profile view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":313,"deletions":64}}},{"hash":"78e4dbe0afc34e35bdcd452fe7cf5bcccfc2d66d","isMergeCommit":false,"messageTitle":"Extract `selectedPerson` logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"6c952496f71394f8369b8d57eb44339168fa0f4e","isMergeCommit":false,"messageTitle":"Add `view` command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":0}}},{"hash":"e19623ff09eb571f612487eaf04bf4c5a64bd888","isMergeCommit":false,"messageTitle":"Fix test stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"22115a1ccc48e570604256491138d1d1b7763182","isMergeCommit":false,"messageTitle":"Fix new interactions not being added to `Person`","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"862bd861016fd4b888b2e8b04e2e796a28b883ad","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zhyuhan/fix-adding-interactions","messageBody":"Fix new interactions not being added to `Person`","fileTypesAndContributionMap":{}},{"hash":"2a5534785ec93e3d4f1bd1b479308d7657f0bfb6","isMergeCommit":false,"messageTitle":"Simplify `view` command parsing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":9}}},{"hash":"dbed4a8294e110d1e2b832b8581c5a44df7f8ef2","isMergeCommit":false,"messageTitle":"Add some basic tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0},"test-code":{"insertions":8,"deletions":0}}},{"hash":"b7df651a6e7116c731f82460ef6502bf186904d3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from dickongwd/add-leads","messageBody":"Add hot, warm and cold leads","fileTypesAndContributionMap":{}},{"hash":"27d2f339d613806598778d7416f84c4afda5793e","isMergeCommit":false,"messageTitle":"Update docs for `view` command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2023-10-23","commitResults":[{"hash":"02a6ab5f03deaae1d501a05acf7e6b4e26113c8b","isMergeCommit":true,"messageTitle":"Merge pull request #52 from MagnificentCreature/master","messageBody":"Fix interaction display","fileTypesAndContributionMap":{}}]}],"dickongwd":[{"date":"2023-10-03","commitResults":[{"hash":"001713ba1fe3b683fdc3a68c6eba39fe5b382b00","isMergeCommit":false,"messageTitle":"Add base user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":109,"deletions":138}}},{"hash":"62988653c826d8ff71f7fba494022270e2599fa9","isMergeCommit":false,"messageTitle":"Add Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"071c371b39d8e0fc51e5d9f567a119acb24e93fc","isMergeCommit":false,"messageTitle":"Update Ui mockup as a file and replace references of AB3 Ui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"b5344f724d47185e542e9ff784534d7eaf0dcc2b","isMergeCommit":false,"messageTitle":"Update team members in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":27}}},{"hash":"75f0196416d560af1e4e579040cee3d56f2b5c13","isMergeCommit":false,"messageTitle":"Update product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"90decd2d3f3f42c9e2c6b9778ea8af2e0b95d0f0","isMergeCommit":false,"messageTitle":"Update CI status link and remove code coverage for AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-04","commitResults":[{"hash":"d5e57bfe24b127a65e5eff73c4cc9f41be3d5907","isMergeCommit":false,"messageTitle":"Correct image paths","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2023-10-17","commitResults":[{"hash":"fcd8b357cb6c852ccf8f88df76544a9f8299ae5e","isMergeCommit":false,"messageTitle":"Add lead member variable to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}}]},{"date":"2023-10-18","commitResults":[{"hash":"0b5276daef5e8a9f7a82bcffaaa222722e1a8435","isMergeCommit":false,"messageTitle":"Add lead component in PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":21}}},{"hash":"2ecf41be7bd0e1a03ebc1c0dbdd629ac9e72402a","isMergeCommit":false,"messageTitle":"Add support for Lead in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"3eaab25b37b5412f3fb8f054c6b12a7bd1b5b1bf","isMergeCommit":false,"messageTitle":"Add Ui support for showing leads","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":16}}},{"hash":"bbef461b8bbaf6e3189e8f9b057515bdbf250cfa","isMergeCommit":false,"messageTitle":"Add support for Lead in json storage and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":33,"deletions":12}}},{"hash":"cc353fe9986f15b6c82f80f0ef4102d1c95b00a2","isMergeCommit":false,"messageTitle":"Allow changing of lead when editing person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":18}}},{"hash":"81834a3534d12238e8d2d6d9a26de125ec9636d3","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4},"test-code":{"insertions":5,"deletions":1}}},{"hash":"30bbd72c78117e4cdb44707bf83f3adce7ba4150","isMergeCommit":false,"messageTitle":"Remove meow command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":45}}}]},{"date":"2023-10-20","commitResults":[{"hash":"b177a794b0b7bd4ef299b476d9a6488a72b4c3a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed7abd500866882f9d92b87b4a7f25be98b52916","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"209127fc82e6386ea97fed57826db6c41512fe33","isMergeCommit":false,"messageTitle":"Fix lead alignment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"c1a111b8d14f31485c8573d93415b843c7e2fe16","isMergeCommit":true,"messageTitle":"Merge pull request #44 from zhyuhan/view-client-profile","messageBody":"Implement viewing of client profiles","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lilozz2":{"docs":4,"functional-code":144,"test-code":0},"KamiliArsyad":{"docs":43,"functional-code":336,"test-code":39},"MagnificentCreature":{"docs":67,"functional-code":267,"test-code":89,"other":6},"zhyuhan":{"docs":45,"functional-code":446,"test-code":12},"dickongwd":{"docs":142,"functional-code":185,"test-code":37}},"authorContributionVariance":{"lilozz2":1627.8086,"KamiliArsyad":40701.438,"MagnificentCreature":25511.291,"zhyuhan":9859.809,"dickongwd":7232.0547},"authorDisplayNameMap":{"lilozz2":"CS2103T-F11-4 JAIR.. GOH","KamiliArsyad":"CS2103T-F11-4 ARSY..MILI","MagnificentCreature":"CS2103T-F11-4 SEAN..WANG","zhyuhan":"CS2103T-F11-4 ZHAN.. HAN","dickongwd":"CS2103T-F11-4 DICK..I DE"}} +{"authorDailyContributionsMap":{"lilozz2":[{"date":"2023-10-03","commitResults":[{"hash":"c9f08e6ec2b5b878aaac1691aba6d50294c9a641","isMergeCommit":true,"messageTitle":"Merge pull request #14 from KamiliArsyad/master","messageBody":"Update UI image and README.md to match the project","fileTypesAndContributionMap":{}},{"hash":"dcf0db29540f3b94d9f2fb6fe72acbdff90da10a","isMergeCommit":true,"messageTitle":"Merge pull request #16 from MagnificentCreature/patch-1","messageBody":"Update the DG (WIP)","fileTypesAndContributionMap":{}},{"hash":"5a257cee6eb8715cd59e846afae97a7995bcb2f4","isMergeCommit":true,"messageTitle":"Merge pull request #22 from MagnificentCreature/patch-1","messageBody":"update DG use cases (WIP)","fileTypesAndContributionMap":{}},{"hash":"0a0f7f804d85b73c5a418d7cb0c6ee3fcb42ed87","isMergeCommit":false,"messageTitle":"add more NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"f7190facc3fea213bfd4a584e3a24113f5eaf63f","isMergeCommit":true,"messageTitle":"Merge pull request #24 from dickongwd/tidy-documentation","messageBody":"Tidy documentation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"644e6a58c2ab2f220a1a591edaec024e8048b901","isMergeCommit":false,"messageTitle":"Added Improvements to Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0}}},{"hash":"3e65e7ca1c388712cbefbde44fe80b1b7cab2005","isMergeCommit":false,"messageTitle":"Improve menuToolBar, CommandLine \u0026 PersonList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":61}}},{"hash":"269a6b354e374ef41402d91e63cf81d3fd8b70b2","isMergeCommit":false,"messageTitle":"remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"94771f56dd7a6367e6007e671126c15c41972f86","isMergeCommit":false,"messageTitle":"change command font and box proportions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"1debf8dc526b98ffac9203a717a8f21706b29375","isMergeCommit":true,"messageTitle":"Merge pull request #50 from MagnificentCreature/help-link","messageBody":"Help-link","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"6ae3aecba092d91b3d03727f3595cea3f2961122","isMergeCommit":true,"messageTitle":"Merge pull request #49 from MagnificentCreature/fix-interactions","messageBody":"Fix-interactions","fileTypesAndContributionMap":{}}]}],"KamiliArsyad":[{"date":"2023-10-03","commitResults":[{"hash":"092da76238c656ecf5b801bd922c1ab7847280bc","isMergeCommit":false,"messageTitle":"Update UI image and README.md to match the project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":10}}},{"hash":"20f4315edd2076b967f701878f755c068b75a6be","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aeeed8686ab596db554f10a071ad5daf25207fa0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from lilozz2/add-about-us","messageBody":"Add About Us page","fileTypesAndContributionMap":{}},{"hash":"e687932bc2e211801325dd9dcf084ec2d12765b2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"962ad4ec5b65d5f5a1a6b536c3f40e7f225fd21c","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AY2324S1-CS2103T-F11-4/KamiliArsyad-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"fa398ab77aa7b71d84eabb1492e16b3acfc92a7e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from dickongwd/migrate-user-guide","messageBody":"Migrate user guide","fileTypesAndContributionMap":{}},{"hash":"9eec520ed3d1826bf1b031760ac55cd03edcb1b6","isMergeCommit":false,"messageTitle":"Update README.md to include acknoledgement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"4ffd2deb5ff8cf74603cfa21b5915fba33d37daf","isMergeCommit":true,"messageTitle":"Merge pull request #19 from AY2324S1-CS2103T-F11-4/KamiliArsyad-readme-patch","messageBody":"Update README.md to include acknoledgement","fileTypesAndContributionMap":{}},{"hash":"b75e3fa7c4769239629738899ee76367d5a0c9fb","isMergeCommit":true,"messageTitle":"Merge pull request #20 from zhyuhan/update-build-status-badge","messageBody":"Update build status badge URL","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"c7cd7c6dd2e2ed9c1cc1a802d1b270c3a9f6e215","isMergeCommit":false,"messageTitle":"Add meow command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":10}}},{"hash":"0ee1c0847febe33669e37cab1f13ba58218676f9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from KamiliArsyad/tutorial-adding-command","messageBody":"Add meow command","fileTypesAndContributionMap":{}},{"hash":"cbe26ad711b24a5c38e662305dafd6e0acd1b443","isMergeCommit":false,"messageTitle":"Add client class and package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"578c0c326cceebfd33f6d3f79ac34a34a026424b","isMergeCommit":false,"messageTitle":"Add exception package and DuplicateClientException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"0b7e6acdcb6b486bf01c231615ce8adc717c1087","isMergeCommit":false,"messageTitle":"Add ClientList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}}]},{"date":"2023-10-08","commitResults":[{"hash":"a22fda4a6559a742347101dd24f894d0008b6ba1","isMergeCommit":false,"messageTitle":"Update ClientList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":0}}},{"hash":"094c7e2a69e8456de9987e1131d3efb5a589ede6","isMergeCommit":false,"messageTitle":"Add ClientNotFoundException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"ffb1b569fef2753707337a86020e7b525e6d4d97","isMergeCommit":false,"messageTitle":"Create Client version of AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}},{"hash":"0d12ba5138644589c5f44a7a5213983874139252","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":14}}},{"hash":"2caccfd81f641087c99df6f2a0cee01e58060a92","isMergeCommit":false,"messageTitle":"Add new Client class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0}}},{"hash":"5a7aedfc7790b8e69e3d81c47559258f53a23a1d","isMergeCommit":false,"messageTitle":"Remove Client class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":46}}},{"hash":"c3f689c9f2c10d8f32b33d6e360fd87fc93ab9d0","isMergeCommit":false,"messageTitle":"Modify Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"96f3355dc909a8fc2227fe6cb55694cd80810c20","isMergeCommit":false,"messageTitle":"More person details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":0}}},{"hash":"fbf993cf15c8ad1d00cd4f282f87e044d1712356","isMergeCommit":false,"messageTitle":"Modify Person\u0027s additional fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"75fae076520b92e53678c6a098dac2fe0f8d1050","isMergeCommit":false,"messageTitle":"Add support for parsing additional fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":2}}},{"hash":"238f39c846dfd4c8da0811b30525eba55bb7d86f","isMergeCommit":false,"messageTitle":"Add optional fields in command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"8a57c77f10ac50ab17c229cff5e169633826a00f","isMergeCommit":false,"messageTitle":"Renamed Add to Create","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":38,"deletions":37},"test-code":{"insertions":7,"deletions":7}}},{"hash":"1c43ca0fc6be1b7e5a204b752e0a8a9bff5d3edd","isMergeCommit":false,"messageTitle":"Cleanup on unused progress","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":354}}}]},{"date":"2023-10-10","commitResults":[{"hash":"e2798fb22fe71a48e9fbff573fb2770f58eefda8","isMergeCommit":false,"messageTitle":"Minor change according to PR review from Yu Han and Sean","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":10,"deletions":10}}},{"hash":"e60946f3472568cc2c24b22362f9d819b6782b9e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from KamiliArsyad/client-basic-commands","messageBody":"Client basic commands","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"fbcd7a25ad7fc93fa473f874ce2634f6b39e85aa","isMergeCommit":true,"messageTitle":"Merge pull request #30 from MagnificentCreature/add-interaction","messageBody":"Add Interaction command ","fileTypesAndContributionMap":{}}]}],"MagnificentCreature":[{"date":"2023-10-03","commitResults":[{"hash":"150a6cae65216dbe3fa444f93d016ccb3339802e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":2}}},{"hash":"c99752b53664d980e18e974e57ea7541e25c82fe","isMergeCommit":false,"messageTitle":"small changes to DG (half done)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":14}}},{"hash":"a4141ce25de7cb8ebc0da9f0281fbe69baa599d2","isMergeCommit":false,"messageTitle":"update developer guide (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f6c78c8554f8e270728b8c8c11b94ffcce179525","isMergeCommit":false,"messageTitle":"update DG (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":7}}},{"hash":"7c6ec9b73cd19d7792a18be50cd95bfafe7f09d1","isMergeCommit":false,"messageTitle":"update DG use cases (WIP)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"fedc86b0bd129388240ed756cf3633eff73d3de5","isMergeCommit":false,"messageTitle":"update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":1}}},{"hash":"defb8e5e5711c14b08ae1e2bcd59da14cd11ef3c","isMergeCommit":false,"messageTitle":"update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"95b09f8feaadf47aceebd86373d98092e6c0daf2","isMergeCommit":true,"messageTitle":"Merge pull request #23 from lilozz2/edit-develper-guide","messageBody":"add more NFR","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"5ddac2f659cc2335d98e7804b24a4f3802c795ed","isMergeCommit":true,"messageTitle":"Merge pull request #27 from dickongwd/fix-image-paths","messageBody":"Correct image paths","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"d574d3066049b4804126d453db69c1167e48c002","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a26ab8d7d74e9a0b5a92063fffe706c9be396026","isMergeCommit":false,"messageTitle":"change gitignore","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":580}}},{"hash":"ef35bafa226b580d80f13cdc52938061cc6c988e","isMergeCommit":false,"messageTitle":"WIP: Add Interaction class \u0026 interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"27d2cb7012ceb6622db648b22c7ceca46efdb745","isMergeCommit":false,"messageTitle":"WIP","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":8}}},{"hash":"4120f14a85cb59ea07648677cafeb59523da94c6","isMergeCommit":false,"messageTitle":"Change Checkstyle for LineLength, interaction WIP Also change gitignore again as per @lilozz2 suggestion, the change earlier didn\u0027t seem to have done it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":5},"other":{"insertions":6,"deletions":0}}},{"hash":"3d159da897e5e223edb15ff592083074782d27f6","isMergeCommit":false,"messageTitle":"Implement InteractionCommandParser But have not tested functionality yet Changed ParserUtil to include parseInteraction Changed InteractionCommand to include interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":2}}},{"hash":"34c262d214f3e65d9b96d39259c73268c16d91b1","isMergeCommit":false,"messageTitle":"WIP Interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":7}}},{"hash":"37d16ca2511130d884d9c2fcda24a39510c82597","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"42d60be33da72d2a2856ece9ddaca27f59111115","isMergeCommit":false,"messageTitle":"Implement core set of logic for interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":8}}},{"hash":"02b59efc12c92a073f55c0689a10a6457249a564","isMergeCommit":false,"messageTitle":"Bug fixes for interaction command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}}]},{"date":"2023-10-12","commitResults":[{"hash":"7ebb5df08306b95f5ce1e7c56794c8b40edcf0da","isMergeCommit":false,"messageTitle":"Bug fixes Fix the issue of running \"interaction 1 I am interested in this product\" which will throw a formatting error because the preamble is read as \"1 I am interested in this product\" and the index cannot be parsed.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"3ec357beecbffccb22057d7f3cd22147468202d1","isMergeCommit":false,"messageTitle":"Added the change @KamiliArsyad suggested","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-14","commitResults":[{"hash":"6e5e55aa98eb754700b53e5ced6c4c8690063976","isMergeCommit":false,"messageTitle":"Add tests and fixes by @lilozz2 @KamiliArsyad","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":13},"test-code":{"insertions":89,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"0472c06e63664b44235daa9e0dc5427a074af754","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2324S1-CS2103T-F11-4:master","messageBody":"Master","fileTypesAndContributionMap":{}},{"hash":"8000cbd9c992603e5b3084b4bf26fb5d13e06bce","isMergeCommit":false,"messageTitle":"fix #42 and #41","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9}}},{"hash":"49398cd765fc337b21f384649edc065d95335858","isMergeCommit":false,"messageTitle":"Change HelpWindow link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-23","commitResults":[{"hash":"aea1d31ed74b2c3f3f91f4a297083d58b1948a5a","isMergeCommit":false,"messageTitle":"Fix nit by @zhyuhan","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3b97ea2ceed55f53e75ec54f76e9c47048180d3e","isMergeCommit":false,"messageTitle":"Comment changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"fe77160931c62b5f483344a777c564fa7522af20","isMergeCommit":false,"messageTitle":"Fix interaction display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"3e4024202e45d8276b53af964864d134295a5d95","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2324S1-CS2103T-F11-4/tp into fix-interactions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c417f1fc596db17d4b8cee1e300569880bca285b","isMergeCommit":false,"messageTitle":"Add \"CLOSED\" interaction outcome","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2023-10-24","commitResults":[{"hash":"e11c9f6309d98647f7f5edcdead7b30bd6244536","isMergeCommit":true,"messageTitle":"Merge pull request #65 from MagnificentCreature/add-closed","messageBody":"Add \"CLOSED\" interaction outcome","fileTypesAndContributionMap":{}}]}],"zhyuhan":[{"date":"2023-10-03","commitResults":[{"hash":"fbd90ebeb6298e4963440afccee67c449361811b","isMergeCommit":false,"messageTitle":"Add team PPPs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":0}}},{"hash":"48ea9cd8eb1efde30c9dd998bc52550d707c522e","isMergeCommit":false,"messageTitle":"Fix PPP project name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"75d36e273c83b4d650c7fbcbe26da349b11cf33d","isMergeCommit":true,"messageTitle":"Merge pull request #13 from zhyuhan/add-ppps","messageBody":"Add team PPPs","fileTypesAndContributionMap":{}},{"hash":"22378b0af7018085fd91c7f04e5143d6991cb560","isMergeCommit":false,"messageTitle":"Update build status badge URL","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d565e4ad002c6a9b13ae84def5043f625bb4ba39","isMergeCommit":true,"messageTitle":"Merge pull request #21 from dickongwd/update-jekyll-config","messageBody":"Update jekyll config","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"01534505714153ae55f6f95ba5564b97cf58d6bd","isMergeCommit":true,"messageTitle":"Merge pull request #38 from lilozz2/improve-ui","messageBody":"Improve UI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"8d0d19fbecef9512a7ab843bff46db1df3271e67","isMergeCommit":true,"messageTitle":"Merge pull request #35 from dickongwd/remove-meow","messageBody":"Remove meow command","fileTypesAndContributionMap":{}},{"hash":"77a499eb0b7efd1d47b72d046bb4b00f2569cf8e","isMergeCommit":false,"messageTitle":"Add detailed client profile view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":313,"deletions":64}}},{"hash":"78e4dbe0afc34e35bdcd452fe7cf5bcccfc2d66d","isMergeCommit":false,"messageTitle":"Extract `selectedPerson` logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"6c952496f71394f8369b8d57eb44339168fa0f4e","isMergeCommit":false,"messageTitle":"Add `view` command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":0}}},{"hash":"e19623ff09eb571f612487eaf04bf4c5a64bd888","isMergeCommit":false,"messageTitle":"Fix test stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"22115a1ccc48e570604256491138d1d1b7763182","isMergeCommit":false,"messageTitle":"Fix new interactions not being added to `Person`","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"862bd861016fd4b888b2e8b04e2e796a28b883ad","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zhyuhan/fix-adding-interactions","messageBody":"Fix new interactions not being added to `Person`","fileTypesAndContributionMap":{}},{"hash":"2a5534785ec93e3d4f1bd1b479308d7657f0bfb6","isMergeCommit":false,"messageTitle":"Simplify `view` command parsing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":9}}},{"hash":"dbed4a8294e110d1e2b832b8581c5a44df7f8ef2","isMergeCommit":false,"messageTitle":"Add some basic tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0},"test-code":{"insertions":8,"deletions":0}}},{"hash":"b7df651a6e7116c731f82460ef6502bf186904d3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from dickongwd/add-leads","messageBody":"Add hot, warm and cold leads","fileTypesAndContributionMap":{}},{"hash":"27d2f339d613806598778d7416f84c4afda5793e","isMergeCommit":false,"messageTitle":"Update docs for `view` command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2023-10-23","commitResults":[{"hash":"02a6ab5f03deaae1d501a05acf7e6b4e26113c8b","isMergeCommit":true,"messageTitle":"Merge pull request #52 from MagnificentCreature/master","messageBody":"Fix interaction display","fileTypesAndContributionMap":{}}]}],"dickongwd":[{"date":"2023-10-03","commitResults":[{"hash":"001713ba1fe3b683fdc3a68c6eba39fe5b382b00","isMergeCommit":false,"messageTitle":"Add base user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":109,"deletions":138}}},{"hash":"62988653c826d8ff71f7fba494022270e2599fa9","isMergeCommit":false,"messageTitle":"Add Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"071c371b39d8e0fc51e5d9f567a119acb24e93fc","isMergeCommit":false,"messageTitle":"Update Ui mockup as a file and replace references of AB3 Ui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"b5344f724d47185e542e9ff784534d7eaf0dcc2b","isMergeCommit":false,"messageTitle":"Update team members in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":27}}},{"hash":"75f0196416d560af1e4e579040cee3d56f2b5c13","isMergeCommit":false,"messageTitle":"Update product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"90decd2d3f3f42c9e2c6b9778ea8af2e0b95d0f0","isMergeCommit":false,"messageTitle":"Update CI status link and remove code coverage for AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-04","commitResults":[{"hash":"d5e57bfe24b127a65e5eff73c4cc9f41be3d5907","isMergeCommit":false,"messageTitle":"Correct image paths","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2023-10-17","commitResults":[{"hash":"fcd8b357cb6c852ccf8f88df76544a9f8299ae5e","isMergeCommit":false,"messageTitle":"Add lead member variable to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}}]},{"date":"2023-10-18","commitResults":[{"hash":"0b5276daef5e8a9f7a82bcffaaa222722e1a8435","isMergeCommit":false,"messageTitle":"Add lead component in PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":21}}},{"hash":"2ecf41be7bd0e1a03ebc1c0dbdd629ac9e72402a","isMergeCommit":false,"messageTitle":"Add support for Lead in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"3eaab25b37b5412f3fb8f054c6b12a7bd1b5b1bf","isMergeCommit":false,"messageTitle":"Add Ui support for showing leads","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":16}}},{"hash":"bbef461b8bbaf6e3189e8f9b057515bdbf250cfa","isMergeCommit":false,"messageTitle":"Add support for Lead in json storage and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":33,"deletions":12}}},{"hash":"cc353fe9986f15b6c82f80f0ef4102d1c95b00a2","isMergeCommit":false,"messageTitle":"Allow changing of lead when editing person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":18}}},{"hash":"81834a3534d12238e8d2d6d9a26de125ec9636d3","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4},"test-code":{"insertions":5,"deletions":1}}},{"hash":"30bbd72c78117e4cdb44707bf83f3adce7ba4150","isMergeCommit":false,"messageTitle":"Remove meow command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":45}}}]},{"date":"2023-10-20","commitResults":[{"hash":"b177a794b0b7bd4ef299b476d9a6488a72b4c3a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed7abd500866882f9d92b87b4a7f25be98b52916","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"209127fc82e6386ea97fed57826db6c41512fe33","isMergeCommit":false,"messageTitle":"Fix lead alignment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"c1a111b8d14f31485c8573d93415b843c7e2fe16","isMergeCommit":true,"messageTitle":"Merge pull request #44 from zhyuhan/view-client-profile","messageBody":"Implement viewing of client profiles","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lilozz2":{"docs":4,"functional-code":144,"test-code":0},"KamiliArsyad":{"docs":43,"functional-code":336,"test-code":39},"MagnificentCreature":{"docs":67,"functional-code":268,"test-code":89,"other":6},"zhyuhan":{"docs":45,"functional-code":446,"test-code":12},"dickongwd":{"docs":142,"functional-code":185,"test-code":37}},"authorContributionVariance":{"lilozz2":1580.1066,"KamiliArsyad":39526.473,"MagnificentCreature":24775.527,"zhyuhan":9572.126,"dickongwd":7029.2573},"authorDisplayNameMap":{"lilozz2":"CS2103T-F11-4 JAIR.. GOH","KamiliArsyad":"CS2103T-F11-4 ARSY..MILI","MagnificentCreature":"CS2103T-F11-4 SEAN..WANG","zhyuhan":"CS2103T-F11-4 ZHAN.. HAN","dickongwd":"CS2103T-F11-4 DICK..I DE"}} diff --git a/AY2324S1-CS2103T-F12-2_tp_master/authorship.json b/AY2324S1-CS2103T-F12-2_tp_master/authorship.json index c113cbe5..569c4a93 100644 --- a/AY2324S1-CS2103T-F12-2_tp_master/authorship.json +++ b/AY2324S1-CS2103T-F12-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F12-2/tp/actions)","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"### StudentConnect","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"* This project was created for the **CS2103T Software Engineering module**. \u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"* It is named `StudentConnect` because it was created to connect students in CS2103T and help with the formation of teams.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"* For the detailed documentation of this project, see the **[StudentConnect Product Website (to be created)](https://github.com/AY2324S1-CS2103T-F12-2/tp)**.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"* Value proposition: \u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":" * `StudentConnect` helps with the **formation of project teams for CS2103T**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" * `StudentConnect` **stores** and **organises students’ contact details, and project group**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" * Students can **easily search for the profiles of other students** and **connect with potential teammates**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":" * It offers tools for **tracking project progress/deadlines**, ensuring that the group stays on task","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" * There is no other application like `StudentConnect` for **CS2103T students**","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"### Other Links","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"To be added in the future.","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"### Acknowledgements","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"wnchan":19,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" testImplementation \u0027org.testfx:testfx-core:4.0.16-alpha\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" testImplementation \u0027org.testfx:testfx-junit5:4.0.16-alpha\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"neyapraveen"},"content":" archiveFileName \u003d \u0027studentconnect.jar\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"neyapraveen":1,"maj0-0":2,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"### Pearlynn Toh","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"\u003cimg src\u003d\"images/pearlynnt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"[[github](https://github.com/PearlynnT)]","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"[[portfolio](team/pearlynnt.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"* Role: Team Lead, Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":"### Yik Leong Loo","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":"\u003cimg src\u003d\"images/bearypop.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"[[github](https://github.com/Bearypop)]","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"[[portfolio](team/bearypop.md)]","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"* Role: Developer","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"* Responsibilities: Testing + Integration","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":"### Chan Wei Ning","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":"\u003cimg src\u003d\"images/wnchan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":"[[github](https://github.com/wnchan)]","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":"[[portfolio](team/wnchan.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":"### Alnaseri, Majedah Talal M","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":"\u003cimg src\u003d\"images/maj0-0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":"[[github](https://github.com/maj0-0)]","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":"[[portfolio](team/maj0-0.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":"* Responsibilities: Deliverables \u0026 Deadlines + Scheduling \u0026 Tracking","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":"### Dewangan Neya Praveen","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":"\u003cimg src\u003d\"images/neyapraveen.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"neyapraveen"},"content":"[[github](http://github.com/neyapraveen)]","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"neyapraveen"},"content":"[[portfolio](team/neyapraveen.md)]","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"neyapraveen"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Bearypop":6,"neyapraveen":5,"wnchan":5,"maj0-0":5,"PearlynnT":5,"-":35}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2023-10-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2023-10-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2023-10-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"neyapraveen"},"content":"* CS2103T student","lastModifiedDate":"2023-10-06"},{"lineNumber":261,"author":{"gitId":"neyapraveen"},"content":"* Face challenges in finding like-minded students for group projects","lastModifiedDate":"2023-10-06"},{"lineNumber":262,"author":{"gitId":"neyapraveen"},"content":"* Busy academic schedule","lastModifiedDate":"2023-10-06"},{"lineNumber":263,"author":{"gitId":"neyapraveen"},"content":"* Need assistance in keeping track of project deadlines, tasks, and progress","lastModifiedDate":"2023-10-06"},{"lineNumber":264,"author":{"gitId":"neyapraveen"},"content":"* Can type fast","lastModifiedDate":"2023-10-06"},{"lineNumber":265,"author":{"gitId":"neyapraveen"},"content":"* Prefer desktop apps over other types","lastModifiedDate":"2023-10-06"},{"lineNumber":266,"author":{"gitId":"neyapraveen"},"content":"* Prefers typing to mouse interactions","lastModifiedDate":"2023-10-06"},{"lineNumber":267,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":268,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"neyapraveen"},"content":"**Value proposition**: StudentConnect stores and organises students’ contact details, and project group.","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"neyapraveen"},"content":"Students can easily search for the profiles of other students and connect with potential teammates.","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"neyapraveen"},"content":"This streamlines the process of forming project teams. It also offers tools for tracking project","lastModifiedDate":"2023-10-06"},{"lineNumber":272,"author":{"gitId":"neyapraveen"},"content":"progress/deadlines, ensuring that the group stays on task. There is no other application quite like StudentConnect for","lastModifiedDate":"2023-10-06"},{"lineNumber":273,"author":{"gitId":"neyapraveen"},"content":"CS2103T students.","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"PearlynnT"},"content":"|----------|-----------|-----------------------------------------------------|-------------------------------------------|","lastModifiedDate":"2023-10-12"},{"lineNumber":283,"author":{"gitId":"PearlynnT"},"content":"| `* * *` | student | add my personal details to the system | get other students to learn more about me |","lastModifiedDate":"2023-10-12"},{"lineNumber":284,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | view the rest of the students in the course | see my options for choosing teammates |","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | see the other student’s name, major, basic info etc | make informed decisions |","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"PearlynnT"},"content":"| `* * * ` | student | customise and update my profile details | ensure that my profile is up to date |","lastModifiedDate":"2023-10-12"},{"lineNumber":287,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | remove my personal details from the system | stop using the application |","lastModifiedDate":"2023-10-06"},{"lineNumber":288,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | user | exit the app | close the app |","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"neyapraveen"},"content":"(For all use cases below, the System is `StudentConnect` and the Actor is the `student`, unless specified otherwise)","lastModifiedDate":"2023-10-06"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"neyapraveen"},"content":"**Use case: List students**","lastModifiedDate":"2023-10-06"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to list students","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect shows a list of students","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"neyapraveen"},"content":"**Use case: Adding a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":313,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":314,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":315,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":316,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to add their personal information","lastModifiedDate":"2023-10-06"},{"lineNumber":317,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect adds the student’s information into the list","lastModifiedDate":"2023-10-06"},{"lineNumber":318,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":319,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":320,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":321,"author":{"gitId":"neyapraveen"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":322,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":323,"author":{"gitId":"neyapraveen"},"content":"* 2a. Invalid input","lastModifiedDate":"2023-10-06"},{"lineNumber":324,"author":{"gitId":"neyapraveen"},"content":" * StudentConnect displays error message","lastModifiedDate":"2023-10-06"},{"lineNumber":325,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":326,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":327,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":328,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Find a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":329,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":330,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":331,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":332,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to find students with a keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":333,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect shows a list of students whose name(s) contain the keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":334,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":335,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":336,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":337,"author":{"gitId":"neyapraveen"},"content":"**Extensions:**","lastModifiedDate":"2023-10-06"},{"lineNumber":338,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":339,"author":{"gitId":"neyapraveen"},"content":"* 2a. The given keyword does not match any of the students’ names.","lastModifiedDate":"2023-10-06"},{"lineNumber":340,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":341,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":342,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":343,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Delete a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":344,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":345,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":346,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":347,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to delete a specific student on the list by email","lastModifiedDate":"2023-10-06"},{"lineNumber":348,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect deletes the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":349,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":350,"author":{"gitId":"neyapraveen"},"content":" Use case ends","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":352,"author":{"gitId":"neyapraveen"},"content":"**Extensions:**","lastModifiedDate":"2023-10-06"},{"lineNumber":353,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":354,"author":{"gitId":"neyapraveen"},"content":"* 1a. The given email is invalid","lastModifiedDate":"2023-10-06"},{"lineNumber":355,"author":{"gitId":"neyapraveen"},"content":" * 1a1. StudentConnect shows an error message.","lastModifiedDate":"2023-10-06"},{"lineNumber":356,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":357,"author":{"gitId":"neyapraveen"},"content":" Use case ends","lastModifiedDate":"2023-10-06"},{"lineNumber":358,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":359,"author":{"gitId":"PearlynnT"},"content":"**Use Case: Edit a student**","lastModifiedDate":"2023-10-12"},{"lineNumber":360,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":361,"author":{"gitId":"PearlynnT"},"content":"**MSS**","lastModifiedDate":"2023-10-12"},{"lineNumber":362,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":363,"author":{"gitId":"PearlynnT"},"content":"1. Student requests to update a specific student’s details on the list by email.","lastModifiedDate":"2023-10-12"},{"lineNumber":364,"author":{"gitId":"PearlynnT"},"content":"2. StudentConnect shows a list of students containing the student with the updated details.","lastModifiedDate":"2023-10-12"},{"lineNumber":365,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":366,"author":{"gitId":"PearlynnT"},"content":" Use case ends.","lastModifiedDate":"2023-10-12"},{"lineNumber":367,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":368,"author":{"gitId":"PearlynnT"},"content":"**Extensions:**","lastModifiedDate":"2023-10-12"},{"lineNumber":369,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":370,"author":{"gitId":"PearlynnT"},"content":"* 1a. The given email is invalid","lastModifiedDate":"2023-10-12"},{"lineNumber":371,"author":{"gitId":"PearlynnT"},"content":" * 1a1. StudentConnect shows an error message.","lastModifiedDate":"2023-10-12"},{"lineNumber":372,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":373,"author":{"gitId":"PearlynnT"},"content":" Use case ends.","lastModifiedDate":"2023-10-12"},{"lineNumber":374,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":375,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Exit the app**","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":378,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":379,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to delete the app by typing “exit”.","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect displays the goodbye message.","lastModifiedDate":"2023-10-06"},{"lineNumber":381,"author":{"gitId":"neyapraveen"},"content":"3. StudentConnect closes.","lastModifiedDate":"2023-10-06"},{"lineNumber":382,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":383,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"neyapraveen"},"content":"1. Should work on any mainstream OS as long as it has Java `11` or above installed.","lastModifiedDate":"2023-10-06"},{"lineNumber":393,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"neyapraveen"},"content":"3. A student with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2023-10-06"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"neyapraveen"},"content":"* **CS2103T**: NUS Software Engineering Course","lastModifiedDate":"2023-10-06"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"neyapraveen"},"content":" 1. Test case: `delete alexy@u.nus.edu`\u003cbr\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":438,"author":{"gitId":"neyapraveen"},"content":" Expected: Contact with above email deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2023-10-06"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"neyapraveen"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete abc@gmail.com`, `delete 1`\u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"neyapraveen":86,"PearlynnT":19,"-":349}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"title: StudentConnect User Guide","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"StudentConnect is a solution for hassle-free team formation for students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":" {to be added}","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"2. Download the latest `studentconnect.jar` from [here]().","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar studentconnect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" * `list` : Lists all students.","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":" * `add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I love programming in my free time t/02 17 20 sm/https://www.linkedin.com/in/john-doe-123456789` : Adds a student named `John Doe` to the StudentConnect system.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":" * `delete [email]` : Deletes the student with the corresponding email.","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" * `clear` : Deletes all students.","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" e.g. `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":"### Adding a student : `add`","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":"Adds a student to the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"maj0-0"},"content":"Format: `add n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION t/TUTORIALS sm/SOCIALMEDIA`","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":"A student can include multiple tutorial groups they are interested in","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"maj0-0"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"maj0-0"},"content":"A student can have any number of social media links (including 0)","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":"* `add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I’m a Frontend Developer t/6 19 sm/https://www.linkedin.com/in/john-doe-123456789`","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"maj0-0"},"content":"* `add n/Betsy Crowe m/Computer Science y/2 e/betsycrowe@u.nus.edu d/I’m adept at Backend technologies t/5 sm/`","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":"* Name: Full names with alphabetical characters","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":"* Major: Valid major names at NUS","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":"* Year: Numeric year level","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"wnchan"},"content":"* Email: Valid email address ending in “@u.nus.edu”","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"wnchan"},"content":"* Description: Maximum 150 characters","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"maj0-0"},"content":"* Tutorials: Integers between 1 and 22 inclusive, each seperated by a space","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wnchan"},"content":"* Social Media Link: Valid URL format to social media account (optional to include)","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"wnchan"},"content":"* GUI: New student entry added in the main student list","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":"* Message: “Details added successfully! New student added: (details of new student)”","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"wnchan"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":"* Message: \"Invalid command format! add: Adds a person to StudentConnect. \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":"Parameters: n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION t/TUTORIALS sm/SOCIAL_MEDIA_LINK \u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":"Example: add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I love programming in my free time\u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":"t/02 17 20 sm/https://www.linkedin.com/in/john-doe-123456789\";","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":"Mockup of add feature (Success): \u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":"![Add feature](images/add.png)","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":"### Listing all students : `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":"Shows a list of all students in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"maj0-0"},"content":"* GUI: List of all student entries in the system","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"maj0-0"},"content":"* Message: “Viewing all students”","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":"* Message: “Error: Unable to retrieve student entries. Please try again.”","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"maj0-0"},"content":"![sample result for \u0027list\u0027](images/list.png)","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"maj0-0"},"content":"Edits an existing student in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"maj0-0"},"content":"Format: `edit EMAIL [n/NAME] [m/MAJOR] [y/YEAR] [e/EMAIL] [d/DESCRIPTION] [t/TUTORIALS] [sm/SOCIALMEDIA]…​`","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":"* Edits the student with the specified EMAIL.","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"maj0-0"},"content":"* When editing tutorials, the existing tutorials of the student will be removed i.e. adding of tutorials is not cumulative.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":"* When editing social media, the existing social media of the student will be removed i.e. adding of social media is not cumulative.","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":"* You can remove all the student\u0027s social media by typing `sm/` without","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" specifying any social media after it.","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":"* `edit johnd@u.nus.edu y/3 e/johndoe@u.nus.edu` Edits the year and email address of the student with the email `johnd@u.nus.edu` to be `3` and `johndoe@u.nus.edu` respectively.","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PearlynnT"},"content":"* `edit betsycrowe@u.nus.edu n/Betsy Crower sm/` Edits the name of the student with the email `betsycrowe@u.nus.edu` to be `Betsy Crower` and clears all existing social media.","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PearlynnT"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"PearlynnT"},"content":"* EMAIL: a previously registered email address ending in “@u.nus.edu”","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":"* GUI: Student details updated in the student list.","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":"* Message: “Details updated successfully!”","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: Email not found.”","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: None of the optional fields provided. Give at least one.”","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"maj0-0"},"content":"![sample result for \u0027edit\u0027](images/edit.png)","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":"### Finding a student by name: `find`","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":"Finds student(s) whose name(s) contain any of the given keywords.","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"maj0-0"},"content":"* The search is case-insensitive. e.g. `john` will match `John`","lastModifiedDate":"2023-10-05"},{"lineNumber":167,"author":{"gitId":"PearlynnT"},"content":"* The order of the keywords does not matter. e.g. `John Doe` will match `Doe John`","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":"* Partial words can be matched. e.g. `John` will match `Johnny`","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" e.g. `John Crowe` will return `John Doe`, `Betsy Crowe`","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":"* `find John` returns `john`, `John Doe` and `Johnny Wee`","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"PearlynnT"},"content":"* `find john betsy` returns `John Doe`, `Betsy Crowe`\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"PearlynnT"},"content":"* GUI: List of all student entries whose name(s) match the keyword(s) in the system","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: No keyword(s) provided.”","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: Unable to find students with the given keyword(s).”","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"PearlynnT"},"content":" ![result for \u0027find alex\u0027](images/findAlexResult.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"neyapraveen"},"content":"Deletes a specific student and all personal details based on email.","lastModifiedDate":"2023-10-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":"Format: `delete EMAIL`","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"neyapraveen"},"content":"* Deletes the person with the specified `EMAIL`.","lastModifiedDate":"2023-10-06"},{"lineNumber":192,"author":{"gitId":"neyapraveen"},"content":"* The index refers to the email number shown in the displayed person list.","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"neyapraveen"},"content":"* The email must be registered in the system.","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"neyapraveen"},"content":"* `list` followed by `delete alexy@u.nus.edu` deletes Alex Yeo from the system.","lastModifiedDate":"2023-10-06"},{"lineNumber":197,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":198,"author":{"gitId":"neyapraveen"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"PearlynnT"},"content":"* EMAIL: a previously registered email address ending in `u.nus.edu`","lastModifiedDate":"2023-10-12"},{"lineNumber":200,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":201,"author":{"gitId":"neyapraveen"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-06"},{"lineNumber":202,"author":{"gitId":"neyapraveen"},"content":"* GUI: Student details removed from student list.","lastModifiedDate":"2023-10-06"},{"lineNumber":203,"author":{"gitId":"neyapraveen"},"content":"* Message: `Person deleted successfully!`","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"neyapraveen"},"content":" ![Delete feature](images/delete.png)","lastModifiedDate":"2023-10-06"},{"lineNumber":205,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":206,"author":{"gitId":"neyapraveen"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-06"},{"lineNumber":207,"author":{"gitId":"neyapraveen"},"content":"* Message: `Error! Email not found!`","lastModifiedDate":"2023-10-06"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"maj0-0"},"content":"Clears all entries from the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"maj0-0"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"maj0-0"},"content":"* GUI: All students\u0027 details are removed from student list.","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"maj0-0"},"content":"* Message: `All student data has been cleared`","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"maj0-0"},"content":" ![Clear feature](images/clear.png)","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"PearlynnT"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":227,"author":{"gitId":"Bearypop"},"content":"* GUI: Application window closes.","lastModifiedDate":"2023-10-02"},{"lineNumber":228,"author":{"gitId":"maj0-0"},"content":"* Message (before closing): `Thank you for using StudentConnect! Exiting the application now…`","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":230,"author":{"gitId":"PearlynnT"},"content":"Expected Output(Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":"* Message: `Error: Exiting the program failed.`","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":233,"author":{"gitId":"Bearypop"},"content":"![Exit](images/exit.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":234,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":"Students\u0027 data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":241,"author":{"gitId":"maj0-0"},"content":"Students\u0027 data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":244,"author":{"gitId":"maj0-0"},"content":"If your changes to the data file makes its format invalid, StudentConnect will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"maj0-0"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous StudentConnect home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"maj0-0"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"maj0-0"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":270,"author":{"gitId":"maj0-0"},"content":"| **Add** | `add n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION sm/SOCIALMEDIA` \u003cbr\u003e e.g., `add n/Betsy Crowe m/Computer Science y/2 e/betsycrowe@u.nus.edu d/I’m adept at Backend technologies` |","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"maj0-0"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2023-10-05"},{"lineNumber":272,"author":{"gitId":"maj0-0"},"content":"| **Delete** | `delete EMAIL`\u003cbr\u003e e.g., `delete betsycrowe@u.nus.edu` |","lastModifiedDate":"2023-10-05"},{"lineNumber":273,"author":{"gitId":"maj0-0"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"maj0-0"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2023-10-05"},{"lineNumber":275,"author":{"gitId":"maj0-0"},"content":"| **List** | `list` |","lastModifiedDate":"2023-10-05"},{"lineNumber":276,"author":{"gitId":"Bearypop"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"maj0-0"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"neyapraveen":16,"Bearypop":6,"wnchan":21,"maj0-0":57,"PearlynnT":37,"-":140}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"maj0-0"},"content":" content: \"StudentConnect\";","lastModifiedDate":"2023-10-05"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"maj0-0":1,"-":293}},{"path":"docs/_sass/minima/skins/classic.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@charset \"utf-8\";","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"$brand-color: #828282 !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"$brand-color-light: lighten($brand-color, 40%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"$brand-color-dark: darken($brand-color, 25%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"$text-color: #111 !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"$background-color: #fdfdfd !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"$code-background-color: #eef !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"$link-base-color: #111754 !default;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"$link-visited-color: darken($link-base-color, 15%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"$table-text-color: lighten($text-color, 18%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"$table-zebra-color: lighten($brand-color, 46%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"$table-header-bg-color: lighten($brand-color, 43%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"$table-header-border: lighten($brand-color, 36%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"$table-border-color: $brand-color-light !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"// Syntax highlighting styles should be adjusted appropriately for every \"skin\"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"// ----------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .c { color: #998; font-style: italic } // Comment","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .err { color: #a61717; background-color: #e3d2d2 } // Error","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .k { font-weight: bold } // Keyword","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .o { font-weight: bold } // Operator","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .cm { color: #998; font-style: italic } // Comment.Multiline","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .cp { color: #999; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .c1 { color: #998; font-style: italic } // Comment.Single","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .gd { color: #000; background-color: #fdd } // Generic.Deleted","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .ge { font-style: italic } // Generic.Emph","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .gr { color: #a00 } // Generic.Error","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .gh { color: #999 } // Generic.Heading","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .gi { color: #000; background-color: #dfd } // Generic.Inserted","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .go { color: #888 } // Generic.Output","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .gp { color: #555 } // Generic.Prompt","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .gs { font-weight: bold } // Generic.Strong","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .gu { color: #aaa } // Generic.Subheading","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .gt { color: #a00 } // Generic.Traceback","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .kc { font-weight: bold } // Keyword.Constant","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .kd { font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .kp { font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .kr { font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .kt { color: #458; font-weight: bold } // Keyword.Type","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .m { color: #099 } // Literal.Number","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .s { color: #d14 } // Literal.String","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .na { color: #008080 } // Name.Attribute","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .nb { color: #0086B3 } // Name.Builtin","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .nc { color: #458; font-weight: bold } // Name.Class","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .no { color: #008080 } // Name.Constant","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .ni { color: #800080 } // Name.Entity","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .ne { color: #900; font-weight: bold } // Name.Exception","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .nf { color: #900; font-weight: bold } // Name.Function","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .nn { color: #555 } // Name.Namespace","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .nt { color: #000080 } // Name.Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .nv { color: #008080 } // Name.Variable","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .ow { font-weight: bold } // Operator.Word","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .w { color: #bbb } // Text.Whitespace","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .mf { color: #099 } // Literal.Number.Float","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .mh { color: #099 } // Literal.Number.Hex","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .mi { color: #099 } // Literal.Number.Integer","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .mo { color: #099 } // Literal.Number.Oct","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sb { color: #d14 } // Literal.String.Backtick","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .sc { color: #d14 } // Literal.String.Char","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .sd { color: #d14 } // Literal.String.Doc","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .s2 { color: #d14 } // Literal.String.Double","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .se { color: #d14 } // Literal.String.Escape","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .sh { color: #d14 } // Literal.String.Heredoc","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .si { color: #d14 } // Literal.String.Interpol","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .sx { color: #d14 } // Literal.String.Other","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .sr { color: #009926 } // Literal.String.Regex","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .s1 { color: #d14 } // Literal.String.Single","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .ss { color: #990073 } // Literal.String.Symbol","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .bp { color: #999 } // Name.Builtin.Pseudo","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .vc { color: #008080 } // Name.Variable.Class","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .vg { color: #008080 } // Name.Variable.Global","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .vi { color: #008080 } // Name.Variable.Instance","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .il { color: #099 } // Literal.Number.Integer.Long","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"maj0-0":1,"-":83}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"title: StudentConnect Pro","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"PearlynnT":1,"-":18}},{"path":"docs/team/bearypop.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"layout: page","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"title: Yik Leong\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"### Project: StudentConnect","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"StudentConnect is a solution for hassle-free team formation for students to browse profiles and connect with others for group projects. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":"### New Feature: to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"### New Feature: to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":"### Enhancements to existing features:","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"* Update the `exit` feature [\\#15](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/15)","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":"### Testing:","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":"* Update tests for `add` command [\\#57](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/57)","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"* Update tests for `delete`, `edit` commands and Logic Manager [\\#58](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/58)","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":"### Code contributed: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dbearypop\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" ","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"### Documentation:","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"* User Guide:","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" * Added documentation for the features `exit` [\\#15](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/15), [\\#61](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/61)","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":" * to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"* Developer Guide:","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":" * to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":"### Project management:","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Bearypop"},"content":"### Community:","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Bearypop"},"content":"### Tools:","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"Bearypop"},"content":"_{you can add/remove categories in the list above}_","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Bearypop":43}},{"path":"docs/team/maj0-0.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"layout: page","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"title: Majedah\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"# Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":"## Code contributed","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":"* [to be added soon]()","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"* **New Feature**: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" * What it does: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" * Highlights: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":"* Under features and command summary, the \u0027list\u0027 portion.","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"maj0-0":34}},{"path":"docs/team/neyapraveen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"neyapraveen"},"content":"---","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"neyapraveen"},"content":"layout: page","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"neyapraveen"},"content":"title: Neya\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"neyapraveen"},"content":"---","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"neyapraveen"},"content":"# Overview","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"neyapraveen"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group work.","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"neyapraveen"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"neyapraveen"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"neyapraveen"},"content":"## Code contributed","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"neyapraveen"},"content":"* [RepoSense link]()","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"neyapraveen"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":"* Changed `delete` feature to delete by email rather than by index.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":"* Changed test cases pertaining to `delete` feature","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"neyapraveen"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"neyapraveen"},"content":"* Added documentation for the feature `delete`.","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":"* Updated initial contents in DG after discussion(target user profile, value proposition, user stories, use cases, NFRs, Glossary )","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"neyapraveen"},"content":"* Under Use-cases, the feature `delete`.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"neyapraveen"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"neyapraveen"},"content":"* Did equal share of tasks assigned","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":"* to be added soon","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"neyapraveen"},"content":"* to be added soon","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"neyapraveen":33}},{"path":"docs/team/pearlynnt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"title: Pearlynn Toh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"### Project: StudentConnect","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"StudentConnect is a desktop application that stores and organises students’ contact details, and project group. Students can easily search for the profiles of other students and connect with potential teammates. This streamlines the process of forming project teams. It also offers tools for tracking project progress/deadlines, ensuring that the group stays on task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"* **Find Feature**: Added the ability to find student(s) by name","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" * What it does: allows the user to find a student by name with a partial keyword.","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" * Justification:","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" * Highlights:","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"* **Code Contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dpearlynnt\u0026breakdown\u003dfalse\u0026sort\u003dgroupTitle%20dsc\u0026sortWithin\u003dtitle\u0026since\u003d2023-09-22\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos)","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"PearlynnT":23}},{"path":"docs/team/wnchan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"# Overview","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"## Code contributed","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"* [to be added soon]()","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"* **New Feature**: Added the ability to add the student\u0027s personal details into the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" * What it does: allows the user to add their personal details into the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in the future.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"* Under features and command summary, the \u0027add\u0027 portion (including image).","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":"* Under Use-cases, the \u0027add\u0027 feature.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":"* Did equal share of tasks assigned","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":"* to be added soon","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":"* to be added soon","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"wnchan":30}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" * Ignores case, accepts a partial word match.","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"abcd\") \u003d\u003d false","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" * @param sentence cannot be null","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" * @param str cannot be null, cannot be empty, must be a single string","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" public static boolean containsIgnoreCase(String sentence, String str) {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(sentence);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(str);","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" String preppedStr \u003d str.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" checkArgument(!preppedStr.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" checkArgument(preppedStr.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" .anyMatch(word -\u003e word.toLowerCase().contains(preppedStr.toLowerCase()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"PearlynnT":28,"-":68}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_EMAIL \u003d \"The email provided is invalid\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" builder.append(\"Name: \").append(person.getName())","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" .append(\"; Major: \").append(person.getMajor())","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" .append(\"; Year: \").append(person.getYear())","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" .append(\"; Email: \").append(person.getEmail())","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" .append(\"; Description: \").append(person.getDescription())","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":" .append(\"; Tutorial: \").append(person.getTutorials())","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" .append(\"; Social Media: \").append(person.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":5,"maj0-0":1,"PearlynnT":2,"-":42}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" * Adds a person to StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to StudentConnect. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" + PREFIX_MAJOR + \"MAJOR \"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" + PREFIX_YEAR + \"YEAR \"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" + PREFIX_DESCRIPTION + \"DESCRIPTION \"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TUTORIAL]...\\n \"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_LINK + \"SOCIAL_MEDIA_LINK]...\\n\"","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" + PREFIX_MAJOR + \"Computer Science \"","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" + PREFIX_YEAR + \"2 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" + PREFIX_EMAIL + \"johnd@u.nus.edu \"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" + PREFIX_DESCRIPTION + \"I love programming in my free time \"","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" + PREFIX_TUTORIAL + \"02 17 20 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + \"https://www.linkedin.com/in/john-doe-123456789 \";","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Details added successfully! New student added: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student is already on StudentConnect as this \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" + \"email has already been used.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":18,"maj0-0":3,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_SUCCESS \u003d \"All student data has been cleared.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"maj0-0":1,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"neyapraveen"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":" + \": Deletes the person identified by the email address.\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" + \"Parameters: EMAIL\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"neyapraveen"},"content":" + \"Example: \" + COMMAND_WORD + \" alexyeoh@u.nus.edu\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"neyapraveen"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Person deleted Successfully! Deleted Person: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" public static final String MESSAGE_DELETE_EMAIL_NOT_FOUND \u003d \"Person with the provided email not found.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":" private final Email targetEmail;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" public DeleteCommand(Email targetEmail) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":" this.targetEmail \u003d targetEmail;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"neyapraveen"},"content":" // Find the person with the provided email","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"neyapraveen"},"content":" Optional\u003cPerson\u003e personToDelete \u003d model.getPersonWithEmail(targetEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"neyapraveen"},"content":" if (personToDelete.isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":" throw new CommandException(MESSAGE_DELETE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"neyapraveen"},"content":" // Delete the person from the model","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"neyapraveen"},"content":" model.deletePerson(personToDelete.get());","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete.get())));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"neyapraveen"},"content":" return targetEmail.equals(otherDeleteCommand.targetEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"neyapraveen"},"content":" .add(\"targetEmail\", targetEmail)","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"neyapraveen":18,"Bearypop":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" * Edits the details of an existing person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" + \"by the email used in the displayed person list. \"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" + \"Parameters: EMAIL (must end with u.nus.edu) \"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_MAJOR + \"MAJOR] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_YEAR + \"YEAR] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_DESCRIPTION + \"DESCRIPTION] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"maj0-0"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TUTORIAL]...\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_LINK + \"SOCIAL_MEDIA_LINK]...\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" + \"Example: \" + COMMAND_WORD + \" johnd@u.nus.edu \"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_YEAR + \"3 \"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_EMAIL + \"johndoe@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Details edited successfully! Edited Student: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student is already on StudentConnect as this \"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" + \"email has already been used.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_EMAIL_NOT_FOUND \u003d \"Student with the provided email not found.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" private final Email email;","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" * @param email of the person in the filtered person list to edit","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" public EditCommand(Email email, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" // Find the person with the provided email","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" Optional\u003cPerson\u003e personToEdit \u003d model.getPersonWithEmail(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" if (personToEdit.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"Bearypop"},"content":" throw new CommandException(MESSAGE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit.get(), editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" if (!personToEdit.get().isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" model.setPerson(personToEdit.get(), editedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" Major updatedMajor \u003d editPersonDescriptor.getMajor().orElse(personToEdit.getMajor());","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":" Year updatedYear \u003d editPersonDescriptor.getYear().orElse(personToEdit.getYear());","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" Description updatedDescription \u003d editPersonDescriptor.getDescription().orElse(personToEdit.getDescription());","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e updatedTutorials \u003d editPersonDescriptor.getTutorials()","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"maj0-0"},"content":" .orElse(personToEdit.getTutorials());","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"maj0-0"},"content":" Set\u003cSocialMediaLink\u003e updatedSocialMediaLinks \u003d editPersonDescriptor.getSocialMediaLinks()","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" .orElse(personToEdit.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" return new Person(updatedName, updatedMajor, updatedYear, updatedEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"maj0-0"},"content":" updatedDescription, updatedTutorials, updatedSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" return email.equals(otherEditCommand.email)","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" private Major major;","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":" private Year year;","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"PearlynnT"},"content":" private Description description;","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"maj0-0"},"content":" private List\u003cTutorial\u003e tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":" private Set\u003cSocialMediaLink\u003e socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" * A defensive copy of {@code socialMediaLinks} is used internally.","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"PearlynnT"},"content":" setMajor(toCopy.major);","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"PearlynnT"},"content":" setYear(toCopy.year);","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"PearlynnT"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"maj0-0"},"content":" setTutorials(toCopy.tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" setSocialMediaLinks(toCopy.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"maj0-0"},"content":" return CollectionUtil.isAnyNonNull(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"PearlynnT"},"content":" public void setMajor(Major major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cMajor\u003e getMajor() {","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(major);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"PearlynnT"},"content":" public void setYear(Year year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"PearlynnT"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cYear\u003e getYear() {","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(year);","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"PearlynnT"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"maj0-0"},"content":" public void setTutorials(List\u003cTutorial\u003e tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"maj0-0"},"content":" this.tutorials \u003d tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"maj0-0"},"content":" public Optional\u003cList\u003cTutorial\u003e\u003e getTutorials() {","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"maj0-0"},"content":" return Optional.ofNullable(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"PearlynnT"},"content":" public void setSocialMediaLinks(Set\u003cSocialMediaLink\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks \u003d (socialMediaLinks !\u003d null) ? new HashSet\u003c\u003e(socialMediaLinks) : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cSet\u003cSocialMediaLink\u003e\u003e getSocialMediaLinks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"PearlynnT"},"content":" return (socialMediaLinks !\u003d null) ? Optional.of(Collections.unmodifiableSet(socialMediaLinks))","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"PearlynnT"},"content":" : Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(major, otherEditPersonDescriptor.major)","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(year, otherEditPersonDescriptor.year)","lastModifiedDate":"2023-10-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(description, otherEditPersonDescriptor.description)","lastModifiedDate":"2023-10-15"},{"lineNumber":263,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 Objects.equals(tutorials, otherEditPersonDescriptor.tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":264,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(socialMediaLinks, otherEditPersonDescriptor.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"PearlynnT"},"content":" .add(\"major\", major)","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"PearlynnT"},"content":" .add(\"year\", year)","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"PearlynnT"},"content":" .add(\"description\", description)","lastModifiedDate":"2023-10-15"},{"lineNumber":275,"author":{"gitId":"maj0-0"},"content":" .add(\"tutorials\", tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":276,"author":{"gitId":"PearlynnT"},"content":" .add(\"social media links\", socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":280,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Bearypop":1,"wnchan":5,"maj0-0":17,"PearlynnT":72,"-":185}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Thank you for using StudentConnect!\\n\"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" + \"Exiting the application now…\";","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Bearypop":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" * Finds and lists all persons in StudentConnect whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"PearlynnT":1,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all students\";","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_FAILURE \u003d \"Error: Unable to retrieve student entries. Please try again.\";","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"maj0-0":2,"-":22}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" PREFIX_DESCRIPTION, PREFIX_TUTORIAL, PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION)","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR,","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" PREFIX_EMAIL, PREFIX_TUTORIAL, PREFIX_DESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" Major major \u003d ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" Year year \u003d ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" Description description \u003d ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e tutorialList \u003d ParserUtil.parseTutorials(argMultimap.getAllValues(PREFIX_TUTORIAL));","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinkList \u003d ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" argMultimap.getAllValues(PREFIX_SOCIAL_MEDIA_LINK));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"maj0-0"},"content":" Person person \u003d new Person(name, major, year, email, description, tutorialList, socialMediaLinkList);","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Bearypop":1,"wnchan":12,"maj0-0":7,"PearlynnT":4,"-":48}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":1,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_MAJOR \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"y/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" public static final Prefix PREFIX_TUTORIAL \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_LINK \u003d new Prefix(\"sm/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wnchan":4,"maj0-0":1,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d ParserUtil.parseEmail(args);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" return new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"neyapraveen":4,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" PREFIX_DESCRIPTION, PREFIX_TUTORIAL, PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" Email email;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getPreamble());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_MAJOR).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setMajor(ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_YEAR).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setYear(ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setDescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e tutorialsStrings \u003d argMultimap.getAllValues(PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" if (!tutorialsStrings.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e tutorialList \u003d ParserUtil.parseTutorials(tutorialsStrings);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":" editPersonDescriptor.setTutorials(tutorialList);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" parseSocialMediaLinksForEdit(argMultimap.getAllValues(PREFIX_SOCIAL_MEDIA_LINK))","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" .ifPresent(editPersonDescriptor::setSocialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" return new EditCommand(email, editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" * Parses {@code Collection\u003cString\u003e socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e}","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" * if {@code socialMediaLinks} is non-empty.","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" * If {@code socialMediaLinks} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" * {@code Set\u003cSocialMediaLink\u003e} containing zero tags.","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" private Optional\u003cSet\u003cSocialMediaLink\u003e\u003e parseSocialMediaLinksForEdit(Collection\u003cString\u003e socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" assert socialMediaLinks !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" Collection\u003cString\u003e socialMediaLinkSet \u003d socialMediaLinks.size() \u003d\u003d 1 \u0026\u0026 socialMediaLinks.contains(\"\")","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" ? Collections.emptySet() : socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" return Optional.of(ParserUtil.parseSocialMediaLinks(socialMediaLinkSet));","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"maj0-0":9,"PearlynnT":33,"-":63}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String major} into a {@code Major}.","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code major} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" public static Major parseMajor(String major) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" requireNonNull(major);","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":" String trimmedMajor \u003d major.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"wnchan"},"content":" if (!Major.isValidMajor(trimmedMajor)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wnchan"},"content":" return new Major(trimmedMajor);","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String year} into a {@code Year}.","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":" public static Year parseYear(String year) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"wnchan"},"content":" requireNonNull(year);","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"wnchan"},"content":" String trimmedYear \u003d year.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"wnchan"},"content":" if (!Year.isValidYear(trimmedYear)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"wnchan"},"content":" return new Year(trimmedYear);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"wnchan"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"maj0-0"},"content":" * Parses {@code Collection\u003cString\u003e tutorials} into a {@code List\u003cTutorial\u003e}.","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"maj0-0"},"content":" * @throws ParseException if any of the provided tutorials is invalid.","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"maj0-0"},"content":" public static List\u003cTutorial\u003e parseTutorials(Collection\u003cString\u003e tutorials) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"maj0-0"},"content":" requireNonNull(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e tutorialList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":" for (String tutorialString : tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"maj0-0"},"content":" String[] tutorialTokens \u003d tutorialString.split(\" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":" for (String token : tutorialTokens) {","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" if (!Tutorial.isValidTutorial(token)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"maj0-0"},"content":" throw new ParseException(Tutorial.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"maj0-0"},"content":" tutorialList.add(new Tutorial(token));","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" return tutorialList;","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String socialMediaLink} into a {@code SocialMediaLink}.","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code socialMediaLink} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":125,"author":{"gitId":"PearlynnT"},"content":" public static SocialMediaLink parseSocialMediaLink(String socialMediaLink) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"wnchan"},"content":" requireNonNull(socialMediaLink);","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"wnchan"},"content":" String trimmedSocialMediaLink \u003d socialMediaLink.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"wnchan"},"content":" if (!SocialMediaLink.isValidSocialMediaLink(trimmedSocialMediaLink)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"wnchan"},"content":" throw new ParseException(SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":131,"author":{"gitId":"wnchan"},"content":" return new SocialMediaLink(trimmedSocialMediaLink);","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":" * Parses {@code Collection\u003cString\u003e socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e}.","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"PearlynnT"},"content":" public static Set\u003cSocialMediaLink\u003e parseSocialMediaLinks(Collection\u003cString\u003e socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":" final Set\u003cSocialMediaLink\u003e socialMediaLinkSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" for (String socialMedia : socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinkSet.add(parseSocialMediaLink(socialMedia));","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLinkSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wnchan":43,"maj0-0":20,"PearlynnT":10,"-":73}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a person with the same identity as {@code person} exists in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" * The person must exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" * {@code person} must not already exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" * {@code target} must exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" Optional\u003cPerson\u003e getPersonWithEmail(Email email);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"PearlynnT":9,"-":82}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cPerson\u003e getPersonWithEmail(Email email) {","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":" // Iterate through the filtered list of persons","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":" if (person.getEmail().equals(email)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"PearlynnT"},"content":" return Optional.of(person);","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"PearlynnT":15,"-":148}},{"path":"src/main/java/seedu/address/model/person/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s description in StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Description {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Descriptions should not be left blank or exceed 150 characters.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^.{1,150}$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Description} with the specified description value.","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" * @param description The description value. Must not be null.","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public Description(String description) {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" value \u003d description;","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" || (other instanceof Description // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 value.equals(((Description) other).value)); // state check","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wnchan":48,"PearlynnT":6}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name should be \u0027u.nus.edu\u0027 \";","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" private static final String DOMAIN_PART_REGEX \u003d \"u\\\\.nus\\\\.edu\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_PART_REGEX;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wnchan":4,"-":68}},{"path":"src/main/java/seedu/address/model/person/Major.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s major in StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMajor(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Major {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Majors should not be blank and must be a valid\"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" + \" major offered at NUS.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" private static final String[] VALID_NUS_MAJORS \u003d {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":" \"Accounting\",","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":" \"Actuarial Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":" \"Architecture\",","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" \"Biological Sciences\",","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" \"Biomedical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" \"Business Administration\",","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" \"Business Analytics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" \"Chemical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" \"Chemistry\",","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" \"Civil Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" \"Computer Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" \"Computer Science\",","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" \"Data Science and Analytics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" \"Dentistry\",","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" \"Economics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" \"Electrical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" \"Environmental Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" \"Food Science and Technology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" \"Geography\",","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" \"Information Systems\",","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" \"Information Security\",","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" \"Law\",","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" \"Life Sciences\",","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" \"Management\",","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" \"Marketing\",","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" \"Materials Science and Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" \"Mathematics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" \"Mechanical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" \"Medicine\",","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" \"Pharmacy\",","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" \"Physics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" \"Political Science\",","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" \"Psychology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" \"Real Estate\",","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" \"Sociology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" \"Statistics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" \"Theatre Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" \"Urban Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" \"Visual Communications\",","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" };","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Major} with the specified major value.","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" * @param major The major value. Must not be null.","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"wnchan"},"content":" public Major(String major) {","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"wnchan"},"content":" requireNonNull(major);","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidMajor(major), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wnchan"},"content":" value \u003d capitaliseFirstLetterOfEachWord(major);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wnchan"},"content":" private String capitaliseFirstLetterOfEachWord(String text) {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"wnchan"},"content":" String[] words \u003d text.split(\"\\\\s\");","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wnchan"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" for (String word : words) {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"wnchan"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":" result.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1).toLowerCase());","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"wnchan"},"content":" result.append(\" \"); // Add a space between words","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":" if (result.length() \u003e 0) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"wnchan"},"content":" result.setLength(result.length() - 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wnchan"},"content":" return result.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"wnchan"},"content":" * Returns if a given string is a valid major offered at NUS.","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"wnchan"},"content":" public static boolean isValidMajor(String major) {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"wnchan"},"content":" for (String validMajor : VALID_NUS_MAJORS) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":" if (major.equalsIgnoreCase(validMajor)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"wnchan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":" || (other instanceof Major // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 value.equals(((Major) other).value)); // state check","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":114,"PearlynnT":1}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" \"Names should only contain alphabetical characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alpha}][\\\\p{Alpha} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" fullName \u003d capitaliseFirstLetterOfEachWord(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" private String capitaliseFirstLetterOfEachWord(String text) {","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" String[] words \u003d text.split(\"\\\\s\");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" for (String word : words) {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" result.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1).toLowerCase());","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" result.append(\" \"); // Add a space between words","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" if (result.length() \u003e 0) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" result.setLength(result.length() - 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" return result.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wnchan":20,"-":64}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" .anyMatch(keyword -\u003e StringUtil.containsIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"PearlynnT":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" * Represents a Person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" private final Major major;","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" private final Year year;","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" private final Description description;","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" private final Set\u003cSocialMediaLink\u003e socialMediaLinks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" private final List\u003cTutorial\u003e tutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" public Person(Name name, Major major, Year year, Email email, Description description, List\u003cTutorial\u003e tutorials,","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" requireAllNonNull(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" this.tutorials.addAll(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks.addAll(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" public Major getMajor() {","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" return major;","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":" public Year getYear() {","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" return year;","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"wnchan"},"content":" public Description getDescription() {","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"wnchan"},"content":" return description;","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":" public List\u003cTutorial\u003e getTutorials() {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"maj0-0"},"content":" return tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" public Set\u003cSocialMediaLink\u003e getSocialMediaLinks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" return Collections.unmodifiableSet(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"wnchan"},"content":" * Returns true if both persons have the same email.","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 major.equals(otherPerson.major)","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 year.equals(otherPerson.year)","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 description.equals(otherPerson.description)","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 tutorials.equals(otherPerson.tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 socialMediaLinks.equals(otherPerson.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" return Objects.hash(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"wnchan"},"content":" .add(\"major\", major)","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"wnchan"},"content":" .add(\"year\", year)","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"wnchan"},"content":" .add(\"description\", description)","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"maj0-0"},"content":" .add(\"tutorials\", tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"maj0-0"},"content":" .add(\"socialMediaLinks\", socialMediaLinks)","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":23,"maj0-0":14,"PearlynnT":8,"-":86}},{"path":"src/main/java/seedu/address/model/person/Tutorial.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":" * Represents a Student\u0027s tutorial in StudentConnect.","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTutorial(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"public class Tutorial {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tutorials should be 2-digit numbers between 01 and 22, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" + \"separated by spaces.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" public static final String VALIDATION_REGEX \u003d \"^(0[1-9]|1\\\\d|2[0-2])$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":" public final String value;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" * Constructs a {@code Tutorial} with the specified tutorial value.","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" * @param tutorial The tutorial value. Must not be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" public Tutorial(String tutorial) {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" requireNonNull(tutorial);","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" checkArgument(isValidTutorial(tutorial), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" value \u003d tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" * Returns if a given string is a valid tutorial number between 01 and 22.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":" public static boolean isValidTutorial(String tutorial) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" return tutorial.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" public String getValue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" return value;","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":" return \"T\" + value;","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" || (other instanceof Tutorial // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 value.equals(((Tutorial) other).value)); // state check","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":57}},{"path":"src/main/java/seedu/address/model/person/Year.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s numeric year level","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidYear(String)}","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Year {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" \"Year should only contain numbers, and it should be 1 digit long between 1 and 6.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-6]$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Year}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" * @param year A valid year.","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public Year(String year) {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" requireNonNull(year);","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidYear(year), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" value \u003d year;","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" * Returns true if a given string is a valid year.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" public static boolean isValidYear(String test) {","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" return true;","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" if (!(other instanceof Year)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" return false;","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" Year otherYear \u003d (Year) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" return value.equals(otherYear.value);","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":59,"PearlynnT":4}},{"path":"src/main/java/seedu/address/model/socialmedialink/SocialMediaLink.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.socialmedialink;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":" * Represents a Social Media in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidSocialMediaLink(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class SocialMediaLink {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Social media links should start with \\\"http://\\\", or \"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" + \"\\\"https://\\\", followed by one or more alphanumeric characters, dots, or hyphens in the domain name\";","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^(https?|ftp)://[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,4}(:[0-9]+)?(/.*)?$\";","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" public final String socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" * Constructs a {@code SocialMedia}.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" * @param socialMediaLink A valid social media link.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" public SocialMediaLink(String socialMediaLink) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" checkArgument(isValidSocialMediaLink(socialMediaLink), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLink \u003d socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a given string is a valid social media link.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public static boolean isValidSocialMediaLink(String test) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" if (!(other instanceof SocialMediaLink)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink otherSocialMedia \u003d (SocialMediaLink) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink.equals(otherSocialMedia.socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" return \u0027[\u0027 + socialMediaLink + \u0027]\u0027;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":62}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Alex Yeoh\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" new Email(\"alexyeoh@u.nus.edu\"), new Description(\"Friendly person\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"01\", \"20\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/alex\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Bernice Yu\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" new Email(\"berniceyu@u.nus.edu\"), new Description(\"Colleague from work\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"08\", \"19\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/bernice\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" new Email(\"charlotte@u.nus.edu\"), new Description(\"Neighbour\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"05\", \"06\", \"10\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/charlotte\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"David Li\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" new Email(\"lidavid@u.nus.edu\"), new Description(\"Family member\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"11\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/david\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" new Email(\"irfan@u.nus.edu\"), new Description(\"Classmate\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"07\", \"18\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/irfan\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" new Email(\"royb@u.nus.edu\"), new Description(\"Colleague from work\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" getTutorialList(\"11\", \"19\", \"22\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/roy\"))","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" public static List\u003cTutorial\u003e getTutorialList(String... tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" return Arrays.stream(tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" public static Set\u003cSocialMediaLink\u003e getSocialMediaLinkSet(String... strings) {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" .map(SocialMediaLink::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-14"}],"authorContributionMap":{"wnchan":16,"maj0-0":14,"PearlynnT":9,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" private final String major;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" private final String year;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" private final String description;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" private final List\u003cString\u003e tutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" private final List\u003cJsonAdaptedSocialMedia\u003e socialMediaLinks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"major\") String major,","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"year\") String year,","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" @JsonProperty(\"tutorials\") List\u003cString\u003e tutorials,","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" @JsonProperty(\"socialMediaLinks\") List\u003cJsonAdaptedSocialMedia\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" if (tutorials !\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" this.tutorials.addAll(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks !\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks.addAll(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"wnchan"},"content":" major \u003d source.getMajor().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" year \u003d source.getYear().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"wnchan"},"content":" description \u003d source.getDescription().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" tutorials.addAll(source.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::getValue)","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks.addAll(source.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" .map(JsonAdaptedSocialMedia::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" final List\u003cSocialMediaLink\u003e personSocialMediaLinks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"maj0-0"},"content":" final List\u003cTutorial\u003e personTutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" for (JsonAdaptedSocialMedia socialMediaLink : socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" personSocialMediaLinks.add(socialMediaLink.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":" if (major \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":" if (!Major.isValidMajor(major)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":" final Major modelMajor \u003d new Major(major);","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":" if (year \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":" if (!Year.isValidYear(year)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"wnchan"},"content":" final Year modelYear \u003d new Year(year);","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"wnchan"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"wnchan"},"content":" Description.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"wnchan"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"wnchan"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"maj0-0"},"content":" final List\u003cTutorial\u003e modelTutorials \u003d tutorials.stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"PearlynnT"},"content":" final Set\u003cSocialMediaLink\u003e modelSocialMediaLinks \u003d new HashSet\u003c\u003e(personSocialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"maj0-0"},"content":" return new Person(modelName, modelMajor, modelYear, modelEmail, modelDescription,","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"maj0-0"},"content":" modelTutorials, modelSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"wnchan":37,"maj0-0":16,"PearlynnT":11,"-":78}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSocialMedia.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":" * Jackson-friendly version of {@link SocialMediaLink}.","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"public class JsonAdaptedSocialMedia {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" private final String socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" * Constructs a {@code JsonAdaptedSocial} with the given {@code socialMediaLink}.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" public JsonAdaptedSocialMedia(String socialMediaLink) {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLink \u003d socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" * Converts a given {@code SocialMedia} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" public JsonAdaptedSocialMedia(SocialMediaLink source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" socialMediaLink \u003d source.socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" @JsonValue","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public String getSocialMediaLink() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" * Converts this Jackson-friendly adapted social media object into the model\u0027s {@code SocialMedia} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted social media.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public SocialMediaLink toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" if (!SocialMediaLink.isValidSocialMediaLink(socialMediaLink)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" throw new IllegalValueException(SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" return new SocialMediaLink(socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":47}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"Bearypop"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(2));","lastModifiedDate":"2023-10-02"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":" pause.setOnFinished(event -\u003e {","lastModifiedDate":"2023-10-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"Bearypop"},"content":" });","lastModifiedDate":"2023-10-02"},{"lineNumber":169,"author":{"gitId":"Bearypop"},"content":" pause.play();","lastModifiedDate":"2023-10-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"Bearypop":6,"-":196}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" private Label major;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" private Label year;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" private Label description;","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" @FXML","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" private Label tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private FlowPane socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" id.setStyle(\"-fx-font-size: 17px; -fx-text-fill: #E7BE34; -fx-font-family: \u0027Arial\u0027;\"); // styling like name","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" major.setText(person.getMajor().value);","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":" year.setText(\"Y\" + person.getYear().value);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" description.setText(person.getDescription().value);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" String tutorialsText \u003d person.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" .map(t -\u003e \"T\" + t.getValue())","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" .sorted()","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"maj0-0"},"content":" tutorials.setText(tutorialsText);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" person.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" .sorted(Comparator.comparing(sm -\u003e sm.socialMediaLink))","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" .forEach(sm -\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" Label label \u003d new Label(sm.socialMediaLink);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":" label.setStyle(\"-fx-font-size: 13px; -fx-text-fill: white; -fx-font-family: \u0027Segoe UI Semibold\u0027;\");","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" socialMediaLinks.getChildren().add(label);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" });","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"wnchan":6,"maj0-0":15,"PearlynnT":3,"-":43}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"neyapraveen"},"content":" background-color: #0e365c; /* Used in the default.html file */","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #757575; /* Light gray text */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"neyapraveen"},"content":".label-bold {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Arial\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34; /* Mustard color */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"neyapraveen"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"neyapraveen"},"content":" -fx-base: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"neyapraveen"},"content":" -fx-control-inner-background: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":" -fx-table-cell-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"neyapraveen"},"content":" -fx-table-header-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":" -fx-table-cell-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"neyapraveen"},"content":" -fx-table-header-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"neyapraveen"},"content":" #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":78,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color */","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: transparent transparent transparent #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"neyapraveen"},"content":" -fx-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":102,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #396987; /* Slightly brighter blue */","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #4781a5; /* Another shade of blue */","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #6b9ebf; /* A brighter blue color */","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Arial\";","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"neyapraveen"},"content":" -fx-font-size: 17px;","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34;","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"neyapraveen"},"content":" -fx-font-weight: bold","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":147,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":151,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":162,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Courier New\";","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"neyapraveen"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":173,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #3949AB; /* Another shade of blue border color */","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #3F51B5; /* Slightly brighter blue border color */","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":195,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3949AB; /* Another shade of blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":213,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #1A237E; /* Darker blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color on hover */","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: white; /* White background on click */","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #303F9F; /* Dark blue text on click */","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color */","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #304FFE; /* Bright blue color on hover */","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3949AB; /* Another shade of blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34;","lastModifiedDate":"2023-10-19"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #807e7e;","lastModifiedDate":"2023-10-19"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #F70D1A; /* Reddish text for the command type label */","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: transparent #000080 transparent #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #0e365c #0e365c #0e365c #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Courier New\";","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"maj0-0"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: transparent, #0e365c, transparent, #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":361,"author":{"gitId":"neyapraveen"},"content":"#name-label {","lastModifiedDate":"2023-10-19"},{"lineNumber":362,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34 /* Mustard text color for the \"name\" label */","lastModifiedDate":"2023-10-19"},{"lineNumber":363,"author":{"gitId":"neyapraveen"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"neyapraveen":86,"maj0-0":1,"-":276}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"neyapraveen"},"content":" -fx-background: #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"neyapraveen":1,"-":19}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"neyapraveen":1,"-":18}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel fx:id\u003d\"name\" id\u003d\"name-label\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eMajor:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eYear:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"year\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$year\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eEmail:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eDescription:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eTutorials:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" \u003cLabel fx:id\u003d\"tutorials\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tutorials\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eSocial Media:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"neyapraveen"},"content":" \u003cFlowPane fx:id\u003d\"socialMediaLinks\" style\u003d\"-fx-font-size: 10px; -fx-text-fill: #FFDB58;\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"neyapraveen":16,"maj0-0":4,"PearlynnT":4,"-":31}},{"path":"src/test/java/seedu/address/commons/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" public void getSamplePersons_validData_returnsSamplePersonsArray() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" assertEquals(6, samplePersons.length); // Check if the correct number of sample persons is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" public void getSampleAddressBook_validData_returnsReadOnlyAddressBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" assertEquals(6, SampleDataUtil.getSampleAddressBook().getPersonList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":" // Check if the address book contains the correct number of sample persons","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" public void getTutorialList_validData_returnsListOfTutorials() {","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" String[] tutorialStrings \u003d {\"01\", \"02\", \"03\"};","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" assertEquals(3, SampleDataUtil.getTutorialList(tutorialStrings).size());","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" // Check if the correct number of tutorials is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" public void getSocialMediaLinkSet_validData_returnsSetOfSocialMediaLinks() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":" String[] socialMediaLinkStrings \u003d {\"https://example.com/1\", \"https://example.com/2\"};","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" assertEquals(2, SampleDataUtil.getSocialMediaLinkSet(socialMediaLinkStrings).size());","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" // Check if the correct number of social media links is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":37}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_DELETE_EMAIL_NOT_FOUND;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":" String deleteCommand \u003d \"delete notFound@u.nus.edu\";","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" assertCommandException(deleteCommand, MESSAGE_DELETE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + MAJOR_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withSocialMediaLinks().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Bearypop":3,"PearlynnT":6,"-":167}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"Bearypop"},"content":" public Optional\u003cPerson\u003e getPersonWithEmail(Email email) {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"Bearypop"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Bearypop":7,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_MAJOR_AMY \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_MAJOR_BOB \u003d \"Information Systems\";","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_YEAR_AMY \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_YEAR_BOB \u003d \"3\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Frontend Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Backend Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_LINKEDIN_AMY \u003d \"https://www.linkedin.com/in/amy\";","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_GITHUB_AMY \u003d \"https://github.com/amy\";","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_LINKEDIN_BOB \u003d \"https://www.linkedin.com/in/bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_GITHUB_BOB \u003d \"https://github.com/bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" public static final String MAJOR_DESC_AMY \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" public static final String MAJOR_DESC_BOB \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public static final String YEAR_DESC_AMY \u003d \" \" + PREFIX_YEAR + VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" public static final String YEAR_DESC_BOB \u003d \" \" + PREFIX_YEAR + VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" public static final String SM_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_LINKEDIN_AMY + \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" public static final String SM_DESC_BOB \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_LINKEDIN_BOB + \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_MAJOR_DESC \u003d \" \" + PREFIX_MAJOR + \"Computer Games\"; // not in list of majors","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_YEAR_DESC \u003d \" \" + PREFIX_YEAR + \"-1\"; // negative integer not allowed for year","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_DESCRIPTION; // empty string not allowed for description","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_SM_DESC \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" + \"example.com\"; // does not start with https://","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_AMY).withEmail(VALID_EMAIL_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Bearypop":1,"maj0-0":1,"PearlynnT":38,"-":102}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":" public void execute_validEmailUnfilteredList_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" Email emailToDelete \u003d personToDelete.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(emailToDelete);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"neyapraveen"},"content":" public void execute_invalidEmailUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":" Email invalidEmail \u003d new Email(\"invalid@u.nus.edu\"); // Use an email that doesn\u0027t exist in the test data","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"neyapraveen"},"content":" assertCommandFailure(deleteCommand, model, \"Person with the provided email not found.\");","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"neyapraveen"},"content":" Person person \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Bearypop"},"content":" Email email2 \u003d model.getFilteredPersonList().get(1)","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Bearypop"},"content":" .getEmail(); // Assuming the second person in the list is used","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(email2);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"neyapraveen"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"neyapraveen"},"content":" Person person \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"neyapraveen"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetEmail\u003d\" + email + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"neyapraveen":19,"Bearypop":3,"-":72}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.EditCommand.MESSAGE_EMAIL_NOT_FOUND;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_SECOND_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" PersonBuilder personInList \u003d new PersonBuilder(firstPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, new EditPersonDescriptor());","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"PearlynnT"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"Bearypop"},"content":" Email secondPersonEmail \u003d model.getFilteredPersonList().get(1).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(secondPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(1);","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"PearlynnT"},"content":" public void execute_invalidPersonEmailUnfilteredList_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"Bearypop"},"content":" Email invalidEmail \u003d new Email(\"invalid@u.nus.edu\");","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(invalidEmail, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"Bearypop"},"content":" assertCommandFailure(editCommand, model, MESSAGE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" Email amyEmail \u003d new Email(\"amy@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":" final EditCommand standardCommand \u003d new EditCommand(amyEmail, DESC_AMY);","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"PearlynnT"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(amyEmail, copyDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"PearlynnT"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":" assertFalse(standardCommand.equals(new EditCommand(EMAIL_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"PearlynnT"},"content":" assertFalse(standardCommand.equals(new EditCommand(EMAIL_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(EMAIL_FIRST_PERSON, editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{email\u003d\" + EMAIL_FIRST_PERSON","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"maj0-0"},"content":" public void equals_sameTutorials_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"maj0-0"},"content":" // Create two edit descriptors with the same tutorials","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor descriptorWithTutorials \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"maj0-0"},"content":" .withTutorials(List.of(new Tutorial(\"01\"), new Tutorial(\"02\"))).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor descriptorCopyWithTutorials \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"maj0-0"},"content":" .withTutorials(List.of(new Tutorial(\"01\"), new Tutorial(\"02\"))).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"maj0-0"},"content":" // They should be considered equal even if other fields are different","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"maj0-0"},"content":" assertTrue(descriptorWithTutorials.equals(descriptorCopyWithTutorials));","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Bearypop":12,"maj0-0":16,"PearlynnT":33,"-":127}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" // different major -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withYear(VALID_YEAR_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" // different social media links -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withSocialMediaLinks(VALID_SM_LINKEDIN_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getName().orElse(null) + \", major\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getMajor().orElse(null) + \", year\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getYear().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", description\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" + editPersonDescriptor.getTutorials().orElse(null) + \", tutorials\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getDescription().orElse(null) + \", social media links\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getSocialMediaLinks().orElse(null) + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"wnchan":2,"maj0-0":1,"PearlynnT":18,"-":57}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" public void execute_multiplePartialKeywords_multiplePersonsFound() {","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kur Ell Kun\");","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"PearlynnT":10,"-":91}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"Bearypop"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" // multiple social media links - all accepted","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Bearypop"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Bearypop"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":" + DESCRIPTION_DESC_BOB + SM_DESC_BOB, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"Bearypop"},"content":" public void parse_repeatedNonSocialMediaLinkValue_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Bearypop"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"Bearypop"},"content":" // multiple majors","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, MAJOR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Bearypop"},"content":" // multiple years","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, YEAR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"Bearypop"},"content":" // multiple descriptions","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Bearypop"},"content":" validExpectedPersonString + MAJOR_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Bearypop"},"content":" + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR,","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Bearypop"},"content":" PREFIX_EMAIL, PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_MAJOR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_YEAR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_DESCRIPTION_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_MAJOR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_YEAR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":151,"author":{"gitId":"Bearypop"},"content":" // zero social media links","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"Bearypop"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withSocialMediaLinks().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + MAJOR_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, VALID_NAME_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"Bearypop"},"content":" // missing major prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_MAJOR_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"Bearypop"},"content":" expectedMessage);","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"Bearypop"},"content":" // missing year prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + VALID_YEAR_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"Bearypop"},"content":" + VALID_EMAIL_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"Bearypop"},"content":" // missing description prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + VALID_DESCRIPTION_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_MAJOR_BOB + VALID_YEAR_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"Bearypop"},"content":" + VALID_EMAIL_BOB + VALID_DESCRIPTION_BOB + VALID_SM_LINKEDIN_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_MAJOR_DESC + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + INVALID_YEAR_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"Bearypop"},"content":" + INVALID_EMAIL_DESC + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + INVALID_DESCRIPTION_DESC + SM_DESC_BOB, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"Bearypop"},"content":" // invalid social media","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + INVALID_SM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"Bearypop"},"content":" + SM_DESC_BOB, SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + INVALID_DESCRIPTION_DESC + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"Bearypop"},"content":" + YEAR_DESC_BOB + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Bearypop":115,"-":114}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" DeleteCommand.COMMAND_WORD + \" \" + EMAIL_FIRST_PERSON);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" assertEquals(new DeleteCommand(EMAIL_FIRST_PERSON), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_FIRST_PERSON + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertEquals(new EditCommand(EMAIL_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"PearlynnT":5,"-":96}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.testutil.TypicalEmails;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"neyapraveen"},"content":" assertParseSuccess(parser, \"first@u.nus.edu\", new DeleteCommand(TypicalEmails.EMAIL_FIRST_PERSON));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"neyapraveen":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SM_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_SECOND_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_THIRD_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" private static final String SOCIAL_MEDIA_LINK_EMPTY \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" // no email specified","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" // no email and no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, \"some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + \" i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_MAJOR_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" Major.MESSAGE_CONSTRAINTS); // invalid major","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_YEAR_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" Year.MESSAGE_CONSTRAINTS); // invalid year","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Description.MESSAGE_CONSTRAINTS); // invalid description","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_SM_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS); // invalid social media link","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" // invalid year followed by valid email","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_YEAR_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"PearlynnT"},"content":" Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" // while parsing {@code PREFIX_SOCIAL_MEDIA_LINK} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":" // parsing it together with a valid social media link results in error","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + SM_DESC_AMY + SOCIAL_MEDIA_LINK_EMPTY,","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + SOCIAL_MEDIA_LINK_EMPTY + SM_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_MAJOR_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"PearlynnT"},"content":" + VALID_YEAR_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_SECOND_PERSON + YEAR_DESC_BOB + SM_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY + NAME_DESC_AMY + MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"PearlynnT"},"content":" .withMajor(VALID_MAJOR_AMY).withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":" .withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_GITHUB_AMY, VALID_SM_LINKEDIN_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_SECOND_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_FIRST_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_THIRD_PERSON + NAME_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"PearlynnT"},"content":" // major","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMajor(VALID_MAJOR_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"PearlynnT"},"content":" // year","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" // description","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withDescription(VALID_DESCRIPTION_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"PearlynnT"},"content":" // social media links","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + SM_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"PearlynnT"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_FIRST_PERSON + INVALID_YEAR_DESC + YEAR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_BOB + INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"PearlynnT"},"content":" // multiple valid fields repeated","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + EMAIL_DESC_AMY + MAJOR_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"PearlynnT"},"content":" + SM_DESC_AMY + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + EMAIL_DESC_AMY + SM_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"PearlynnT"},"content":" + YEAR_DESC_BOB + DESCRIPTION_DESC_BOB + EMAIL_DESC_BOB + SM_DESC_BOB + MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"PearlynnT"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":210,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + INVALID_MAJOR_DESC + INVALID_YEAR_DESC + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"PearlynnT"},"content":" + INVALID_EMAIL_DESC + INVALID_MAJOR_DESC + INVALID_YEAR_DESC + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":215,"author":{"gitId":"PearlynnT"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"PearlynnT"},"content":" public void parse_resetSocialMediaLinks_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_THIRD_PERSON + SOCIAL_MEDIA_LINK_EMPTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"PearlynnT"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withSocialMediaLinks().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_validInput_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":" String userInput \u003d \" \" + PREFIX_TUTORIAL + \"01 02 03\";","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"maj0-0"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptorBuilder descriptorBuilder \u003d new EditPersonDescriptorBuilder();","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e tutorialsStrings \u003d argMultimap.getAllValues(PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":" if (!tutorialsStrings.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e tutorialList \u003d ParserUtil.parseTutorials(tutorialsStrings);","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"maj0-0"},"content":" descriptorBuilder.withTutorials(tutorialList);","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":242,"author":{"gitId":"maj0-0"},"content":" // Replace the following with actual expected values if needed","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor expectedDescriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"maj0-0"},"content":" .withTutorials(List.of(new Tutorial(\"01\"), new Tutorial(\"02\"), new Tutorial(\"03\")))","lastModifiedDate":"2023-10-19"},{"lineNumber":245,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":246,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedDescriptor, descriptorBuilder.build());","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"maj0-0":26,"PearlynnT":111,"-":112}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_MAJOR \u003d \"Computer Games\";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_YEAR \u003d \"1.5\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_SM \u003d \"#www.invalid.com\";","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_YEAR \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_DESCRIPTION \u003d \"Web Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_EMAIL \u003d \"rachel@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_SM_LINKEDIN \u003d \"https://www.linkedin.com/in/rachel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_SM_GITHUB \u003d \"https://github.com/rachel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" public void parseEmail_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public void parseEmail_validInput_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" assertEquals(EMAIL_FIRST_PERSON, ParserUtil.parseEmail(\"first@u.nus.edu\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" assertEquals(EMAIL_FIRST_PERSON, ParserUtil.parseEmail(\" first@u.nus.edu \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseMajor((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseMajor(INVALID_MAJOR));","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_validValueWithoutWhitespace_returnsMajor() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(VALID_MAJOR));","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_validValueWithWhitespace_returnsTrimmedMajor() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" String majorWithWhitespace \u003d WHITESPACE + VALID_MAJOR + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(majorWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseYear((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseYear(INVALID_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_validValueWithoutWhitespace_returnsYear() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"PearlynnT"},"content":" Year expectedYear \u003d new Year(VALID_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedYear, ParserUtil.parseYear(VALID_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_validValueWithWhitespace_returnsTrimmedYear() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"PearlynnT"},"content":" String yearWithWhitespace \u003d WHITESPACE + VALID_YEAR + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" Year expectedYear \u003d new Year(VALID_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedYear, ParserUtil.parseYear(yearWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDescription((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDescription(INVALID_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_validValueWithoutWhitespace_returnsDescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" Description expectedDescription \u003d new Description(VALID_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedDescription, ParserUtil.parseDescription(VALID_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_validValueWithWhitespace_returnsTrimmedDescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":" String descriptionWithWhitespace \u003d WHITESPACE + VALID_DESCRIPTION + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"PearlynnT"},"content":" Description expectedDescription \u003d new Description(VALID_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedDescription, ParserUtil.parseDescription(descriptionWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaLink(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSocialMediaLink(INVALID_SM));","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_validValueWithoutWhitespace_returnsSocialMediaLink() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink expectedSocialMediaLink \u003d new SocialMediaLink(VALID_SM_LINKEDIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLink, ParserUtil.parseSocialMediaLink(VALID_SM_LINKEDIN));","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_validValueWithWhitespace_returnsTrimmedSocialMediaLink() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"PearlynnT"},"content":" String socialMediaLinkWithWhitespace \u003d WHITESPACE + VALID_SM_LINKEDIN + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink expectedSocialMediaLink \u003d new SocialMediaLink(VALID_SM_LINKEDIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLink, ParserUtil.parseSocialMediaLink(socialMediaLinkWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaLinks(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_collectionWithInvalidSocialMediaLinks_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(VALID_SM_LINKEDIN, INVALID_SM)));","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"PearlynnT"},"content":" assertTrue(ParserUtil.parseSocialMediaLinks(Collections.emptyList()).isEmpty());","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_collectionWithValidSocialMediaLinks_returnsSocialMediaLinkSet() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e actualSocialMediaLinkSet \u003d ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(VALID_SM_LINKEDIN, VALID_SM_GITHUB));","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e expectedSocialMediaLinkSet \u003d new HashSet\u003cSocialMediaLink\u003e(","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(new SocialMediaLink(VALID_SM_LINKEDIN), new SocialMediaLink(VALID_SM_GITHUB)));","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":218,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLinkSet, actualSocialMediaLinkSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":220,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_validInput_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e validTutorials \u003d Arrays.asList(\"02\", \"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e expectedTutorialList \u003d Arrays.asList(new Tutorial(\"02\"), new Tutorial(\"05\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e actualTutorialList \u003d ParserUtil.parseTutorials(validTutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedTutorialList, actualTutorialList);","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e invalidTutorials \u003d Arrays.asList(\"25\", \"T02\");","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"maj0-0"},"content":" for (String invalidTutorial : invalidTutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"maj0-0"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"maj0-0"},"content":" ParserUtil.parseTutorials(Collections.singletonList(invalidTutorial)));","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"maj0-0":23,"PearlynnT":86,"-":132}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"wnchan":3,"-":102}},{"path":"src/test/java/seedu/address/model/person/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class DescriptionTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidDescription() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null description","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // invalid description","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Description.isValidDescription(\"3dUxHctmS8CrcahkimCRb5o33qMXhpMAoyheGmi9BLF8BJnTouR2KsH34as\"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" + \"RqUKDppYnEBHmRq54p5LkBjRsGyGcjWFU6m6pRU2SGQDiAOQMD4ZGqsMwTO3SAxVDWaCwfiQdqBlopNXqyu9cIcg\"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" + \"Djdh\\n\")); // more than 150 characters","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" // valid description","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Description.isValidDescription(\"test description\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" Description description \u003d new Description(\"test\");","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" assertTrue(description.equals(new Description(\"test\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(\"diff\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" Description description \u003d new Description(\"test\");","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"test\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d description.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":65}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Email.isValidEmail(\" \")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@u.nus.edu\")); // underscore in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@u.nus.edu\")); // period in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@u.nus.edu\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@u.nus.edu\")); // hyphen in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@u.nus.edu\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@u.nus.edu\")); // long local part","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" Email email \u003d new Email(\"valid@u.nus.edu\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"wnchan"},"content":" assertTrue(email.equals(new Email(\"valid@u.nus.edu\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"wnchan"},"content":" assertFalse(email.equals(new Email(\"other.valid@u.nus.edu\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" Email email \u003d new Email(\"valid@u.nus.edu\");","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"valid@u.nus.edu\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d email.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"wnchan":9,"PearlynnT":9,"-":75}},{"path":"src/test/java/seedu/address/model/person/MajorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class MajorTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Major(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidMajor_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidMajor \u003d \"Computer Games\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Major(invalidMajor));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidEmail() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null email","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Major.isValidMajor(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // blank major","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\" \")); // spaces only","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" // invalid major","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Computer Games\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Finance\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"ComputerScience\")); // no space","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\" Computer Science\")); // leading space","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Computer Science \")); // trailing space","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" // valid major","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"computer science\")); // lowercase","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"Computer Science\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"Information Systems\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" Major major \u003d new Major(\"Computer Science\");","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" assertTrue(major.equals(new Major(\"Computer Science\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" assertTrue(major.equals(major));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(new Name(\"Information Systems\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" Major major \u003d new Major(\"Computer Science\");","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"Computer Science\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d major.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":72}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" // One partial keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bobby\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" // Multiple partial keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bobby Caroline\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"wnchan"},"content":" // Keywords match major, year, email, and description, but does not match name","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(\"ComputerScience\", \"2\", \"alice@u.nus.edu\", \"webdev\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withMajor(\"Computer Science\").withYear(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" .withEmail(\"alice@u.nus.edu\").withDescription(\"web dev\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"wnchan":1,"PearlynnT":12,"-":81}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" assertFalse(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" assertFalse(Name.isValidName(\"peter the 2nd\")); // alphanumeric character","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr\")); // long names","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"Valid Name\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d name.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"wnchan":3,"PearlynnT":9,"-":57}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getSocialMediaLinks().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" // same email, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" .withMajor(VALID_MAJOR_BOB).withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" .withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" // different email, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" // email differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" // different major -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withYear(VALID_YEAR_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" // different social media links -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d ALICE.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d aliceCopy.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", major\u003d\" + ALICE.getMajor()","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":" + \", year\u003d\" + ALICE.getYear() + \", email\u003d\" + ALICE.getEmail() + \", description\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":" + ALICE.getDescription() + \", tutorials\u003d\" + ALICE.getTutorials()","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" + \", socialMediaLinks\u003d\" + ALICE.getSocialMediaLinks() + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" public void equals_sameTutorials_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" // Create two persons with the same tutorials","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"maj0-0"},"content":" Person aliceWithTutorials \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"maj0-0"},"content":" .withTutorials(\"01\", \"02\")","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"maj0-0"},"content":" Person aliceCopyWithTutorials \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"maj0-0"},"content":" .withTutorials(\"01\", \"02\")","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"maj0-0"},"content":" // They should be considered equal even if other fields are different","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":" assertTrue(aliceWithTutorials.equals(aliceCopyWithTutorials));","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"wnchan":14,"maj0-0":17,"PearlynnT":22,"-":75}},{"path":"src/test/java/seedu/address/model/person/TutorialTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"public class TutorialTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tutorial(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":" public void constructor_invalidTutorial_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" String invalidTutorial \u003d \"00\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tutorial(invalidTutorial));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":" public void constructor_validTutorial_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" String validTutorial \u003d \"05\";","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(validTutorial);","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial.isValidTutorial(validTutorial));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":" public void isValidTutorial() {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" // null tutorial","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" assertThrows(NullPointerException.class, () -\u003e Tutorial.isValidTutorial(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" // invalid tutorial numbers","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"00\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"23\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"invalid\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"1A\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" // valid tutorial numbers","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"01\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"12\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"22\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" public void getValue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" assertEquals(\"05\", tutorial.getValue());","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial1 \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial2 \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial3 \u003d new Tutorial(\"01\");","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"maj0-0"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial1.equals(tutorial1));","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial1.equals(tutorial2));","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"maj0-0"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"maj0-0"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(tutorial3));","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"maj0-0"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"maj0-0"},"content":" int expectedHashCode \u003d \"05\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"maj0-0"},"content":" int actualHashCode \u003d tutorial.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":81}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" assertFalse(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"wnchan":2,"PearlynnT":3,"-":167}},{"path":"src/test/java/seedu/address/model/person/YearTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class YearTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Year(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidYear_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidYear \u003d \"10\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Year(invalidYear));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidYear() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null year","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Year.isValidYear(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // blank year","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\" \")); // spaces only","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" // invalid year","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"one\")); // string","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"-1\")); // negative number","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"1.5\")); // decimal","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"10\")); // more than one digit long","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\" 1\")); // leading space","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"1 \")); // trailing space","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" // valid year","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Year.isValidYear(\"1\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Year.isValidYear(\"2\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" Year year \u003d new Year(\"2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" assertTrue(year.equals(new Year(\"2\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" assertTrue(year.equals(year));","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(new Year(\"3\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" Year year \u003d new Year(\"2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"2\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d year.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":73}},{"path":"src/test/java/seedu/address/model/socialmedialink/SocialMediaLinkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.socialmedialink;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"public class SocialMediaLinkTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new SocialMediaLink(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidSocialMediaLink_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" String invalidSocialMediaLink \u003d \"\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidSocialMediaLink));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" public void isValidSocialMediaLink() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" // null social media link","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e SocialMediaLink.isValidSocialMediaLink(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":27}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_MAJOR \u003d \"Computer Games\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_YEAR \u003d \"1.5\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_DESCRIPTION \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" private static final String INVALID_TUTORIAL \u003d \"1.7\";","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_SM \u003d \"#www.invalid.com\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_MAJOR \u003d BENSON.getMajor().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_YEAR \u003d BENSON.getYear().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_DESCRIPTION \u003d BENSON.getDescription().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" private static final List\u003cString\u003e VALID_TUTORIAL \u003d BENSON.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::getValue)","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private static final List\u003cJsonAdaptedSocialMedia\u003e VALID_SM \u003d BENSON.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" .map(JsonAdaptedSocialMedia::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(null, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidMajor_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Major.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullMajor_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidYear_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, INVALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Year.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullYear_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, null, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, INVALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, null,","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":" INVALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"maj0-0"},"content":" null, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidSocialMediaLinks_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" List\u003cJsonAdaptedSocialMedia\u003e invalidSocialMediaLinks \u003d new ArrayList\u003c\u003e(VALID_SM);","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":" invalidSocialMediaLinks.add(new JsonAdaptedSocialMedia(INVALID_SM));","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, invalidSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"maj0-0":28,"PearlynnT":41,"-":81}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" descriptor.setMajor(person.getMajor());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" descriptor.setYear(person.getYear());","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" descriptor.setDescription(person.getDescription());","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" descriptor.setSocialMediaLinks(person.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Major} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withMajor(String major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" descriptor.setMajor(new Major(major));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Year} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withYear(String year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" descriptor.setYear(new Year(year));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Description} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" * Parses the {@code socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e} and set it to the","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" * {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withSocialMediaLinks(String... socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e tagSet \u003d Stream.of(socialMediaLinks).map(SocialMediaLink::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" descriptor.setSocialMediaLinks(tagSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"maj0-0"},"content":" * Parses the {@code tutorials} into a {@code Set\u003cTutorial\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"maj0-0"},"content":" public EditPersonDescriptorBuilder withTutorials(List\u003cTutorial\u003e tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"maj0-0"},"content":" List\u003cTutorial\u003e tutorialSet \u003d tutorials.stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"maj0-0"},"content":" .map((Tutorial tutorial) -\u003e new Tutorial(tutorial.getValue()))","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"maj0-0"},"content":" descriptor.setTutorials(tutorialSet);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"maj0-0":8,"PearlynnT":27,"-":76}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_YEAR \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@u.nus.edu\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"CS nerd\";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" private Major major;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" private Year year;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" private Description description;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" private List\u003cTutorial\u003e tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" private Set\u003cSocialMediaLink\u003e socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" major \u003d new Major(DEFAULT_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" year \u003d new Year(DEFAULT_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" tutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" major \u003d personToCopy.getMajor();","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" year \u003d personToCopy.getYear();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" description \u003d personToCopy.getDescription();","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"maj0-0"},"content":" tutorials \u003d new ArrayList\u003c\u003e(personToCopy.getTutorials());","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks \u003d new HashSet\u003c\u003e(personToCopy.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" * Parses the {@code socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e} and set it to the {@code Person} that","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" * we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withSocialMediaLinks(String ... socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks \u003d SampleDataUtil.getSocialMediaLinkSet(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":" * Parses the {@code tutorials} into a {@code List\u003cTutorial\u003e}","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"maj0-0"},"content":" * and sets it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"maj0-0"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"maj0-0"},"content":" * @param tutorials A varargs of tutorial strings. Tutorial strings should be a 2-digit number between 01 and 22.","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"maj0-0"},"content":" * @return The updated {@code PersonBuilder} with the tutorials set.","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"maj0-0"},"content":" public PersonBuilder withTutorials(String... tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"maj0-0"},"content":" this.tutorials \u003d SampleDataUtil.getTutorialList(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Description} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withDescription(String description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Major} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withMajor(String major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"PearlynnT"},"content":" this.major \u003d new Major(major);","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Year} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withYear(String year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"PearlynnT"},"content":" this.year \u003d new Year(year);","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":" return new Person(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Bearypop":1,"maj0-0":18,"PearlynnT":32,"-":78}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_MAJOR + person.getMajor().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_YEAR + person.getYear().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_DESCRIPTION + person.getDescription().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" person.getSocialMediaLinks().stream().forEach(","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" s -\u003e sb.append(PREFIX_SOCIAL_MEDIA_LINK + s.socialMediaLink + \" \")","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" descriptor.getMajor().ifPresent(major -\u003e sb.append(PREFIX_MAJOR).append(major.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" descriptor.getYear().ifPresent(year -\u003e sb.append(PREFIX_YEAR).append(year.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" descriptor.getDescription().ifPresent(description -\u003e sb.append(PREFIX_DESCRIPTION).append(description.value)","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" if (descriptor.getSocialMediaLinks().isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinks \u003d descriptor.getSocialMediaLinks().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks.forEach(s -\u003e sb.append(PREFIX_SOCIAL_MEDIA_LINK).append(s.socialMediaLink)","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"PearlynnT":20,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalEmails.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":" * A utility class containing a list of {@code Email} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"public class TypicalEmails {","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_FIRST_PERSON \u003d new Email(\"first@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_SECOND_PERSON \u003d new Email(\"second@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_THIRD_PERSON \u003d new Email(\"third@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":12}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"alice@u.nus.edu\").withDescription(\"web dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"johnd@u.nus.edu\").withDescription(\"mobile dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/benson\", \"https://github.com/benson\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"heinz@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"cornelia@u.nus.edu\").withDescription(\"be dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/daniel\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"werner@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"lydia@u.nus.edu\").withDescription(\"be dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"anna@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"stefan@u.nus.edu\").withDescription(\"web dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"hans@u.nus.edu\").withDescription(\"mobile dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_AMY).withEmail(VALID_EMAIL_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"PearlynnT":37,"-":43}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-F12-2/tp/actions)","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"### StudentConnect","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"* This project was created for the **CS2103T Software Engineering module**. \u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"* It is named `StudentConnect` because it was created to connect students in CS2103T and help with the formation of teams.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"* For the detailed documentation of this project, see the **[StudentConnect Product Website (to be created)](https://github.com/AY2324S1-CS2103T-F12-2/tp)**.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"* Value proposition: \u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":" * `StudentConnect` helps with the **formation of project teams for CS2103T**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" * `StudentConnect` **stores** and **organises students’ contact details, and project group**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" * Students can **easily search for the profiles of other students** and **connect with potential teammates**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":" * It offers tools for **tracking project progress/deadlines**, ensuring that the group stays on task","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" * There is no other application like `StudentConnect` for **CS2103T students**","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"### Other Links","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"To be added in the future.","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"### Acknowledgements","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"wnchan":19,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" testImplementation \u0027org.testfx:testfx-core:4.0.16-alpha\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" testImplementation \u0027org.testfx:testfx-junit5:4.0.16-alpha\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"neyapraveen"},"content":" archiveFileName \u003d \u0027studentconnect.jar\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"neyapraveen":1,"maj0-0":2,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"### Pearlynn Toh","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"\u003cimg src\u003d\"images/pearlynnt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"[[github](https://github.com/PearlynnT)]","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"[[portfolio](team/pearlynnt.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"* Role: Team Lead, Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":"### Yik Leong Loo","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":"\u003cimg src\u003d\"images/bearypop.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"[[github](https://github.com/Bearypop)]","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"[[portfolio](team/bearypop.md)]","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"* Role: Developer","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"* Responsibilities: Testing + Integration","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":"### Chan Wei Ning","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":"\u003cimg src\u003d\"images/wnchan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":"[[github](https://github.com/wnchan)]","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":"[[portfolio](team/wnchan.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":"### Alnaseri, Majedah Talal M","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":"\u003cimg src\u003d\"images/maj0-0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":"[[github](https://github.com/maj0-0)]","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":"[[portfolio](team/maj0-0.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":"* Responsibilities: Deliverables \u0026 Deadlines + Scheduling \u0026 Tracking","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":"### Dewangan Neya Praveen","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":"\u003cimg src\u003d\"images/neyapraveen.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"neyapraveen"},"content":"[[github](http://github.com/neyapraveen)]","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"neyapraveen"},"content":"[[portfolio](team/neyapraveen.md)]","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"neyapraveen"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Bearypop":6,"neyapraveen":5,"wnchan":5,"maj0-0":5,"PearlynnT":5,"-":35}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2023-10-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2023-10-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2023-10-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2023-10-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"neyapraveen"},"content":"* CS2103T student","lastModifiedDate":"2023-10-06"},{"lineNumber":261,"author":{"gitId":"neyapraveen"},"content":"* Face challenges in finding like-minded students for group projects","lastModifiedDate":"2023-10-06"},{"lineNumber":262,"author":{"gitId":"neyapraveen"},"content":"* Busy academic schedule","lastModifiedDate":"2023-10-06"},{"lineNumber":263,"author":{"gitId":"neyapraveen"},"content":"* Need assistance in keeping track of project deadlines, tasks, and progress","lastModifiedDate":"2023-10-06"},{"lineNumber":264,"author":{"gitId":"neyapraveen"},"content":"* Can type fast","lastModifiedDate":"2023-10-06"},{"lineNumber":265,"author":{"gitId":"neyapraveen"},"content":"* Prefer desktop apps over other types","lastModifiedDate":"2023-10-06"},{"lineNumber":266,"author":{"gitId":"neyapraveen"},"content":"* Prefers typing to mouse interactions","lastModifiedDate":"2023-10-06"},{"lineNumber":267,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":268,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"neyapraveen"},"content":"**Value proposition**: StudentConnect stores and organises students’ contact details, and project group.","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"neyapraveen"},"content":"Students can easily search for the profiles of other students and connect with potential teammates.","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"neyapraveen"},"content":"This streamlines the process of forming project teams. It also offers tools for tracking project","lastModifiedDate":"2023-10-06"},{"lineNumber":272,"author":{"gitId":"neyapraveen"},"content":"progress/deadlines, ensuring that the group stays on task. There is no other application quite like StudentConnect for","lastModifiedDate":"2023-10-06"},{"lineNumber":273,"author":{"gitId":"neyapraveen"},"content":"CS2103T students.","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"PearlynnT"},"content":"|----------|-----------|-----------------------------------------------------|-------------------------------------------|","lastModifiedDate":"2023-10-12"},{"lineNumber":283,"author":{"gitId":"PearlynnT"},"content":"| `* * *` | student | add my personal details to the system | get other students to learn more about me |","lastModifiedDate":"2023-10-12"},{"lineNumber":284,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | view the rest of the students in the course | see my options for choosing teammates |","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | see the other student’s name, major, basic info etc | make informed decisions |","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"PearlynnT"},"content":"| `* * * ` | student | customise and update my profile details | ensure that my profile is up to date |","lastModifiedDate":"2023-10-12"},{"lineNumber":287,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | student | remove my personal details from the system | stop using the application |","lastModifiedDate":"2023-10-06"},{"lineNumber":288,"author":{"gitId":"neyapraveen"},"content":"| `* * *` | user | exit the app | close the app |","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"neyapraveen"},"content":"(For all use cases below, the System is `StudentConnect` and the Actor is the `student`, unless specified otherwise)","lastModifiedDate":"2023-10-06"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"neyapraveen"},"content":"**Use case: List students**","lastModifiedDate":"2023-10-06"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to list students","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect shows a list of students","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"neyapraveen"},"content":"**Use case: Adding a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":313,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":314,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":315,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":316,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to add their personal information","lastModifiedDate":"2023-10-06"},{"lineNumber":317,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect adds the student’s information into the list","lastModifiedDate":"2023-10-06"},{"lineNumber":318,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":319,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":320,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":321,"author":{"gitId":"neyapraveen"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":322,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":323,"author":{"gitId":"neyapraveen"},"content":"* 2a. Invalid input","lastModifiedDate":"2023-10-06"},{"lineNumber":324,"author":{"gitId":"neyapraveen"},"content":" * StudentConnect displays error message","lastModifiedDate":"2023-10-06"},{"lineNumber":325,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":326,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":327,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":328,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Find a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":329,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":330,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":331,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":332,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to find students with a keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":333,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect shows a list of students whose name(s) contain the keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":334,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":335,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":336,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":337,"author":{"gitId":"neyapraveen"},"content":"**Extensions:**","lastModifiedDate":"2023-10-06"},{"lineNumber":338,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":339,"author":{"gitId":"neyapraveen"},"content":"* 2a. The given keyword does not match any of the students’ names.","lastModifiedDate":"2023-10-06"},{"lineNumber":340,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":341,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":342,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":343,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Delete a student**","lastModifiedDate":"2023-10-06"},{"lineNumber":344,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":345,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":346,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":347,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to delete a specific student on the list by email","lastModifiedDate":"2023-10-06"},{"lineNumber":348,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect deletes the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":349,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":350,"author":{"gitId":"neyapraveen"},"content":" Use case ends","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":352,"author":{"gitId":"neyapraveen"},"content":"**Extensions:**","lastModifiedDate":"2023-10-06"},{"lineNumber":353,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":354,"author":{"gitId":"neyapraveen"},"content":"* 1a. The given email is invalid","lastModifiedDate":"2023-10-06"},{"lineNumber":355,"author":{"gitId":"neyapraveen"},"content":" * 1a1. StudentConnect shows an error message.","lastModifiedDate":"2023-10-06"},{"lineNumber":356,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":357,"author":{"gitId":"neyapraveen"},"content":" Use case ends","lastModifiedDate":"2023-10-06"},{"lineNumber":358,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":359,"author":{"gitId":"PearlynnT"},"content":"**Use Case: Edit a student**","lastModifiedDate":"2023-10-12"},{"lineNumber":360,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":361,"author":{"gitId":"PearlynnT"},"content":"**MSS**","lastModifiedDate":"2023-10-12"},{"lineNumber":362,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":363,"author":{"gitId":"PearlynnT"},"content":"1. Student requests to update a specific student’s details on the list by email.","lastModifiedDate":"2023-10-12"},{"lineNumber":364,"author":{"gitId":"PearlynnT"},"content":"2. StudentConnect shows a list of students containing the student with the updated details.","lastModifiedDate":"2023-10-12"},{"lineNumber":365,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":366,"author":{"gitId":"PearlynnT"},"content":" Use case ends.","lastModifiedDate":"2023-10-12"},{"lineNumber":367,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":368,"author":{"gitId":"PearlynnT"},"content":"**Extensions:**","lastModifiedDate":"2023-10-12"},{"lineNumber":369,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":370,"author":{"gitId":"PearlynnT"},"content":"* 1a. The given email is invalid","lastModifiedDate":"2023-10-12"},{"lineNumber":371,"author":{"gitId":"PearlynnT"},"content":" * 1a1. StudentConnect shows an error message.","lastModifiedDate":"2023-10-12"},{"lineNumber":372,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":373,"author":{"gitId":"PearlynnT"},"content":" Use case ends.","lastModifiedDate":"2023-10-12"},{"lineNumber":374,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":375,"author":{"gitId":"neyapraveen"},"content":"**Use Case: Exit the app**","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"neyapraveen"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":378,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":379,"author":{"gitId":"neyapraveen"},"content":"1. Student requests to delete the app by typing “exit”.","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"neyapraveen"},"content":"2. StudentConnect displays the goodbye message.","lastModifiedDate":"2023-10-06"},{"lineNumber":381,"author":{"gitId":"neyapraveen"},"content":"3. StudentConnect closes.","lastModifiedDate":"2023-10-06"},{"lineNumber":382,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":383,"author":{"gitId":"neyapraveen"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"neyapraveen"},"content":"1. Should work on any mainstream OS as long as it has Java `11` or above installed.","lastModifiedDate":"2023-10-06"},{"lineNumber":393,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"neyapraveen"},"content":"3. A student with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2023-10-06"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"neyapraveen"},"content":"* **CS2103T**: NUS Software Engineering Course","lastModifiedDate":"2023-10-06"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"neyapraveen"},"content":" 1. Test case: `delete alexy@u.nus.edu`\u003cbr\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":438,"author":{"gitId":"neyapraveen"},"content":" Expected: Contact with above email deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2023-10-06"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"neyapraveen"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete abc@gmail.com`, `delete 1`\u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"neyapraveen":86,"PearlynnT":19,"-":349}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"title: StudentConnect User Guide","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"StudentConnect is a solution for hassle-free team formation for students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":" {to be added}","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"2. Download the latest `studentconnect.jar` from [here]().","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar studentconnect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" * `list` : Lists all students.","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":" * `add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I love programming in my free time t/02 17 20 sm/https://www.linkedin.com/in/john-doe-123456789` : Adds a student named `John Doe` to the StudentConnect system.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":" * `delete [email]` : Deletes the student with the corresponding email.","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" * `clear` : Deletes all students.","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" e.g. `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":"### Adding a student : `add`","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":"Adds a student to the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"maj0-0"},"content":"Format: `add n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION t/TUTORIALS sm/SOCIALMEDIA`","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":"A student can include multiple tutorial groups they are interested in","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"maj0-0"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"maj0-0"},"content":"A student can have any number of social media links (including 0)","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":"* `add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I’m a Frontend Developer t/6 19 sm/https://www.linkedin.com/in/john-doe-123456789`","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"maj0-0"},"content":"* `add n/Betsy Crowe m/Computer Science y/2 e/betsycrowe@u.nus.edu d/I’m adept at Backend technologies t/5 sm/`","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":"* Name: Full names with alphabetical characters","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":"* Major: Valid major names at NUS","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":"* Year: Numeric year level","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"wnchan"},"content":"* Email: Valid email address ending in “@u.nus.edu”","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"wnchan"},"content":"* Description: Maximum 150 characters","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"maj0-0"},"content":"* Tutorials: Integers between 1 and 22 inclusive, each seperated by a space","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wnchan"},"content":"* Social Media Link: Valid URL format to social media account (optional to include)","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"wnchan"},"content":"* GUI: New student entry added in the main student list","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":"* Message: “Details added successfully! New student added: (details of new student)”","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"wnchan"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":"* Message: \"Invalid command format! add: Adds a person to StudentConnect. \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":"Parameters: n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION t/TUTORIALS sm/SOCIAL_MEDIA_LINK \u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":"Example: add n/John Doe m/Computer Science y/2 e/johnd@u.nus.edu d/I love programming in my free time\u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":"t/02 17 20 sm/https://www.linkedin.com/in/john-doe-123456789\";","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":"Mockup of add feature (Success): \u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":"![Add feature](images/add.png)","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":"### Listing all students : `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":"Shows a list of all students in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"maj0-0"},"content":"* GUI: List of all student entries in the system","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"maj0-0"},"content":"* Message: “Viewing all students”","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":"* Message: “Error: Unable to retrieve student entries. Please try again.”","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"maj0-0"},"content":"![sample result for \u0027list\u0027](images/list.png)","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"maj0-0"},"content":"Edits an existing student in the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"maj0-0"},"content":"Format: `edit EMAIL [n/NAME] [m/MAJOR] [y/YEAR] [e/EMAIL] [d/DESCRIPTION] [t/TUTORIALS] [sm/SOCIALMEDIA]…​`","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":"* Edits the student with the specified EMAIL.","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"maj0-0"},"content":"* When editing tutorials, the existing tutorials of the student will be removed i.e. adding of tutorials is not cumulative.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":"* When editing social media, the existing social media of the student will be removed i.e. adding of social media is not cumulative.","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":"* You can remove all the student\u0027s social media by typing `sm/` without","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" specifying any social media after it.","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":"* `edit johnd@u.nus.edu y/3 e/johndoe@u.nus.edu` Edits the year and email address of the student with the email `johnd@u.nus.edu` to be `3` and `johndoe@u.nus.edu` respectively.","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PearlynnT"},"content":"* `edit betsycrowe@u.nus.edu n/Betsy Crower sm/` Edits the name of the student with the email `betsycrowe@u.nus.edu` to be `Betsy Crower` and clears all existing social media.","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PearlynnT"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"PearlynnT"},"content":"* EMAIL: a previously registered email address ending in “@u.nus.edu”","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":"* GUI: Student details updated in the student list.","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":"* Message: “Details updated successfully!”","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: Email not found.”","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: None of the optional fields provided. Give at least one.”","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"maj0-0"},"content":"![sample result for \u0027edit\u0027](images/edit.png)","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":"### Finding a student by name: `find`","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":"Finds student(s) whose name(s) contain any of the given keywords.","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"maj0-0"},"content":"* The search is case-insensitive. e.g. `john` will match `John`","lastModifiedDate":"2023-10-05"},{"lineNumber":167,"author":{"gitId":"PearlynnT"},"content":"* The order of the keywords does not matter. e.g. `John Doe` will match `Doe John`","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":"* Partial words can be matched. e.g. `John` will match `Johnny`","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" e.g. `John Crowe` will return `John Doe`, `Betsy Crowe`","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":"* `find John` returns `john`, `John Doe` and `Johnny Wee`","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"PearlynnT"},"content":"* `find john betsy` returns `John Doe`, `Betsy Crowe`\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Success):","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"PearlynnT"},"content":"* GUI: List of all student entries whose name(s) match the keyword(s) in the system","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"PearlynnT"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: No keyword(s) provided.”","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"PearlynnT"},"content":"* Message: “Error: Unable to find students with the given keyword(s).”","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"PearlynnT"},"content":" ![result for \u0027find alex\u0027](images/findAlexResult.png)","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"neyapraveen"},"content":"Deletes a specific student and all personal details based on email.","lastModifiedDate":"2023-10-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":"Format: `delete EMAIL`","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"neyapraveen"},"content":"* Deletes the person with the specified `EMAIL`.","lastModifiedDate":"2023-10-06"},{"lineNumber":192,"author":{"gitId":"neyapraveen"},"content":"* The index refers to the email number shown in the displayed person list.","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"neyapraveen"},"content":"* The email must be registered in the system.","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"neyapraveen"},"content":"* `list` followed by `delete alexy@u.nus.edu` deletes Alex Yeo from the system.","lastModifiedDate":"2023-10-06"},{"lineNumber":197,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":198,"author":{"gitId":"neyapraveen"},"content":"Acceptable Values:","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"PearlynnT"},"content":"* EMAIL: a previously registered email address ending in `u.nus.edu`","lastModifiedDate":"2023-10-12"},{"lineNumber":200,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":201,"author":{"gitId":"neyapraveen"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-06"},{"lineNumber":202,"author":{"gitId":"neyapraveen"},"content":"* GUI: Student details removed from student list.","lastModifiedDate":"2023-10-06"},{"lineNumber":203,"author":{"gitId":"neyapraveen"},"content":"* Message: `Person deleted successfully!`","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"neyapraveen"},"content":" ![Delete feature](images/delete.png)","lastModifiedDate":"2023-10-06"},{"lineNumber":205,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":206,"author":{"gitId":"neyapraveen"},"content":"Expected Output (Failure):","lastModifiedDate":"2023-10-06"},{"lineNumber":207,"author":{"gitId":"neyapraveen"},"content":"* Message: `Error! Email not found!`","lastModifiedDate":"2023-10-06"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"maj0-0"},"content":"Clears all entries from the system.","lastModifiedDate":"2023-10-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"maj0-0"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"maj0-0"},"content":"* GUI: All students\u0027 details are removed from student list.","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"maj0-0"},"content":"* Message: `All student data has been cleared`","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"maj0-0"},"content":" ![Clear feature](images/clear.png)","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"PearlynnT"},"content":"Expected Output(Success):","lastModifiedDate":"2023-10-12"},{"lineNumber":227,"author":{"gitId":"Bearypop"},"content":"* GUI: Application window closes.","lastModifiedDate":"2023-10-02"},{"lineNumber":228,"author":{"gitId":"maj0-0"},"content":"* Message (before closing): `Thank you for using StudentConnect! Exiting the application now…`","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":230,"author":{"gitId":"PearlynnT"},"content":"Expected Output(Failure):","lastModifiedDate":"2023-10-12"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":"* Message: `Error: Exiting the program failed.`","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":233,"author":{"gitId":"Bearypop"},"content":"![Exit](images/exit.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":234,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":"Students\u0027 data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":241,"author":{"gitId":"maj0-0"},"content":"Students\u0027 data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":244,"author":{"gitId":"maj0-0"},"content":"If your changes to the data file makes its format invalid, StudentConnect will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"maj0-0"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous StudentConnect home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"maj0-0"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"maj0-0"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":270,"author":{"gitId":"maj0-0"},"content":"| **Add** | `add n/NAME m/MAJOR y/YEAR e/EMAIL d/DESCRIPTION sm/SOCIALMEDIA` \u003cbr\u003e e.g., `add n/Betsy Crowe m/Computer Science y/2 e/betsycrowe@u.nus.edu d/I’m adept at Backend technologies` |","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"maj0-0"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2023-10-05"},{"lineNumber":272,"author":{"gitId":"maj0-0"},"content":"| **Delete** | `delete EMAIL`\u003cbr\u003e e.g., `delete betsycrowe@u.nus.edu` |","lastModifiedDate":"2023-10-05"},{"lineNumber":273,"author":{"gitId":"maj0-0"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"maj0-0"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2023-10-05"},{"lineNumber":275,"author":{"gitId":"maj0-0"},"content":"| **List** | `list` |","lastModifiedDate":"2023-10-05"},{"lineNumber":276,"author":{"gitId":"Bearypop"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"maj0-0"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"neyapraveen":16,"Bearypop":6,"wnchan":21,"maj0-0":57,"PearlynnT":37,"-":140}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"maj0-0"},"content":" content: \"StudentConnect\";","lastModifiedDate":"2023-10-05"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"maj0-0":1,"-":293}},{"path":"docs/_sass/minima/skins/classic.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@charset \"utf-8\";","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"$brand-color: #828282 !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"$brand-color-light: lighten($brand-color, 40%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"$brand-color-dark: darken($brand-color, 25%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"$text-color: #111 !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"$background-color: #fdfdfd !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"$code-background-color: #eef !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"$link-base-color: #111754 !default;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"$link-visited-color: darken($link-base-color, 15%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"$table-text-color: lighten($text-color, 18%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"$table-zebra-color: lighten($brand-color, 46%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"$table-header-bg-color: lighten($brand-color, 43%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"$table-header-border: lighten($brand-color, 36%) !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"$table-border-color: $brand-color-light !default;","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"// Syntax highlighting styles should be adjusted appropriately for every \"skin\"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"// ----------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .c { color: #998; font-style: italic } // Comment","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .err { color: #a61717; background-color: #e3d2d2 } // Error","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .k { font-weight: bold } // Keyword","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .o { font-weight: bold } // Operator","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .cm { color: #998; font-style: italic } // Comment.Multiline","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .cp { color: #999; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .c1 { color: #998; font-style: italic } // Comment.Single","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .gd { color: #000; background-color: #fdd } // Generic.Deleted","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .ge { font-style: italic } // Generic.Emph","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .gr { color: #a00 } // Generic.Error","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .gh { color: #999 } // Generic.Heading","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .gi { color: #000; background-color: #dfd } // Generic.Inserted","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .go { color: #888 } // Generic.Output","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .gp { color: #555 } // Generic.Prompt","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .gs { font-weight: bold } // Generic.Strong","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .gu { color: #aaa } // Generic.Subheading","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .gt { color: #a00 } // Generic.Traceback","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .kc { font-weight: bold } // Keyword.Constant","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .kd { font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .kp { font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .kr { font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .kt { color: #458; font-weight: bold } // Keyword.Type","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .m { color: #099 } // Literal.Number","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .s { color: #d14 } // Literal.String","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .na { color: #008080 } // Name.Attribute","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .nb { color: #0086B3 } // Name.Builtin","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .nc { color: #458; font-weight: bold } // Name.Class","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .no { color: #008080 } // Name.Constant","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .ni { color: #800080 } // Name.Entity","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .ne { color: #900; font-weight: bold } // Name.Exception","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .nf { color: #900; font-weight: bold } // Name.Function","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .nn { color: #555 } // Name.Namespace","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .nt { color: #000080 } // Name.Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .nv { color: #008080 } // Name.Variable","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .ow { font-weight: bold } // Operator.Word","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .w { color: #bbb } // Text.Whitespace","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .mf { color: #099 } // Literal.Number.Float","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .mh { color: #099 } // Literal.Number.Hex","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .mi { color: #099 } // Literal.Number.Integer","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .mo { color: #099 } // Literal.Number.Oct","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sb { color: #d14 } // Literal.String.Backtick","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .sc { color: #d14 } // Literal.String.Char","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .sd { color: #d14 } // Literal.String.Doc","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .s2 { color: #d14 } // Literal.String.Double","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .se { color: #d14 } // Literal.String.Escape","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .sh { color: #d14 } // Literal.String.Heredoc","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .si { color: #d14 } // Literal.String.Interpol","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .sx { color: #d14 } // Literal.String.Other","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .sr { color: #009926 } // Literal.String.Regex","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .s1 { color: #d14 } // Literal.String.Single","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .ss { color: #990073 } // Literal.String.Symbol","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .bp { color: #999 } // Name.Builtin.Pseudo","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .vc { color: #008080 } // Name.Variable.Class","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .vg { color: #008080 } // Name.Variable.Global","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .vi { color: #008080 } // Name.Variable.Instance","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .il { color: #099 } // Literal.Number.Integer.Long","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"maj0-0":1,"-":83}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"title: StudentConnect Pro","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"PearlynnT":1,"-":18}},{"path":"docs/team/bearypop.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"layout: page","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"title: Yik Leong\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"### Project: StudentConnect","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"StudentConnect is a solution for hassle-free team formation for students to browse profiles and connect with others for group projects. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-02"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":"### New Feature: to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"### New Feature: to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":"### Enhancements to existing features:","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"* Update the `exit` feature [\\#15](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/15)","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":"### Testing:","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":"* Update tests for `add` command [\\#57](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/57)","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"* Update tests for `delete`, `edit` commands and Logic Manager [\\#58](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/58)","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":"### Code contributed: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dbearypop\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" ","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"### Documentation:","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"* User Guide:","lastModifiedDate":"2023-10-02"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" * Added documentation for the features `exit` [\\#15](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/15), [\\#61](https://github.com/AY2324S1-CS2103T-F12-2/tp/pull/61)","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":" * to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"* Developer Guide:","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":" * to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":"### Project management:","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Bearypop"},"content":"### Community:","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Bearypop"},"content":"### Tools:","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Bearypop"},"content":"* to be added soon","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"Bearypop"},"content":"_{you can add/remove categories in the list above}_","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Bearypop":43}},{"path":"docs/team/maj0-0.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"layout: page","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"title: Majedah\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"# Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":"## Code contributed","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":"* [to be added soon]()","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"* **New Feature**: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" * What it does: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" * Highlights: to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":"* Under features and command summary, the \u0027list\u0027 portion.","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":"* to be added soon","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"maj0-0":34}},{"path":"docs/team/neyapraveen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"neyapraveen"},"content":"---","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"neyapraveen"},"content":"layout: page","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"neyapraveen"},"content":"title: Neya\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"neyapraveen"},"content":"---","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"neyapraveen"},"content":"# Overview","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"neyapraveen"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group work.","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"neyapraveen"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"neyapraveen"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"neyapraveen"},"content":"## Code contributed","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"neyapraveen"},"content":"* [RepoSense link]()","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"neyapraveen"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":"* Changed `delete` feature to delete by email rather than by index.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":"* Changed test cases pertaining to `delete` feature","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"neyapraveen"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"neyapraveen"},"content":"* Added documentation for the feature `delete`.","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":"* Updated initial contents in DG after discussion(target user profile, value proposition, user stories, use cases, NFRs, Glossary )","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"neyapraveen"},"content":"* Under Use-cases, the feature `delete`.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"neyapraveen"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"neyapraveen"},"content":"* Did equal share of tasks assigned","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":"* to be added soon","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"neyapraveen"},"content":"* to be added soon","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"neyapraveen":33}},{"path":"docs/team/pearlynnt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"title: Pearlynn Toh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"### Project: StudentConnect","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"StudentConnect is a desktop application that stores and organises students’ contact details, and project group. Students can easily search for the profiles of other students and connect with potential teammates. This streamlines the process of forming project teams. It also offers tools for tracking project progress/deadlines, ensuring that the group stays on task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"* **Find Feature**: Added the ability to find student(s) by name","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" * What it does: allows the user to find a student by name with a partial keyword.","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" * Justification:","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" * Highlights:","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"* **Code Contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dpearlynnt\u0026breakdown\u003dfalse\u0026sort\u003dgroupTitle%20dsc\u0026sortWithin\u003dtitle\u0026since\u003d2023-09-22\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos)","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"PearlynnT":23}},{"path":"docs/team/wnchan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"# Overview","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"StudentConnect is the solution for hassle-free team formation for CS2103T students to browse profiles and connect with others for group projects.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"# Summary of Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"## Code contributed","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"* [to be added soon]()","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"## Enhancements implemented","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"* **New Feature**: Added the ability to add the student\u0027s personal details into the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" * What it does: allows the user to add their personal details into the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in the future.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"## Contributions to the UG","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"* Under features and command summary, the \u0027add\u0027 portion (including image).","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":"## Contributions to the DG","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":"* Under Use-cases, the \u0027add\u0027 feature.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":"## Contributions to team-based tasks","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":"* Did equal share of tasks assigned","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":"## Review/ mentoring contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":"* to be added soon","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"## Contributions beyond the project team","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":"* to be added soon","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"wnchan":30}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" * Ignores case, accepts a partial word match.","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" * containsIgnoreCase(\"ABc def\", \"abcd\") \u003d\u003d false","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" * @param sentence cannot be null","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" * @param str cannot be null, cannot be empty, must be a single string","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" public static boolean containsIgnoreCase(String sentence, String str) {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(sentence);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(str);","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" String preppedStr \u003d str.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" checkArgument(!preppedStr.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" checkArgument(preppedStr.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" .anyMatch(word -\u003e word.toLowerCase().contains(preppedStr.toLowerCase()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"PearlynnT":28,"-":68}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_EMAIL \u003d \"The email provided is invalid\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" builder.append(\"Name: \").append(person.getName())","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" .append(\"; Major: \").append(person.getMajor())","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" .append(\"; Year: \").append(person.getYear())","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" .append(\"; Email: \").append(person.getEmail())","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" .append(\"; Description: \").append(person.getDescription())","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":" .append(\"; Tutorial: \").append(person.getTutorials())","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" .append(\"; Social Media: \").append(person.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":5,"maj0-0":1,"PearlynnT":2,"-":42}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" * Adds a person to StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to StudentConnect. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" + PREFIX_MAJOR + \"MAJOR \"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" + PREFIX_YEAR + \"YEAR \"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" + PREFIX_DESCRIPTION + \"DESCRIPTION \"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TUTORIAL]...\\n \"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_LINK + \"SOCIAL_MEDIA_LINK]...\\n\"","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" + PREFIX_MAJOR + \"Computer Science \"","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" + PREFIX_YEAR + \"2 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" + PREFIX_EMAIL + \"johnd@u.nus.edu \"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" + PREFIX_DESCRIPTION + \"I love programming in my free time \"","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" + PREFIX_TUTORIAL + \"02 17 20 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + \"https://www.linkedin.com/in/john-doe-123456789 \";","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Details added successfully! New student added: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student is already on StudentConnect as this \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" + \"email has already been used.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":18,"maj0-0":3,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_SUCCESS \u003d \"All student data has been cleared.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"maj0-0":1,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"neyapraveen"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":" + \": Deletes the person identified by the email address.\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" + \"Parameters: EMAIL\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"neyapraveen"},"content":" + \"Example: \" + COMMAND_WORD + \" alexyeoh@u.nus.edu\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"neyapraveen"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Person deleted Successfully! Deleted Person: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" public static final String MESSAGE_DELETE_EMAIL_NOT_FOUND \u003d \"Person with the provided email not found.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":" private final Email targetEmail;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" public DeleteCommand(Email targetEmail) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":" this.targetEmail \u003d targetEmail;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"neyapraveen"},"content":" // Find the person with the provided email","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"neyapraveen"},"content":" Optional\u003cPerson\u003e personToDelete \u003d model.getPersonWithEmail(targetEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"neyapraveen"},"content":" if (personToDelete.isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":" throw new CommandException(MESSAGE_DELETE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"neyapraveen"},"content":" // Delete the person from the model","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"neyapraveen"},"content":" model.deletePerson(personToDelete.get());","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete.get())));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"neyapraveen"},"content":" return targetEmail.equals(otherDeleteCommand.targetEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"neyapraveen"},"content":" .add(\"targetEmail\", targetEmail)","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"neyapraveen":18,"Bearypop":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" * Edits the details of an existing person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" + \"by the email used in the displayed person list. \"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" + \"Parameters: EMAIL (must end with u.nus.edu) \"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_MAJOR + \"MAJOR] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_YEAR + \"YEAR] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_DESCRIPTION + \"DESCRIPTION] \"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TUTORIAL]...\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_LINK + \"SOCIAL_MEDIA_LINK]...\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" + \"Example: \" + COMMAND_WORD + \" johnd@u.nus.edu \"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_YEAR + \"3 \"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_EMAIL + \"johndoe@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Details edited successfully! Edited Student: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student is already on StudentConnect as this \"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" + \"email has already been used.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_EMAIL_NOT_FOUND \u003d \"Student with the provided email not found.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" private final Email email;","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" * @param email of the person in the filtered person list to edit","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" public EditCommand(Email email, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" // Find the person with the provided email","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" Optional\u003cPerson\u003e personToEdit \u003d model.getPersonWithEmail(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" if (personToEdit.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":" throw new CommandException(MESSAGE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit.get(), editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" if (!personToEdit.get().isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" model.setPerson(personToEdit.get(), editedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"PearlynnT"},"content":" Major updatedMajor \u003d editPersonDescriptor.getMajor().orElse(personToEdit.getMajor());","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" Year updatedYear \u003d editPersonDescriptor.getYear().orElse(personToEdit.getYear());","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" Description updatedDescription \u003d editPersonDescriptor.getDescription().orElse(personToEdit.getDescription());","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e updatedTutorials \u003d editPersonDescriptor.getTutorials()","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"maj0-0"},"content":" .orElse(personToEdit.getTutorials());","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"maj0-0"},"content":" Set\u003cSocialMediaLink\u003e updatedSocialMediaLinks \u003d editPersonDescriptor.getSocialMediaLinks()","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"PearlynnT"},"content":" .orElse(personToEdit.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" return new Person(updatedName, updatedMajor, updatedYear, updatedEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" updatedDescription, updatedTutorials, updatedSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"PearlynnT"},"content":" return email.equals(otherEditCommand.email)","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"PearlynnT"},"content":" private Major major;","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" private Year year;","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":" private Description description;","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"maj0-0"},"content":" private Set\u003cTutorial\u003e tutorials;","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":" private Set\u003cSocialMediaLink\u003e socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":" * A defensive copy of {@code socialMediaLinks} is used internally.","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"PearlynnT"},"content":" setMajor(toCopy.major);","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"PearlynnT"},"content":" setYear(toCopy.year);","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"PearlynnT"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"maj0-0"},"content":" setTutorials(toCopy.tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":" setSocialMediaLinks(toCopy.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"maj0-0"},"content":" return CollectionUtil.isAnyNonNull(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"PearlynnT"},"content":" public void setMajor(Major major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"PearlynnT"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cMajor\u003e getMajor() {","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(major);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"PearlynnT"},"content":" public void setYear(Year year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"PearlynnT"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cYear\u003e getYear() {","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(year);","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"PearlynnT"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"PearlynnT"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"maj0-0"},"content":" public void setTutorials(Set\u003cTutorial\u003e tutorials) {","lastModifiedDate":"2023-10-22"},{"lineNumber":220,"author":{"gitId":"maj0-0"},"content":" this.tutorials \u003d tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"maj0-0"},"content":" public Optional\u003cSet\u003cTutorial\u003e\u003e getTutorials() {","lastModifiedDate":"2023-10-22"},{"lineNumber":224,"author":{"gitId":"maj0-0"},"content":" return Optional.ofNullable(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"PearlynnT"},"content":" public void setSocialMediaLinks(Set\u003cSocialMediaLink\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks \u003d (socialMediaLinks !\u003d null) ? new HashSet\u003c\u003e(socialMediaLinks) : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":240,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cSet\u003cSocialMediaLink\u003e\u003e getSocialMediaLinks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"PearlynnT"},"content":" return (socialMediaLinks !\u003d null) ? Optional.of(Collections.unmodifiableSet(socialMediaLinks))","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"PearlynnT"},"content":" : Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":258,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(major, otherEditPersonDescriptor.major)","lastModifiedDate":"2023-10-15"},{"lineNumber":259,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(year, otherEditPersonDescriptor.year)","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(description, otherEditPersonDescriptor.description)","lastModifiedDate":"2023-10-15"},{"lineNumber":262,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 Objects.equals(tutorials, otherEditPersonDescriptor.tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":263,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 Objects.equals(socialMediaLinks, otherEditPersonDescriptor.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"PearlynnT"},"content":" .add(\"major\", major)","lastModifiedDate":"2023-10-15"},{"lineNumber":271,"author":{"gitId":"PearlynnT"},"content":" .add(\"year\", year)","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"PearlynnT"},"content":" .add(\"description\", description)","lastModifiedDate":"2023-10-15"},{"lineNumber":274,"author":{"gitId":"maj0-0"},"content":" .add(\"tutorials\", tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":275,"author":{"gitId":"PearlynnT"},"content":" .add(\"social media links\", socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Bearypop":1,"wnchan":5,"maj0-0":17,"PearlynnT":72,"-":184}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Thank you for using StudentConnect!\\n\"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" + \"Exiting the application now…\";","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Bearypop":2,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" * Finds and lists all persons in StudentConnect whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"PearlynnT":1,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all students\";","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_FAILURE \u003d \"Error: Unable to retrieve student entries. Please try again.\";","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"maj0-0":2,"-":22}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":" PREFIX_DESCRIPTION, PREFIX_TUTORIAL, PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION)","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"Bearypop"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR,","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" PREFIX_EMAIL, PREFIX_TUTORIAL, PREFIX_DESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" Major major \u003d ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" Year year \u003d ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" Description description \u003d ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e tutorialSet \u003d ParserUtil.parseTutorials(argMultimap.getAllValues(PREFIX_TUTORIAL));","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinkList \u003d ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" argMultimap.getAllValues(PREFIX_SOCIAL_MEDIA_LINK));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"maj0-0"},"content":" Person person \u003d new Person(name, major, year, email, description, tutorialSet, socialMediaLinkList);","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Bearypop":1,"wnchan":12,"maj0-0":6,"PearlynnT":4,"-":48}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":1,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_MAJOR \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"y/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" public static final Prefix PREFIX_TUTORIAL \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_LINK \u003d new Prefix(\"sm/\");","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wnchan":4,"maj0-0":1,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d ParserUtil.parseEmail(args);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" return new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"neyapraveen":4,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" PREFIX_DESCRIPTION, PREFIX_TUTORIAL, PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" Email email;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getPreamble());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_MAJOR).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setMajor(ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_YEAR).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setYear(ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" editPersonDescriptor.setDescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e tutorialsStrings \u003d argMultimap.getAllValues(PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" if (!tutorialsStrings.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e tutorialList \u003d ParserUtil.parseTutorials(tutorialsStrings);","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":" editPersonDescriptor.setTutorials(tutorialList);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" parseSocialMediaLinksForEdit(argMultimap.getAllValues(PREFIX_SOCIAL_MEDIA_LINK))","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" .ifPresent(editPersonDescriptor::setSocialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" return new EditCommand(email, editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" * Parses {@code Collection\u003cString\u003e socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e}","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" * if {@code socialMediaLinks} is non-empty.","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" * If {@code socialMediaLinks} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" * {@code Set\u003cSocialMediaLink\u003e} containing zero tags.","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" private Optional\u003cSet\u003cSocialMediaLink\u003e\u003e parseSocialMediaLinksForEdit(Collection\u003cString\u003e socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" assert socialMediaLinks !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" Collection\u003cString\u003e socialMediaLinkSet \u003d socialMediaLinks.size() \u003d\u003d 1 \u0026\u0026 socialMediaLinks.contains(\"\")","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" ? Collections.emptySet() : socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" return Optional.of(ParserUtil.parseSocialMediaLinks(socialMediaLinkSet));","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"maj0-0":9,"PearlynnT":33,"-":63}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String major} into a {@code Major}.","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code major} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" public static Major parseMajor(String major) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" requireNonNull(major);","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" String trimmedMajor \u003d major.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" if (!Major.isValidMajor(trimmedMajor)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wnchan"},"content":" return new Major(trimmedMajor);","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String year} into a {@code Year}.","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" public static Year parseYear(String year) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"wnchan"},"content":" requireNonNull(year);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":" String trimmedYear \u003d year.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"wnchan"},"content":" if (!Year.isValidYear(trimmedYear)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":" return new Year(trimmedYear);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"wnchan"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"wnchan"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"maj0-0"},"content":" * Parses {@code Collection\u003cString\u003e tutorials} into a {@code Set\u003cTutorial\u003e}.","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"maj0-0"},"content":" * @throws ParseException if any of the given {@code tutorials} is invalid.","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"maj0-0"},"content":" public static Set\u003cTutorial\u003e parseTutorials(Collection\u003cString\u003e tutorials) throws ParseException {","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"maj0-0"},"content":" requireNonNull(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e tutorialSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"maj0-0"},"content":" for (String tutorialString : tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"maj0-0"},"content":" String[] tutorialTokens \u003d tutorialString.split(\" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":" for (String token : tutorialTokens) {","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"maj0-0"},"content":" if (!Tutorial.isValidTutorial(token)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":" throw new ParseException(Tutorial.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"maj0-0"},"content":" tutorialSet.add(new Tutorial(token));","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":" return tutorialSet;","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"wnchan"},"content":" * Parses a {@code String socialMediaLink} into a {@code SocialMediaLink}.","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"wnchan"},"content":" * @throws ParseException if the given {@code socialMediaLink} is invalid.","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" public static SocialMediaLink parseSocialMediaLink(String socialMediaLink) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"wnchan"},"content":" requireNonNull(socialMediaLink);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"wnchan"},"content":" String trimmedSocialMediaLink \u003d socialMediaLink.trim();","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"wnchan"},"content":" if (!SocialMediaLink.isValidSocialMediaLink(trimmedSocialMediaLink)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"wnchan"},"content":" throw new ParseException(SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":129,"author":{"gitId":"wnchan"},"content":" return new SocialMediaLink(trimmedSocialMediaLink);","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"PearlynnT"},"content":" * Parses {@code Collection\u003cString\u003e socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e}.","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":" public static Set\u003cSocialMediaLink\u003e parseSocialMediaLinks(Collection\u003cString\u003e socialMediaLinks)","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"PearlynnT"},"content":" throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" final Set\u003cSocialMediaLink\u003e socialMediaLinkSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":" for (String socialMedia : socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinkSet.add(parseSocialMediaLink(socialMedia));","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLinkSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wnchan":43,"maj0-0":18,"PearlynnT":10,"-":73}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a person with the same identity as {@code person} exists in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" * The person must exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" * {@code person} must not already exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" * {@code target} must exist in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" Optional\u003cPerson\u003e getPersonWithEmail(Email email);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"PearlynnT":9,"-":82}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"PearlynnT"},"content":" public Optional\u003cPerson\u003e getPersonWithEmail(Email email) {","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":" // Iterate through the filtered list of persons","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":" if (person.getEmail().equals(email)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"PearlynnT"},"content":" return Optional.of(person);","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"PearlynnT":15,"-":148}},{"path":"src/main/java/seedu/address/model/person/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s description in StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Description {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Descriptions should not be left blank or exceed 150 characters.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^.{1,150}$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Description} with the specified description value.","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" * @param description The description value. Must not be null.","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public Description(String description) {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" value \u003d description;","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" || (other instanceof Description // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 value.equals(((Description) other).value)); // state check","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wnchan":48,"PearlynnT":6}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name should be \u0027u.nus.edu\u0027 \";","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" private static final String DOMAIN_PART_REGEX \u003d \"u\\\\.nus\\\\.edu\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_PART_REGEX;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wnchan":4,"-":68}},{"path":"src/main/java/seedu/address/model/person/Major.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s major in StudentConnect.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMajor(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Major {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Majors should not be blank and must be a valid\"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" + \" major offered at NUS.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wnchan"},"content":" private static final String[] VALID_NUS_MAJORS \u003d {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":" \"Accounting\",","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":" \"Actuarial Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":" \"Architecture\",","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" \"Biological Sciences\",","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" \"Biomedical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" \"Business Administration\",","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" \"Business Analytics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" \"Chemical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" \"Chemistry\",","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" \"Civil Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" \"Computer Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" \"Computer Science\",","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" \"Data Science and Analytics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" \"Dentistry\",","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" \"Economics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" \"Electrical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" \"Environmental Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" \"Food Science and Technology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" \"Geography\",","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" \"Information Systems\",","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" \"Information Security\",","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" \"Law\",","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" \"Life Sciences\",","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" \"Management\",","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" \"Marketing\",","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" \"Materials Science and Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" \"Mathematics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" \"Mechanical Engineering\",","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" \"Medicine\",","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" \"Pharmacy\",","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" \"Physics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" \"Political Science\",","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" \"Psychology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" \"Real Estate\",","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" \"Sociology\",","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" \"Statistics\",","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" \"Theatre Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" \"Urban Studies\",","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" \"Visual Communications\",","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" };","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Major} with the specified major value.","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" * @param major The major value. Must not be null.","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"wnchan"},"content":" public Major(String major) {","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"wnchan"},"content":" requireNonNull(major);","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidMajor(major), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wnchan"},"content":" value \u003d capitaliseFirstLetterOfEachWord(major);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wnchan"},"content":" private String capitaliseFirstLetterOfEachWord(String text) {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"wnchan"},"content":" String[] words \u003d text.split(\"\\\\s\");","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wnchan"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" for (String word : words) {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"wnchan"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"wnchan"},"content":" result.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1).toLowerCase());","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"wnchan"},"content":" result.append(\" \"); // Add a space between words","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"wnchan"},"content":" if (result.length() \u003e 0) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"wnchan"},"content":" result.setLength(result.length() - 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wnchan"},"content":" return result.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"wnchan"},"content":" * Returns if a given string is a valid major offered at NUS.","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"wnchan"},"content":" public static boolean isValidMajor(String major) {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"wnchan"},"content":" for (String validMajor : VALID_NUS_MAJORS) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"wnchan"},"content":" if (major.equalsIgnoreCase(validMajor)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"wnchan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"wnchan"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"wnchan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":" || (other instanceof Major // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 value.equals(((Major) other).value)); // state check","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":114,"PearlynnT":1}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":" \"Names should only contain alphabetical characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alpha}][\\\\p{Alpha} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" fullName \u003d capitaliseFirstLetterOfEachWord(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" private String capitaliseFirstLetterOfEachWord(String text) {","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" String[] words \u003d text.split(\"\\\\s\");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" for (String word : words) {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" result.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1).toLowerCase());","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" result.append(\" \"); // Add a space between words","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" if (result.length() \u003e 0) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" result.setLength(result.length() - 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":" return result.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wnchan":20,"-":64}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" .anyMatch(keyword -\u003e StringUtil.containsIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"PearlynnT":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" * Represents a Person in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" private final Major major;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" private final Year year;","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" private final Description description;","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" private final Set\u003cSocialMediaLink\u003e socialMediaLinks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":" private final Set\u003cTutorial\u003e tutorials \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" public Person(Name name, Major major, Year year, Email email, Description description, Set\u003cTutorial\u003e tutorials,","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" requireAllNonNull(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":" this.tutorials.addAll(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks.addAll(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" public Major getMajor() {","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" return major;","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" public Year getYear() {","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" return year;","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" public Description getDescription() {","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":" return description;","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"maj0-0"},"content":" public Set\u003cTutorial\u003e getTutorials() {","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"maj0-0"},"content":" return Collections.unmodifiableSet(tutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" public Set\u003cSocialMediaLink\u003e getSocialMediaLinks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" return Collections.unmodifiableSet(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"wnchan"},"content":" * Returns true if both persons have the same email.","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 major.equals(otherPerson.major)","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 year.equals(otherPerson.year)","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":" \u0026\u0026 description.equals(otherPerson.description)","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 tutorials.equals(otherPerson.tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" \u0026\u0026 socialMediaLinks.equals(otherPerson.socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":" return Objects.hash(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"wnchan"},"content":" .add(\"major\", major)","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"wnchan"},"content":" .add(\"year\", year)","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"wnchan"},"content":" .add(\"description\", description)","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":" .add(\"tutorials\", tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":" .add(\"socialMediaLinks\", socialMediaLinks)","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wnchan":22,"maj0-0":13,"PearlynnT":8,"-":86}},{"path":"src/main/java/seedu/address/model/person/Year.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wnchan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wnchan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wnchan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":" * Represents a Student\u0027s numeric year level","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"wnchan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidYear(String)}","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"wnchan"},"content":"public class Year {","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" \"Year should only contain numbers, and it should be 1 digit long between 1 and 6.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-6]$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wnchan"},"content":" public final String value;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"wnchan"},"content":" * Constructs a {@code Year}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"wnchan"},"content":" *","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":" * @param year A valid year.","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"wnchan"},"content":" public Year(String year) {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" requireNonNull(year);","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" checkArgument(isValidYear(year), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"wnchan"},"content":" value \u003d year;","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" * Returns true if a given string is a valid year.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" public static boolean isValidYear(String test) {","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" return value;","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" return true;","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" if (!(other instanceof Year)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" return false;","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" Year otherYear \u003d (Year) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"wnchan"},"content":" return value.equals(otherYear.value);","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":"}","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wnchan":59,"PearlynnT":4}},{"path":"src/main/java/seedu/address/model/socialmedialink/SocialMediaLink.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.socialmedialink;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":" * Represents a Social Media in StudentConnect.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidSocialMediaLink(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class SocialMediaLink {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Social media links should start with \\\"http://\\\", or \"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" + \"\\\"https://\\\", followed by one or more alphanumeric characters, dots, or hyphens in the domain name\";","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" public static final String VALIDATION_REGEX \u003d \"^(https?|ftp)://[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,4}(:[0-9]+)?(/.*)?$\";","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" public final String socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" * Constructs a {@code SocialMedia}.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" * @param socialMediaLink A valid social media link.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" public SocialMediaLink(String socialMediaLink) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" requireNonNull(socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" checkArgument(isValidSocialMediaLink(socialMediaLink), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLink \u003d socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" * Returns true if a given string is a valid social media link.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public static boolean isValidSocialMediaLink(String test) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" if (!(other instanceof SocialMediaLink)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink otherSocialMedia \u003d (SocialMediaLink) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink.equals(otherSocialMedia.socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" return \u0027[\u0027 + socialMediaLink + \u0027]\u0027;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":62}},{"path":"src/main/java/seedu/address/model/tutorial/Tutorial.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.model.tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":" * Represents a Student\u0027s tutorial in StudentConnect.","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTutorial(String)}","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"public class Tutorial {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tutorials should be 2-digit numbers between 01 and 22, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" + \"separated by spaces.\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" public static final String VALIDATION_REGEX \u003d \"^(0[1-9]|1\\\\d|2[0-2])$\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":" public final String value;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" * Constructs a {@code Tutorial} with the specified tutorial value.","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" * @param tutorial The tutorial value. Must not be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" public Tutorial(String tutorial) {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" requireNonNull(tutorial);","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" checkArgument(isValidTutorial(tutorial), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" value \u003d tutorial;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" * Returns if a given string is a valid tutorial number between 01 and 22.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":" public static boolean isValidTutorial(String tutorial) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" return tutorial.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" public String getValue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" return value;","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":" return \"T\" + value;","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" || (other instanceof Tutorial // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"maj0-0"},"content":" \u0026\u0026 value.equals(((Tutorial) other).value)); // state check","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":57}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Alex Yeoh\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"wnchan"},"content":" new Email(\"alexyeoh@u.nus.edu\"), new Description(\"Friendly person\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"01\", \"20\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/alex\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Bernice Yu\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"wnchan"},"content":" new Email(\"berniceyu@u.nus.edu\"), new Description(\"Colleague from work\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"08\", \"19\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/bernice\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" new Email(\"charlotte@u.nus.edu\"), new Description(\"Neighbour\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"05\", \"06\", \"10\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/charlotte\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"David Li\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" new Email(\"lidavid@u.nus.edu\"), new Description(\"Family member\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"11\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/david\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" new Email(\"irfan@u.nus.edu\"), new Description(\"Classmate\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"07\", \"18\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/irfan\")),","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Major(\"Computer Science\"), new Year(\"2\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" new Email(\"royb@u.nus.edu\"), new Description(\"Colleague from work\"),","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" getTutorialSet(\"11\", \"19\", \"22\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" getSocialMediaLinkSet(\"https://example.com/roy\"))","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"maj0-0"},"content":" public static Set\u003cTutorial\u003e getTutorialSet(String... tutorials) {","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" return Arrays.stream(tutorials)","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" public static Set\u003cSocialMediaLink\u003e getSocialMediaLinkSet(String... strings) {","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" .map(SocialMediaLink::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-14"}],"authorContributionMap":{"wnchan":16,"maj0-0":13,"PearlynnT":9,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"wnchan"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" private final String major;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"wnchan"},"content":" private final String year;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" private final String description;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" private final List\u003cString\u003e tutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" private final List\u003cJsonAdaptedSocialMedia\u003e socialMediaLinks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"major\") String major,","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"year\") String year,","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" @JsonProperty(\"tutorials\") List\u003cString\u003e tutorials,","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" @JsonProperty(\"socialMediaLinks\") List\u003cJsonAdaptedSocialMedia\u003e socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" this.major \u003d major;","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"wnchan"},"content":" this.year \u003d year;","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" if (tutorials !\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" this.tutorials.addAll(tutorials);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks !\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks.addAll(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"wnchan"},"content":" major \u003d source.getMajor().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" year \u003d source.getYear().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"wnchan"},"content":" description \u003d source.getDescription().value;","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" tutorials.addAll(source.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::getValue)","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks.addAll(source.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" .map(JsonAdaptedSocialMedia::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" final List\u003cSocialMediaLink\u003e personSocialMediaLinks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"maj0-0"},"content":" final List\u003cTutorial\u003e personTutorials \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" for (JsonAdaptedSocialMedia socialMediaLink : socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" personSocialMediaLinks.add(socialMediaLink.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"wnchan"},"content":" if (major \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"wnchan"},"content":" if (!Major.isValidMajor(major)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"wnchan"},"content":" final Major modelMajor \u003d new Major(major);","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"wnchan"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"wnchan"},"content":" if (year \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"wnchan"},"content":" if (!Year.isValidYear(year)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":112,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"wnchan"},"content":" final Year modelYear \u003d new Year(year);","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"wnchan"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"wnchan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"wnchan"},"content":" Description.class.getSimpleName()));","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"wnchan"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"wnchan"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"wnchan"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"maj0-0"},"content":" final Set\u003cTutorial\u003e modelTutorials \u003d new HashSet\u003c\u003e(personTutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":" final Set\u003cSocialMediaLink\u003e modelSocialMediaLinks \u003d new HashSet\u003c\u003e(personSocialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"maj0-0"},"content":" return new Person(modelName, modelMajor, modelYear, modelEmail, modelDescription,","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"maj0-0"},"content":" modelTutorials, modelSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"wnchan"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"wnchan":37,"maj0-0":14,"PearlynnT":11,"-":78}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSocialMedia.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":" * Jackson-friendly version of {@link SocialMediaLink}.","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"public class JsonAdaptedSocialMedia {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" private final String socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" * Constructs a {@code JsonAdaptedSocial} with the given {@code socialMediaLink}.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" public JsonAdaptedSocialMedia(String socialMediaLink) {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLink \u003d socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" * Converts a given {@code SocialMedia} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" public JsonAdaptedSocialMedia(SocialMediaLink source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" socialMediaLink \u003d source.socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" @JsonValue","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public String getSocialMediaLink() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" return socialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" * Converts this Jackson-friendly adapted social media object into the model\u0027s {@code SocialMedia} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted social media.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public SocialMediaLink toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" if (!SocialMediaLink.isValidSocialMediaLink(socialMediaLink)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" throw new IllegalValueException(SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" return new SocialMediaLink(socialMediaLink);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":47}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"Bearypop"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(2));","lastModifiedDate":"2023-10-02"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":" pause.setOnFinished(event -\u003e {","lastModifiedDate":"2023-10-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"Bearypop"},"content":" });","lastModifiedDate":"2023-10-02"},{"lineNumber":169,"author":{"gitId":"Bearypop"},"content":" pause.play();","lastModifiedDate":"2023-10-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"Bearypop":6,"-":196}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"wnchan"},"content":" private Label major;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"wnchan"},"content":" private Label year;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"wnchan"},"content":" private Label description;","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"wnchan"},"content":" @FXML","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" private Label tutorials;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private FlowPane socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" id.setStyle(\"-fx-font-size: 17px; -fx-text-fill: #E7BE34; -fx-font-family: \u0027Arial\u0027;\"); // styling like name","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" major.setText(person.getMajor().value);","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":" year.setText(\"Y\" + person.getYear().value);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"wnchan"},"content":" description.setText(person.getDescription().value);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" String tutorialsText \u003d person.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" .map(t -\u003e \"T\" + t.getValue())","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" .sorted()","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"maj0-0"},"content":" tutorials.setText(tutorialsText);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" person.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" .sorted(Comparator.comparing(sm -\u003e sm.socialMediaLink))","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" .forEach(sm -\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" Label label \u003d new Label(sm.socialMediaLink);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":" label.setStyle(\"-fx-font-size: 13px; -fx-text-fill: white; -fx-font-family: \u0027Segoe UI Semibold\u0027;\");","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" socialMediaLinks.getChildren().add(label);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":" });","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"wnchan":6,"maj0-0":15,"PearlynnT":3,"-":43}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"neyapraveen"},"content":" background-color: #0e365c; /* Used in the default.html file */","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #757575; /* Light gray text */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"neyapraveen"},"content":".label-bold {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Arial\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34; /* Mustard color */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"neyapraveen"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"neyapraveen"},"content":" -fx-base: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"neyapraveen"},"content":" -fx-control-inner-background: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":" -fx-table-cell-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"neyapraveen"},"content":" -fx-table-header-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":" -fx-table-cell-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"neyapraveen"},"content":" -fx-table-header-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"neyapraveen"},"content":" #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":78,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color */","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: transparent transparent transparent #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"neyapraveen"},"content":" -fx-border-width: 1; /* Decrease border thickness */","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":102,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #396987; /* Slightly brighter blue */","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #4781a5; /* Another shade of blue */","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #6b9ebf; /* A brighter blue color */","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Arial\";","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"neyapraveen"},"content":" -fx-font-size: 17px;","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34;","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"neyapraveen"},"content":" -fx-font-weight: bold","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":147,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":151,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":162,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Courier New\";","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"neyapraveen"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":173,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #3949AB; /* Another shade of blue border color */","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #3F51B5; /* Slightly brighter blue border color */","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":195,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3949AB; /* Another shade of blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":213,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #1A237E; /* Darker blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #E7BE34; /* Mustard yellow border color */","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color on hover */","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: white; /* White background on click */","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #303F9F; /* Dark blue text on click */","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3F51B5; /* Slightly brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue color */","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #304FFE; /* Bright blue color on hover */","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #3949AB; /* Another shade of blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34;","lastModifiedDate":"2023-10-19"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c; /* Darker navy blue background */","lastModifiedDate":"2023-10-19"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #807e7e;","lastModifiedDate":"2023-10-19"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #F70D1A; /* Reddish text for the command type label */","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: transparent #000080 transparent #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"neyapraveen"},"content":" -fx-border-color: #0e365c #0e365c #0e365c #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"neyapraveen"},"content":" -fx-font-family: \"Courier New\";","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"maj0-0"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-19"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: transparent, #0e365c, transparent, #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: white; /* White text */","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #536DFE; /* A brighter blue background */","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":361,"author":{"gitId":"neyapraveen"},"content":"#name-label {","lastModifiedDate":"2023-10-19"},{"lineNumber":362,"author":{"gitId":"neyapraveen"},"content":" -fx-text-fill: #E7BE34 /* Mustard text color for the \"name\" label */","lastModifiedDate":"2023-10-19"},{"lineNumber":363,"author":{"gitId":"neyapraveen"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"neyapraveen":86,"maj0-0":1,"-":276}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"neyapraveen"},"content":" -fx-background: #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"neyapraveen":1,"-":19}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"neyapraveen"},"content":" -fx-background-color: #0e365c;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"neyapraveen":1,"-":18}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel fx:id\u003d\"name\" id\u003d\"name-label\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eMajor:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eYear:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"year\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$year\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eEmail:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eDescription:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"neyapraveen"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eTutorials:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":" \u003cLabel fx:id\u003d\"tutorials\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tutorials\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"neyapraveen"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"neyapraveen"},"content":" \u003cLabel styleClass\u003d\"label-bold\"\u003eSocial Media:\u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"neyapraveen"},"content":" \u003cFlowPane fx:id\u003d\"socialMediaLinks\" style\u003d\"-fx-font-size: 10px; -fx-text-fill: #FFDB58;\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"neyapraveen":16,"maj0-0":4,"PearlynnT":4,"-":31}},{"path":"src/test/java/seedu/address/commons/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" public void getSamplePersons_validData_returnsSamplePersonsArray() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" assertEquals(6, samplePersons.length); // Check if the correct number of sample persons is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" public void getSampleAddressBook_validData_returnsReadOnlyAddressBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" assertEquals(6, SampleDataUtil.getSampleAddressBook().getPersonList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":" // Check if the address book contains the correct number of sample persons","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" public void getTutorialSet_validData_returnsSetOfTutorials() {","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" String[] tutorialStrings \u003d {\"01\", \"02\", \"03\"};","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" assertEquals(3, SampleDataUtil.getTutorialSet(tutorialStrings).size());","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" // Check if the correct number of tutorials is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" public void getSocialMediaLinkSet_validData_returnsSetOfSocialMediaLinks() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":" String[] socialMediaLinkStrings \u003d {\"https://example.com/1\", \"https://example.com/2\"};","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" assertEquals(2, SampleDataUtil.getSocialMediaLinkSet(socialMediaLinkStrings).size());","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":" // Check if the correct number of social media links is returned","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":37}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_DELETE_EMAIL_NOT_FOUND;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":" String deleteCommand \u003d \"delete notFound@u.nus.edu\";","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" assertCommandException(deleteCommand, MESSAGE_DELETE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"PearlynnT"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + MAJOR_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withSocialMediaLinks().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Bearypop":3,"PearlynnT":6,"-":167}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"Bearypop"},"content":" public Optional\u003cPerson\u003e getPersonWithEmail(Email email) {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"Bearypop"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Bearypop":7,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_MAJOR_AMY \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_MAJOR_BOB \u003d \"Information Systems\";","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_YEAR_AMY \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_YEAR_BOB \u003d \"3\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Frontend Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Backend Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_LINKEDIN_AMY \u003d \"https://www.linkedin.com/in/amy\";","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_GITHUB_AMY \u003d \"https://github.com/amy\";","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_LINKEDIN_BOB \u003d \"https://www.linkedin.com/in/bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" public static final String VALID_SM_GITHUB_BOB \u003d \"https://github.com/bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" public static final String MAJOR_DESC_AMY \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" public static final String MAJOR_DESC_BOB \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public static final String YEAR_DESC_AMY \u003d \" \" + PREFIX_YEAR + VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" public static final String YEAR_DESC_BOB \u003d \" \" + PREFIX_YEAR + VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" public static final String SM_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_LINKEDIN_AMY + \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" public static final String SM_DESC_BOB \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_LINKEDIN_BOB + \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" + PREFIX_SOCIAL_MEDIA_LINK + VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_MAJOR_DESC \u003d \" \" + PREFIX_MAJOR + \"Computer Games\"; // not in list of majors","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_YEAR_DESC \u003d \" \" + PREFIX_YEAR + \"-1\"; // negative integer not allowed for year","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" + PREFIX_DESCRIPTION; // empty string not allowed for description","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" public static final String INVALID_SM_DESC \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" + \"example.com\"; // does not start with https://","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_AMY).withEmail(VALID_EMAIL_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Bearypop":1,"maj0-0":1,"PearlynnT":38,"-":102}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"neyapraveen"},"content":" public void execute_validEmailUnfilteredList_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"neyapraveen"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"neyapraveen"},"content":" Email emailToDelete \u003d personToDelete.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(emailToDelete);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"neyapraveen"},"content":" public void execute_invalidEmailUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":" Email invalidEmail \u003d new Email(\"invalid@u.nus.edu\"); // Use an email that doesn\u0027t exist in the test data","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidEmail);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"neyapraveen"},"content":" assertCommandFailure(deleteCommand, model, \"Person with the provided email not found.\");","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"neyapraveen"},"content":" Person person \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"neyapraveen"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Bearypop"},"content":" Email email2 \u003d model.getFilteredPersonList().get(1)","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Bearypop"},"content":" .getEmail(); // Assuming the second person in the list is used","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(email2);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"neyapraveen"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"neyapraveen"},"content":" Person person \u003d model.getFilteredPersonList().get(0); // Assuming the first person in the list is used","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"neyapraveen"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"neyapraveen"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(email);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"neyapraveen"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetEmail\u003d\" + email + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"neyapraveen":19,"Bearypop":3,"-":72}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.EditCommand.MESSAGE_EMAIL_NOT_FOUND;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_SECOND_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" PersonBuilder personInList \u003d new PersonBuilder(firstPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail, new EditPersonDescriptor());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"PearlynnT"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" Email secondPersonEmail \u003d model.getFilteredPersonList().get(1).getEmail();","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Bearypop"},"content":" EditCommand editCommand \u003d new EditCommand(secondPersonEmail, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" Email firstPersonEmail \u003d model.getFilteredPersonList().get(0).getEmail();","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"PearlynnT"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(1);","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(firstPersonEmail,","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" public void execute_invalidPersonEmailUnfilteredList_failure() {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"Bearypop"},"content":" Email invalidEmail \u003d new Email(\"invalid@u.nus.edu\");","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(invalidEmail, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"Bearypop"},"content":" assertCommandFailure(editCommand, model, MESSAGE_EMAIL_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" Email amyEmail \u003d new Email(\"amy@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":" final EditCommand standardCommand \u003d new EditCommand(amyEmail, DESC_AMY);","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"PearlynnT"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(amyEmail, copyDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"PearlynnT"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" assertFalse(standardCommand.equals(new EditCommand(EMAIL_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"PearlynnT"},"content":" assertFalse(standardCommand.equals(new EditCommand(EMAIL_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" EditCommand editCommand \u003d new EditCommand(EMAIL_FIRST_PERSON, editPersonDescriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"PearlynnT"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{email\u003d\" + EMAIL_FIRST_PERSON","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"PearlynnT"},"content":" + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"maj0-0"},"content":" public void equals_sameTutorials_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"maj0-0"},"content":" // Create two edit descriptors with the same tutorials","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor descriptorWithTutorials \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"maj0-0"},"content":" .withTutorials(new HashSet\u003c\u003e(Arrays.asList(new Tutorial(\"01\"), new Tutorial(\"02\")))).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor descriptorCopyWithTutorials \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"maj0-0"},"content":" .withTutorials(new HashSet\u003c\u003e(Arrays.asList(new Tutorial(\"01\"), new Tutorial(\"02\")))).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"maj0-0"},"content":" // They should be considered equal even if other fields are different","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"maj0-0"},"content":" assertTrue(descriptorWithTutorials.equals(descriptorCopyWithTutorials));","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Bearypop":12,"maj0-0":16,"PearlynnT":33,"-":127}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" // different major -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withYear(VALID_YEAR_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" // different social media links -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withSocialMediaLinks(VALID_SM_LINKEDIN_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getName().orElse(null) + \", major\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getMajor().orElse(null) + \", year\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getYear().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", description\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" + editPersonDescriptor.getTutorials().orElse(null) + \", tutorials\u003d\"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getDescription().orElse(null) + \", social media links\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" + editPersonDescriptor.getSocialMediaLinks().orElse(null) + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"wnchan":2,"maj0-0":1,"PearlynnT":18,"-":57}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" public void execute_multiplePartialKeywords_multiplePersonsFound() {","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kur Ell Kun\");","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"PearlynnT":10,"-":91}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Bearypop"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"Bearypop"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" // multiple social media links - all accepted","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Bearypop"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Bearypop"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":" + DESCRIPTION_DESC_BOB + SM_DESC_BOB, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"Bearypop"},"content":" public void parse_repeatedNonSocialMediaLinkValue_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Bearypop"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"Bearypop"},"content":" // multiple majors","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, MAJOR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Bearypop"},"content":" // multiple years","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, YEAR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"Bearypop"},"content":" // multiple descriptions","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Bearypop"},"content":" validExpectedPersonString + MAJOR_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Bearypop"},"content":" + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_MAJOR, PREFIX_YEAR,","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Bearypop"},"content":" PREFIX_EMAIL, PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_MAJOR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_YEAR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_DESCRIPTION_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_MAJOR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_YEAR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"Bearypop"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":151,"author":{"gitId":"Bearypop"},"content":" // zero social media links","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"Bearypop"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withSocialMediaLinks().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"Bearypop"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + MAJOR_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, VALID_NAME_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"Bearypop"},"content":" // missing major prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_MAJOR_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"Bearypop"},"content":" expectedMessage);","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"Bearypop"},"content":" // missing year prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + VALID_YEAR_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"Bearypop"},"content":" + VALID_EMAIL_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"Bearypop"},"content":" // missing description prefix","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + VALID_DESCRIPTION_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_MAJOR_BOB + VALID_YEAR_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"Bearypop"},"content":" + VALID_EMAIL_BOB + VALID_DESCRIPTION_BOB + VALID_SM_LINKEDIN_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"Bearypop"},"content":" // invalid major","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_MAJOR_DESC + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"Bearypop"},"content":" // invalid year","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + INVALID_YEAR_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"Bearypop"},"content":" + INVALID_EMAIL_DESC + DESCRIPTION_DESC_BOB + SM_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"Bearypop"},"content":" // invalid description","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + INVALID_DESCRIPTION_DESC + SM_DESC_BOB, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"Bearypop"},"content":" // invalid social media","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, NAME_DESC_BOB + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + INVALID_SM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"Bearypop"},"content":" + SM_DESC_BOB, SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + MAJOR_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"Bearypop"},"content":" + EMAIL_DESC_BOB + INVALID_DESCRIPTION_DESC + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"Bearypop"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"Bearypop"},"content":" + YEAR_DESC_BOB + EMAIL_DESC_BOB + DESCRIPTION_DESC_BOB + SM_DESC_BOB,","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Bearypop":115,"-":114}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" DeleteCommand.COMMAND_WORD + \" \" + EMAIL_FIRST_PERSON);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" assertEquals(new DeleteCommand(EMAIL_FIRST_PERSON), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_FIRST_PERSON + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertEquals(new EditCommand(EMAIL_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"PearlynnT":5,"-":96}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"neyapraveen"},"content":"import seedu.address.testutil.TypicalEmails;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"neyapraveen"},"content":" assertParseSuccess(parser, \"first@u.nus.edu\", new DeleteCommand(TypicalEmails.EMAIL_FIRST_PERSON));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"neyapraveen":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SM_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SM_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_SECOND_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_THIRD_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" private static final String SOCIAL_MEDIA_LINK_EMPTY \u003d \" \" + PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" // no email specified","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" // no email and no field specified","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, \"some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + \" i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_MAJOR_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" Major.MESSAGE_CONSTRAINTS); // invalid major","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_YEAR_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" Year.MESSAGE_CONSTRAINTS); // invalid year","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" Description.MESSAGE_CONSTRAINTS); // invalid description","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_SM_DESC,","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS); // invalid social media link","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"PearlynnT"},"content":" // invalid year followed by valid email","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_YEAR_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" // while parsing {@code PREFIX_SOCIAL_MEDIA_LINK} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" // parsing it together with a valid social media link results in error","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + SM_DESC_AMY + SOCIAL_MEDIA_LINK_EMPTY,","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + SOCIAL_MEDIA_LINK_EMPTY + SM_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, VALID_EMAIL_AMY + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_MAJOR_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"PearlynnT"},"content":" + VALID_YEAR_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_SECOND_PERSON + YEAR_DESC_BOB + SM_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"PearlynnT"},"content":" + EMAIL_DESC_AMY + DESCRIPTION_DESC_AMY + NAME_DESC_AMY + MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"PearlynnT"},"content":" .withMajor(VALID_MAJOR_AMY).withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"PearlynnT"},"content":" .withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_GITHUB_AMY, VALID_SM_LINKEDIN_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_SECOND_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"PearlynnT"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_FIRST_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_THIRD_PERSON + NAME_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"PearlynnT"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"PearlynnT"},"content":" // major","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + MAJOR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMajor(VALID_MAJOR_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"PearlynnT"},"content":" // year","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + YEAR_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"PearlynnT"},"content":" // description","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withDescription(VALID_DESCRIPTION_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":" // social media links","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_THIRD_PERSON + SM_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"PearlynnT"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"PearlynnT"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"PearlynnT"},"content":" expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_FIRST_PERSON + INVALID_YEAR_DESC + YEAR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_BOB + INVALID_YEAR_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"PearlynnT"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"PearlynnT"},"content":" // multiple valid fields repeated","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + EMAIL_DESC_AMY + MAJOR_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"PearlynnT"},"content":" + SM_DESC_AMY + YEAR_DESC_AMY + DESCRIPTION_DESC_AMY + EMAIL_DESC_AMY + SM_DESC_AMY","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"PearlynnT"},"content":" + YEAR_DESC_BOB + DESCRIPTION_DESC_BOB + EMAIL_DESC_BOB + SM_DESC_BOB + MAJOR_DESC_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":208,"author":{"gitId":"PearlynnT"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" userInput \u003d EMAIL_FIRST_PERSON + INVALID_MAJOR_DESC + INVALID_YEAR_DESC + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"PearlynnT"},"content":" + INVALID_EMAIL_DESC + INVALID_MAJOR_DESC + INVALID_YEAR_DESC + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"PearlynnT"},"content":" + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":217,"author":{"gitId":"PearlynnT"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR, PREFIX_YEAR, PREFIX_EMAIL,","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"PearlynnT"},"content":" PREFIX_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"PearlynnT"},"content":" public void parse_resetSocialMediaLinks_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"PearlynnT"},"content":" String userInput \u003d EMAIL_THIRD_PERSON + SOCIAL_MEDIA_LINK_EMPTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"PearlynnT"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withSocialMediaLinks().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"PearlynnT"},"content":" EditCommand expectedCommand \u003d new EditCommand(EMAIL_THIRD_PERSON, descriptor);","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_validInput_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"maj0-0"},"content":" String userInput \u003d \" \" + PREFIX_TUTORIAL + \"01 02 03\";","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"maj0-0"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptorBuilder descriptorBuilder \u003d new EditPersonDescriptorBuilder();","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e tutorialsStrings \u003d argMultimap.getAllValues(PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"maj0-0"},"content":" if (!tutorialsStrings.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e tutorialSet \u003d ParserUtil.parseTutorials(tutorialsStrings);","lastModifiedDate":"2023-10-22"},{"lineNumber":241,"author":{"gitId":"maj0-0"},"content":" descriptorBuilder.withTutorials(tutorialSet);","lastModifiedDate":"2023-10-22"},{"lineNumber":242,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"maj0-0"},"content":" EditPersonDescriptor expectedDescriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":245,"author":{"gitId":"maj0-0"},"content":" .withTutorials(new HashSet\u003c\u003e(List.of(new Tutorial(\"01\"), new Tutorial(\"02\"), new Tutorial(\"03\"))))","lastModifiedDate":"2023-10-22"},{"lineNumber":246,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":247,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":248,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedDescriptor, descriptorBuilder.build());","lastModifiedDate":"2023-10-19"},{"lineNumber":249,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":251,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"maj0-0":28,"PearlynnT":111,"-":112}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.TypicalEmails.EMAIL_FIRST_PERSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_MAJOR \u003d \"Computer Games\";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_YEAR \u003d \"1.5\";","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_SM \u003d \"#www.invalid.com\";","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_YEAR \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_DESCRIPTION \u003d \"Web Developer\";","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_EMAIL \u003d \"rachel@u.nus.edu\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_SM_LINKEDIN \u003d \"https://www.linkedin.com/in/rachel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_SM_GITHUB \u003d \"https://github.com/rachel\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" public void parseEmail_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public void parseEmail_validInput_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" assertEquals(EMAIL_FIRST_PERSON, ParserUtil.parseEmail(\"first@u.nus.edu\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" assertEquals(EMAIL_FIRST_PERSON, ParserUtil.parseEmail(\" first@u.nus.edu \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseMajor((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseMajor(INVALID_MAJOR));","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_validValueWithoutWhitespace_returnsMajor() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(VALID_MAJOR));","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" public void parseMajor_validValueWithWhitespace_returnsTrimmedMajor() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" String majorWithWhitespace \u003d WHITESPACE + VALID_MAJOR + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(majorWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseYear((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseYear(INVALID_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_validValueWithoutWhitespace_returnsYear() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"PearlynnT"},"content":" Year expectedYear \u003d new Year(VALID_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedYear, ParserUtil.parseYear(VALID_YEAR));","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"PearlynnT"},"content":" public void parseYear_validValueWithWhitespace_returnsTrimmedYear() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"PearlynnT"},"content":" String yearWithWhitespace \u003d WHITESPACE + VALID_YEAR + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" Year expectedYear \u003d new Year(VALID_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedYear, ParserUtil.parseYear(yearWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDescription((String) null));","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDescription(INVALID_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_validValueWithoutWhitespace_returnsDescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"PearlynnT"},"content":" Description expectedDescription \u003d new Description(VALID_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedDescription, ParserUtil.parseDescription(VALID_DESCRIPTION));","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":" public void parseDescription_validValueWithWhitespace_returnsTrimmedDescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"PearlynnT"},"content":" String descriptionWithWhitespace \u003d WHITESPACE + VALID_DESCRIPTION + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"PearlynnT"},"content":" Description expectedDescription \u003d new Description(VALID_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedDescription, ParserUtil.parseDescription(descriptionWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaLink(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSocialMediaLink(INVALID_SM));","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_validValueWithoutWhitespace_returnsSocialMediaLink() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink expectedSocialMediaLink \u003d new SocialMediaLink(VALID_SM_LINKEDIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLink, ParserUtil.parseSocialMediaLink(VALID_SM_LINKEDIN));","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLink_validValueWithWhitespace_returnsTrimmedSocialMediaLink() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"PearlynnT"},"content":" String socialMediaLinkWithWhitespace \u003d WHITESPACE + VALID_SM_LINKEDIN + WHITESPACE;","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"PearlynnT"},"content":" SocialMediaLink expectedSocialMediaLink \u003d new SocialMediaLink(VALID_SM_LINKEDIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLink, ParserUtil.parseSocialMediaLink(socialMediaLinkWithWhitespace));","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaLinks(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_collectionWithInvalidSocialMediaLinks_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"PearlynnT"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(VALID_SM_LINKEDIN, INVALID_SM)));","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"PearlynnT"},"content":" assertTrue(ParserUtil.parseSocialMediaLinks(Collections.emptyList()).isEmpty());","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"author":{"gitId":"PearlynnT"},"content":" public void parseSocialMediaLinks_collectionWithValidSocialMediaLinks_returnsSocialMediaLinkSet() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e actualSocialMediaLinkSet \u003d ParserUtil.parseSocialMediaLinks(","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(VALID_SM_LINKEDIN, VALID_SM_GITHUB));","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e expectedSocialMediaLinkSet \u003d new HashSet\u003cSocialMediaLink\u003e(","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(new SocialMediaLink(VALID_SM_LINKEDIN), new SocialMediaLink(VALID_SM_GITHUB)));","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":218,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedSocialMediaLinkSet, actualSocialMediaLinkSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_validInput_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"maj0-0"},"content":" Set\u003cString\u003e validTutorials \u003d new HashSet\u003c\u003e(Arrays.asList(\"02\", \"05\"));","lastModifiedDate":"2023-10-22"},{"lineNumber":224,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e expectedTutorialSet \u003d new HashSet\u003c\u003e(Arrays.asList(new Tutorial(\"02\"), new Tutorial(\"05\")));","lastModifiedDate":"2023-10-22"},{"lineNumber":225,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e actualTutorialSet \u003d ParserUtil.parseTutorials(validTutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedTutorialSet, actualTutorialSet);","lastModifiedDate":"2023-10-22"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":232,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":233,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e invalidTutorials \u003d Arrays.asList(\"25\", \"T02\");","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"maj0-0"},"content":" for (String invalidTutorial : invalidTutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":235,"author":{"gitId":"maj0-0"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":236,"author":{"gitId":"maj0-0"},"content":" ParserUtil.parseTutorials(Collections.singletonList(invalidTutorial)));","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":238,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":239,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":240,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":241,"author":{"gitId":"maj0-0"},"content":" public void parseTutorials_duplicateInput_singleInstanceStored() throws Exception {","lastModifiedDate":"2023-10-22"},{"lineNumber":242,"author":{"gitId":"maj0-0"},"content":" List\u003cString\u003e duplicateTutorials \u003d Arrays.asList(\"01\", \"01\", \"02\", \"02\");","lastModifiedDate":"2023-10-22"},{"lineNumber":243,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e expectedTutorials \u003d new HashSet\u003c\u003e(Arrays.asList(new Tutorial(\"01\"), new Tutorial(\"02\")));","lastModifiedDate":"2023-10-22"},{"lineNumber":244,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":245,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e actualTutorials \u003d ParserUtil.parseTutorials(duplicateTutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":246,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":247,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedTutorials, actualTutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":248,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":249,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"maj0-0":28,"PearlynnT":89,"-":133}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"wnchan":3,"-":102}},{"path":"src/test/java/seedu/address/model/person/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class DescriptionTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidDescription() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null description","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // invalid description","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Description.isValidDescription(\"3dUxHctmS8CrcahkimCRb5o33qMXhpMAoyheGmi9BLF8BJnTouR2KsH34as\"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" + \"RqUKDppYnEBHmRq54p5LkBjRsGyGcjWFU6m6pRU2SGQDiAOQMD4ZGqsMwTO3SAxVDWaCwfiQdqBlopNXqyu9cIcg\"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" + \"Djdh\\n\")); // more than 150 characters","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" // valid description","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Description.isValidDescription(\"test description\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" Description description \u003d new Description(\"test\");","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" assertTrue(description.equals(new Description(\"test\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" assertFalse(description.equals(\"diff\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" Description description \u003d new Description(\"test\");","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"test\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d description.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":65}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Email.isValidEmail(\" \")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@u.nus.edu\")); // underscore in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@u.nus.edu\")); // period in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@u.nus.edu\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@u.nus.edu\")); // hyphen in local part","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@u.nus.edu\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wnchan"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@u.nus.edu\")); // long local part","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"wnchan"},"content":" Email email \u003d new Email(\"valid@u.nus.edu\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"wnchan"},"content":" assertTrue(email.equals(new Email(\"valid@u.nus.edu\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"wnchan"},"content":" assertFalse(email.equals(new Email(\"other.valid@u.nus.edu\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" Email email \u003d new Email(\"valid@u.nus.edu\");","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"valid@u.nus.edu\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d email.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"wnchan":9,"PearlynnT":9,"-":75}},{"path":"src/test/java/seedu/address/model/person/MajorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class MajorTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Major(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidMajor_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidMajor \u003d \"Computer Games\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Major(invalidMajor));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidEmail() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null email","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Major.isValidMajor(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // blank major","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\" \")); // spaces only","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" // invalid major","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Computer Games\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Finance\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"ComputerScience\")); // no space","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\" Computer Science\")); // leading space","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Major.isValidMajor(\"Computer Science \")); // trailing space","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" // valid major","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"computer science\")); // lowercase","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"Computer Science\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Major.isValidMajor(\"Information Systems\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" Major major \u003d new Major(\"Computer Science\");","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" assertTrue(major.equals(new Major(\"Computer Science\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" assertTrue(major.equals(major));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertFalse(major.equals(new Name(\"Information Systems\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" Major major \u003d new Major(\"Computer Science\");","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"Computer Science\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d major.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":72}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" // One partial keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bobby\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" // Multiple partial keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bobby Caroline\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"wnchan"},"content":" // Keywords match major, year, email, and description, but does not match name","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" predicate \u003d new NameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" Arrays.asList(\"ComputerScience\", \"2\", \"alice@u.nus.edu\", \"webdev\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withMajor(\"Computer Science\").withYear(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" .withEmail(\"alice@u.nus.edu\").withDescription(\"web dev\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"wnchan":1,"PearlynnT":12,"-":81}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"wnchan"},"content":" assertFalse(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wnchan"},"content":" assertFalse(Name.isValidName(\"peter the 2nd\")); // alphanumeric character","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr\")); // long names","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"Valid Name\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d name.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"wnchan":3,"PearlynnT":9,"-":57}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"wnchan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getSocialMediaLinks().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"wnchan"},"content":" // same email, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wnchan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wnchan"},"content":" .withMajor(VALID_MAJOR_BOB).withYear(VALID_YEAR_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wnchan"},"content":" .withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" // different email, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wnchan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"wnchan"},"content":" // email differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"wnchan"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" // different major -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" // different year -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withYear(VALID_YEAR_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"PearlynnT"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" // different social media links -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"PearlynnT"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d ALICE.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d aliceCopy.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"PearlynnT"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", major\u003d\" + ALICE.getMajor()","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":" + \", year\u003d\" + ALICE.getYear() + \", email\u003d\" + ALICE.getEmail() + \", description\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"maj0-0"},"content":" + ALICE.getDescription() + \", tutorials\u003d\" + ALICE.getTutorials()","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"maj0-0"},"content":" + \", socialMediaLinks\u003d\" + ALICE.getSocialMediaLinks() + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" public void equals_sameTutorials_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" // Create two persons with the same tutorials","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"maj0-0"},"content":" Person aliceWithTutorials \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"maj0-0"},"content":" .withTutorials(\"01\", \"02\")","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"maj0-0"},"content":" Person aliceCopyWithTutorials \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"maj0-0"},"content":" .withTutorials(\"01\", \"02\")","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"maj0-0"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"maj0-0"},"content":" // They should be considered equal even if other fields are different","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":" assertTrue(aliceWithTutorials.equals(aliceCopyWithTutorials));","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"wnchan":14,"maj0-0":17,"PearlynnT":22,"-":75}},{"path":"src/test/java/seedu/address/model/person/TutorialTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"maj0-0"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"maj0-0"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"maj0-0"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"maj0-0"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"maj0-0"},"content":"public class TutorialTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"maj0-0"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tutorial(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"maj0-0"},"content":" public void constructor_invalidTutorial_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":" String invalidTutorial \u003d \"00\";","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"maj0-0"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tutorial(invalidTutorial));","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"maj0-0"},"content":" public void constructor_validTutorial_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"maj0-0"},"content":" String validTutorial \u003d \"05\";","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(validTutorial);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial.isValidTutorial(validTutorial));","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" public void isValidTutorial() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"maj0-0"},"content":" // null tutorial","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"maj0-0"},"content":" assertThrows(NullPointerException.class, () -\u003e Tutorial.isValidTutorial(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" // invalid tutorial numbers","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"00\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"23\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"invalid\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"maj0-0"},"content":" assertFalse(Tutorial.isValidTutorial(\"1A\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"maj0-0"},"content":" // valid tutorial numbers","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"01\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"12\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"maj0-0"},"content":" assertTrue(Tutorial.isValidTutorial(\"22\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"maj0-0"},"content":" public void getValue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"maj0-0"},"content":" assertEquals(\"05\", tutorial.getValue());","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"maj0-0"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial1 \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial2 \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial3 \u003d new Tutorial(\"01\");","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"maj0-0"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial1.equals(tutorial1));","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"maj0-0"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"maj0-0"},"content":" assertTrue(tutorial1.equals(tutorial2));","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"maj0-0"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"maj0-0"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"maj0-0"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"maj0-0"},"content":" assertFalse(tutorial1.equals(tutorial3));","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"maj0-0"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"maj0-0"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"maj0-0"},"content":" Tutorial tutorial \u003d new Tutorial(\"05\");","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"maj0-0"},"content":" int expectedHashCode \u003d \"05\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"maj0-0"},"content":" int actualHashCode \u003d tutorial.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"maj0-0"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"maj0-0":83}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"wnchan"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"wnchan"},"content":" assertFalse(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"wnchan":2,"PearlynnT":3,"-":167}},{"path":"src/test/java/seedu/address/model/person/YearTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"public class YearTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new Year(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidYear_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" String invalidYear \u003d \"10\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Year(invalidYear));","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" public void isValidYear() {","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" // null year","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e Year.isValidYear(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" // blank year","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"\")); // empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\" \")); // spaces only","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" // invalid year","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"one\")); // string","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"-1\")); // negative number","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"1.5\")); // decimal","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"10\")); // more than one digit long","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\" 1\")); // leading space","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"1 \")); // trailing space","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" assertFalse(Year.isValidYear(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" // valid year","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Year.isValidYear(\"1\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" assertTrue(Year.isValidYear(\"2\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"PearlynnT"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"PearlynnT"},"content":" Year year \u003d new Year(\"2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" assertTrue(year.equals(new Year(\"2\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" assertTrue(year.equals(year));","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(5.0f));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" assertFalse(year.equals(new Year(\"3\")));","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"PearlynnT"},"content":" public void hashCode_returnsExpectedHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" Year year \u003d new Year(\"2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" int expectedHashCode \u003d \"2\".hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" int actualHashCode \u003d year.hashCode();","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" assertEquals(expectedHashCode, actualHashCode);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":73}},{"path":"src/test/java/seedu/address/model/socialmedialink/SocialMediaLinkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.model.socialmedialink;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":"public class SocialMediaLinkTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e new SocialMediaLink(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":" public void constructor_invalidSocialMediaLink_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"PearlynnT"},"content":" String invalidSocialMediaLink \u003d \"\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidSocialMediaLink));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" public void isValidSocialMediaLink() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" // null social media link","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" assertThrows(NullPointerException.class, () -\u003e SocialMediaLink.isValidSocialMediaLink(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"PearlynnT":27}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_MAJOR \u003d \"Computer Games\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_YEAR \u003d \"1.5\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_DESCRIPTION \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"maj0-0"},"content":" private static final String INVALID_TUTORIAL \u003d \"1.7\";","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" private static final String INVALID_SM \u003d \"#www.invalid.com\";","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_MAJOR \u003d BENSON.getMajor().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_YEAR \u003d BENSON.getYear().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" private static final String VALID_DESCRIPTION \u003d BENSON.getDescription().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"maj0-0"},"content":" private static final List\u003cString\u003e VALID_TUTORIAL \u003d BENSON.getTutorials().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"maj0-0"},"content":" .map(Tutorial::getValue)","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" private static final List\u003cJsonAdaptedSocialMedia\u003e VALID_SM \u003d BENSON.getSocialMediaLinks().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" .map(JsonAdaptedSocialMedia::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(null, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidMajor_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Major.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullMajor_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"PearlynnT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"PearlynnT"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidYear_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, INVALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Year.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullYear_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, null, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, INVALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, null,","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"maj0-0"},"content":" INVALID_DESCRIPTION, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"PearlynnT"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"maj0-0"},"content":" null, VALID_TUTORIAL, VALID_SM);","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"PearlynnT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"PearlynnT"},"content":" public void toModelType_invalidSocialMediaLinks_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"PearlynnT"},"content":" List\u003cJsonAdaptedSocialMedia\u003e invalidSocialMediaLinks \u003d new ArrayList\u003c\u003e(VALID_SM);","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"PearlynnT"},"content":" invalidSocialMediaLinks.add(new JsonAdaptedSocialMedia(INVALID_SM));","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"maj0-0"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_MAJOR, VALID_YEAR, VALID_EMAIL,","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"maj0-0"},"content":" VALID_DESCRIPTION, VALID_TUTORIAL, invalidSocialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"maj0-0":28,"PearlynnT":41,"-":81}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" descriptor.setMajor(person.getMajor());","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" descriptor.setYear(person.getYear());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" descriptor.setDescription(person.getDescription());","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" descriptor.setSocialMediaLinks(person.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Major} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withMajor(String major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" descriptor.setMajor(new Major(major));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Year} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withYear(String year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"PearlynnT"},"content":" descriptor.setYear(new Year(year));","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Description} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"PearlynnT"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"PearlynnT"},"content":" * Parses the {@code socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e} and set it to the","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"PearlynnT"},"content":" * {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"PearlynnT"},"content":" public EditPersonDescriptorBuilder withSocialMediaLinks(String... socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e tagSet \u003d Stream.of(socialMediaLinks).map(SocialMediaLink::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"PearlynnT"},"content":" descriptor.setSocialMediaLinks(tagSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"maj0-0"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"maj0-0"},"content":" * Parses the {@code tutorials} into a {@code Set\u003cTutorial\u003e} and sets it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"maj0-0"},"content":" public EditPersonDescriptorBuilder withTutorials(Set\u003cTutorial\u003e tutorials) {","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"maj0-0"},"content":" Set\u003cTutorial\u003e tutorialSet \u003d tutorials.stream()","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"maj0-0"},"content":" .map((Tutorial tutorial) -\u003e new Tutorial(tutorial.getValue()))","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"maj0-0"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"maj0-0"},"content":" descriptor.setTutorials(tutorialSet);","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"maj0-0":9,"PearlynnT":27,"-":75}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"maj0-0"},"content":"import seedu.address.model.tutorial.Tutorial;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_YEAR \u003d \"2\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@u.nus.edu\";","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"PearlynnT"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"CS nerd\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"PearlynnT"},"content":" private Major major;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"PearlynnT"},"content":" private Year year;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" private Description description;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"maj0-0"},"content":" private Set\u003cTutorial\u003e tutorials;","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" private Set\u003cSocialMediaLink\u003e socialMediaLinks;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" major \u003d new Major(DEFAULT_MAJOR);","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" year \u003d new Year(DEFAULT_YEAR);","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"maj0-0"},"content":" tutorials \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"PearlynnT"},"content":" major \u003d personToCopy.getMajor();","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" year \u003d personToCopy.getYear();","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" description \u003d personToCopy.getDescription();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"maj0-0"},"content":" tutorials \u003d new HashSet\u003c\u003e(personToCopy.getTutorials());","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks \u003d new HashSet\u003c\u003e(personToCopy.getSocialMediaLinks());","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"PearlynnT"},"content":" * Parses the {@code socialMediaLinks} into a {@code Set\u003cSocialMediaLink\u003e} and set it to the {@code Person} that","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"PearlynnT"},"content":" * we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withSocialMediaLinks(String ... socialMediaLinks) {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"PearlynnT"},"content":" this.socialMediaLinks \u003d SampleDataUtil.getSocialMediaLinkSet(socialMediaLinks);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"maj0-0"},"content":" * Parses the {@code tutorials} into a {@code List\u003cTutorial\u003e}","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"maj0-0"},"content":" * and sets it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"maj0-0"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"maj0-0"},"content":" * @param tutorials A varargs of tutorial strings. Tutorial strings should be a 2-digit number between 01 and 22.","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"maj0-0"},"content":" * @return The updated {@code PersonBuilder} with the tutorials set.","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"maj0-0"},"content":" public PersonBuilder withTutorials(String... tutorials) {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"maj0-0"},"content":" this.tutorials \u003d SampleDataUtil.getTutorialSet(tutorials);","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"maj0-0"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"maj0-0"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"maj0-0"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Description} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withDescription(String description) {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"PearlynnT"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Major} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withMajor(String major) {","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"PearlynnT"},"content":" this.major \u003d new Major(major);","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"PearlynnT"},"content":" * Sets the {@code Year} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"PearlynnT"},"content":" public PersonBuilder withYear(String year) {","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"PearlynnT"},"content":" this.year \u003d new Year(year);","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":124,"author":{"gitId":"maj0-0"},"content":" return new Person(name, major, year, email, description, tutorials, socialMediaLinks);","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Bearypop":1,"maj0-0":16,"PearlynnT":32,"-":78}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_LINK;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.socialmedialink.SocialMediaLink;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_MAJOR + person.getMajor().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_YEAR + person.getYear().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_DESCRIPTION + person.getDescription().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" person.getSocialMediaLinks().stream().forEach(","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" s -\u003e sb.append(PREFIX_SOCIAL_MEDIA_LINK + s.socialMediaLink + \" \")","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" descriptor.getMajor().ifPresent(major -\u003e sb.append(PREFIX_MAJOR).append(major.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" descriptor.getYear().ifPresent(year -\u003e sb.append(PREFIX_YEAR).append(year.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"PearlynnT"},"content":" descriptor.getDescription().ifPresent(description -\u003e sb.append(PREFIX_DESCRIPTION).append(description.value)","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" if (descriptor.getSocialMediaLinks().isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" Set\u003cSocialMediaLink\u003e socialMediaLinks \u003d descriptor.getSocialMediaLinks().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" if (socialMediaLinks.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_LINK);","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"PearlynnT"},"content":" socialMediaLinks.forEach(s -\u003e sb.append(PREFIX_SOCIAL_MEDIA_LINK).append(s.socialMediaLink)","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"PearlynnT"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"PearlynnT":20,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalEmails.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PearlynnT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"PearlynnT"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"PearlynnT"},"content":" * A utility class containing a list of {@code Email} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"public class TypicalEmails {","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_FIRST_PERSON \u003d new Email(\"first@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_SECOND_PERSON \u003d new Email(\"second@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":" public static final Email EMAIL_THIRD_PERSON \u003d new Email(\"third@u.nus.edu\");","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"PearlynnT":12}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_GITHUB_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SM_LINKEDIN_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"PearlynnT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"PearlynnT"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"alice@u.nus.edu\").withDescription(\"web dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"PearlynnT"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"johnd@u.nus.edu\").withDescription(\"mobile dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/benson\", \"https://github.com/benson\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"PearlynnT"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"heinz@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"PearlynnT"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"cornelia@u.nus.edu\").withDescription(\"be dev\")","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(\"https://www.linkedin.com/in/daniel\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"PearlynnT"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"werner@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"PearlynnT"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"lydia@u.nus.edu\").withDescription(\"be dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"PearlynnT"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"anna@u.nus.edu\").withDescription(\"fe dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"PearlynnT"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"stefan@u.nus.edu\").withDescription(\"web dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"PearlynnT"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withMajor(\"Computer Science\")","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"PearlynnT"},"content":" .withYear(\"2\").withEmail(\"hans@u.nus.edu\").withDescription(\"mobile dev\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"PearlynnT"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_AMY).withEmail(VALID_EMAIL_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_AMY, VALID_SM_GITHUB_AMY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"PearlynnT"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"PearlynnT"},"content":" .withYear(VALID_YEAR_BOB).withEmail(VALID_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"PearlynnT"},"content":" .withSocialMediaLinks(VALID_SM_LINKEDIN_BOB, VALID_SM_GITHUB_BOB).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"PearlynnT":37,"-":43}}] diff --git a/AY2324S1-CS2103T-F12-2_tp_master/commits.json b/AY2324S1-CS2103T-F12-2_tp_master/commits.json index d98af3d3..7c2eb5bb 100644 --- a/AY2324S1-CS2103T-F12-2_tp_master/commits.json +++ b/AY2324S1-CS2103T-F12-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Bearypop":[{"date":"2023-10-02","commitResults":[{"hash":"e5a2791764e979ba0dc6d7e6052944c5981fa713","isMergeCommit":false,"messageTitle":"Update AboutUs, User guide, PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"251f29cd6876fa06699c8370c413b4f836e2507d","isMergeCommit":false,"messageTitle":"Change exit feature so exit message is displayed before exiting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6}}},{"hash":"b92b0dd5411736c5e3873126e22278147f0c52d6","isMergeCommit":false,"messageTitle":"Change exit image in User Guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b7d3298f4339eca1ad2df3fd2a9ea25e651d6206","isMergeCommit":false,"messageTitle":"Bug fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"86f43c1ccbaf3bd1db0779bfa000a550b72a39a0","isMergeCommit":false,"messageTitle":"Change code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"073ada0a577c64c4a3967f07867cb8e3af89d233","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Bearypop/week-7-Yik-Leong","messageBody":"Update documentation and exit feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"2844cd7c7c22cab732de5f12e8ce46fc8e3f8a8a","isMergeCommit":false,"messageTitle":"Update PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7057471222168d1b82a265a6fa7da219feef81a0","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Bearypop/update-PPP","messageBody":"Update documentation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"2829bfd314524699f626f956160e84e16daf2740","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"8c7b878b4b4f6756afa013f7fbcbaa6f282e2933","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"84ab1746baef1c1e4bda83bd282b235b8f2a030d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"2251048de48e0c4e186fbef5e6d66f79956f03af","isMergeCommit":false,"messageTitle":"Update tests for Add Command and resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":126,"deletions":86}}},{"hash":"ab380a81760f1b6731ef0d66f1d43731bb32b5f9","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"0264b7d8f43e1cb45ef32a5a6f610686e5810ee1","isMergeCommit":false,"messageTitle":"Update EditCommandTest and DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":16,"deletions":10}}},{"hash":"0898b7912f69f9c24df9a459f6d7029ea60267cc","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Bearypop/test-add-command","messageBody":"Update tests for Add command","fileTypesAndContributionMap":{}},{"hash":"a6e4b2b284e8ec70e6903a817aa87713675ccb14","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Bearypop/tests-bug-fix","messageBody":"Tests bug fix","fileTypesAndContributionMap":{}},{"hash":"9cc512b08e113cb963c4bdca15bf4a295ac6cbba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17f7096ca210f3503e18fc604fa8a29b65afda71","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":19}}},{"hash":"602eca3e20625a19634a0fe35bb0f5709be1a5c3","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Bearypop/v1.2b-update-docs","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"d4f92869f0ea16cd79d793ecaad52d8a519f2671","isMergeCommit":false,"messageTitle":"Update docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"neyapraveen":[{"date":"2023-10-05","commitResults":[{"hash":"d59a985c48c65e23007645ddd01db40f60cf4aae","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp: (27 commits)\n Add photo to AboutUs\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n Edited UserGuide\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n Edited UserGuide\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Edited \u0027Add\u0027 feature in User Guide\n Updated AboutUs page, added image and skeletal PPP\n Updated README contents and Ui mockup\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"49a6cc6a0969a3805b3e0a43afa0f6bc73e1d030","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c3f0b479b049b11cf88a6ab725a1d9ba73eb840f","isMergeCommit":false,"messageTitle":"Add PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"d7c59c71dab2d6ee5983182c28cb191eaa7a0b55","isMergeCommit":true,"messageTitle":"Merge pull request #39 from neyapraveen/add-PPP","messageBody":"Add ppp","fileTypesAndContributionMap":{}},{"hash":"df77c4f91e7ca0d0f2cdf808cfb785cf7912bfbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd6aff44d1d5c580ec4de1c3a8196526585015e4","isMergeCommit":false,"messageTitle":"Fix delete function description in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}},{"hash":"d81728ee202a9ae9fc1bcd9d89c33d66d0146f45","isMergeCommit":true,"messageTitle":"Merge pull request #40 from neyapraveen/update-delete-ug2","messageBody":"Update delete ug2","fileTypesAndContributionMap":{}},{"hash":"096b7d8c1bf80eedb045bf63df11725cbd790af6","isMergeCommit":false,"messageTitle":"Update user stories, glossary, NFRs, use cases in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":90,"deletions":30}}},{"hash":"6e70025df6013717f584c3eb05355b56c37ae626","isMergeCommit":true,"messageTitle":"Merge pull request #42 from neyapraveen/update-dg","messageBody":"Update user stories, glossary, NFRs, use cases in DG","fileTypesAndContributionMap":{}},{"hash":"65ecd188c13cb8b8edd5a4ca7f3777f0f048b182","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"b3192e23fcccafc348d687e9d6d9045a7e79f754","isMergeCommit":true,"messageTitle":"Merge pull request #43 from neyapraveen/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"c59ccf71151fdba2f81b34120643005ffd2137b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp: (21 commits)\n fixed checkstyle error\n Fixed checkstyle error\n fixed checkstyle errors\n fixed checkstyle errors\n Fixed checkstyle errors\n Added restrictions to fields\n Update list feature screenshot\n Add edit feature in DG\n Fixed checkstyle errors\n Edited checkstyle errors\n Fixed error\n Fixed some bugs\n Edited files for Add features\n Fixed social media link bug\n Update AboutUs.md\n Edited Parser and Person files\n Edited Person class\n Added field classes\n Fix bug in ListCommand\n Update success message and UG screenshot for list feature\n ...\n","fileTypesAndContributionMap":{}},{"hash":"f8f0c7e67a5711127f81aa1ceb67b628334e9eea","isMergeCommit":false,"messageTitle":"Update delete command to delete by email","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":18}}},{"hash":"82a6760773fe5b3ae0265b9f440de193ee8f0520","isMergeCommit":false,"messageTitle":"Edit test cases for delete with email","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":54}}},{"hash":"466c12cc110f06267795d9b648e33161b2f30f4c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":21},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e4cf9a95e2e2aebf1cac1ea5e973cdaeaa6ba7f1","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":21},"test-code":{"insertions":22,"deletions":31}}},{"hash":"3883737b8ea7feaf508a446f3e3edba58a0fbe7d","isMergeCommit":true,"messageTitle":"Merge commit \u0027466c12cc110f06267795d9b648e33161b2f30f4c\u0027 into delete-by-email-feature","messageBody":"* commit \u0027466c12cc110f06267795d9b648e33161b2f30f4c\u0027:\n Fix style\n","fileTypesAndContributionMap":{}},{"hash":"2e8127989b25ed944561a3339579514391ff1040","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"d4299ab98268cbf36fbb9507eefcd2485a446f29","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"86366a1d201ef218bcd095496c148eb16b10514c","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"f313a284fdea97069c78ca202fc50b20e28f8033","isMergeCommit":true,"messageTitle":"Merge pull request #50 from neyapraveen/update-documentation-v1.2","messageBody":"Update documentation v1.2","fileTypesAndContributionMap":{}},{"hash":"c3a5f783a3a8e956dbd9b2ddbc929a9bcb75e2d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-by-email-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec1eb258bf94df4d3edf5dcffff217d9a2c22cf5","isMergeCommit":true,"messageTitle":"Merge pull request #49 from neyapraveen/delete-by-email-feature","messageBody":"Change to delete by email","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"ffd9fd9b4b2044b6c5fe3bfebcd02bd3bfc12dd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp:\n Update EditCommandTest and DeleteCommandTest\n Fix checkstyle issues\n Update tests for Add Command and resolve checkstyle issues\n Fixed checkstyle\n Add edit feature\n Edited checkstyle\n Updated image for \u0027Add\u0027 feature\n Update documentation\n Fix style\n Fix more style\n Fix style\n Fix style\n Edit test cases for delete with email\n Update delete command to delete by email\n Add edit feature in UG\n","fileTypesAndContributionMap":{}},{"hash":"a36b059f7e1e56ff03651da5334be627d9ab91ca","isMergeCommit":false,"messageTitle":"Fix bug in DeleteCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"73acd45f60f1128e7fa9f03e1acf5122853a1195","isMergeCommit":true,"messageTitle":"Merge pull request #60 from neyapraveen/branch-fix-deleteparsertest","messageBody":"Branch fix deleteparsertest","fileTypesAndContributionMap":{}},{"hash":"cdd991cac3d3a4b0ec7954ae340588f93a49e04e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp:\n Fix bug in DeleteCommandParserTest\n","fileTypesAndContributionMap":{}},{"hash":"3d3bf6d34d4c40981b8cef2af10543e814cbe2c3","isMergeCommit":false,"messageTitle":"Change background colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":72}}},{"hash":"4033d6ab6f917c602a5ce6a0aa3079d0324c3831","isMergeCommit":false,"messageTitle":"Change border colour to yellow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"cd75eebdd1cc4fa336d5ec9d6f739b36f620c02e","isMergeCommit":false,"messageTitle":"Make names bold","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"1aa3865ff21bc6be8960596ec48b6722809eec27","isMergeCommit":false,"messageTitle":"Change fonts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d29271e7e94263927c1ff75d84b09ca152527e93","isMergeCommit":false,"messageTitle":"Fix styling for social media links","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":4}}},{"hash":"b43af555042880107b71d12e341aa3687a687be6","isMergeCommit":false,"messageTitle":"Make index same style as name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":9}}},{"hash":"0ef122df545f21d53d8ae39c20d0ec174820ede6","isMergeCommit":false,"messageTitle":"Add labels to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":9},"other":{"insertions":1,"deletions":1}}},{"hash":"59962b426b583ac5c0f0433656512349890d43cb","isMergeCommit":false,"messageTitle":"Change colour scheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":34}}},{"hash":"976fed700239c6b70f971a9a22fd529f1d088106","isMergeCommit":false,"messageTitle":"Improve style and visibility","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17}}},{"hash":"bc6eed9082106de0a4d88b990175e07e869c4208","isMergeCommit":true,"messageTitle":"Merge pull request #68 from neyapraveen/ui-improvement","messageBody":"Improve UI\r\nFix #59 ","fileTypesAndContributionMap":{}}]}],"wnchan":[{"date":"2023-10-04","commitResults":[{"hash":"8b1d36f33fc877e890dabd9d3eb4b7a7d8e20cb1","isMergeCommit":false,"messageTitle":"Updated README contents and Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"1adbc4aedbf8299eeec01312fa9520db32b39d67","isMergeCommit":false,"messageTitle":"Updated AboutUs page, added image and skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":6}}},{"hash":"2fe1d5d5e6c1db7ce749c21af81f2e3b60d06f3a","isMergeCommit":false,"messageTitle":"Edited \u0027Add\u0027 feature in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":7}}}]},{"date":"2023-10-05","commitResults":[{"hash":"16857c1ca7b1cb320b1395b0462eb2dafe2fc77c","isMergeCommit":true,"messageTitle":"Merge pull request #21 from wnchan/branch-AboutUs","messageBody":"Updated AboutsUs page, skeletal PPP and User Guide","fileTypesAndContributionMap":{}},{"hash":"aab0291119f8f9989a73f23ec940813a02663fba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edit PPP\n Add line EOF\n Update PPP\n Edited \u0027Add\u0027 feature in User Guide\n Updated AboutUs page, added image and skeletal PPP\n Updated README contents and Ui mockup\n update UG content for find\n","fileTypesAndContributionMap":{}},{"hash":"4387e680f7f46a3a20aad911fea3ed97e36b17dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c58d9b18e981861f4b48d72106b18935af5f7011","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Add Newline at EOF\n Add Newline at EOF\n Fix style conventions\n Update PPP Skeleton\n Add Majedah\u0027s details to AboutUs page\n Add Majedah\u0027s details to AboutUs page\n Implement new command - Remark\n","fileTypesAndContributionMap":{}},{"hash":"832299dc0cbf3777334c027b13c803120c3b9f5f","isMergeCommit":false,"messageTitle":"Edited UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"0f87c666ffe0f7cf78ec44e3e7df04d1b7e8de2d","isMergeCommit":true,"messageTitle":"Merge pull request #25 from wnchan/branch-week7wnchan","messageBody":"Edited UserGuide","fileTypesAndContributionMap":{}},{"hash":"2eaae636d66a55329c179fe5936cb56cdff4204a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf8610000cb2968fe115741b15a2b3525603cad6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited UserGuide\n","fileTypesAndContributionMap":{}},{"hash":"0a1dbee4f4771e8a57c1dd16fce11d1caa5c56bc","isMergeCommit":false,"messageTitle":"Revert \"Edited UserGuide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"4c8ceb246844e23b47c833a0a0d13090758cdf83","isMergeCommit":true,"messageTitle":"Merge pull request #27 from AY2324S1-CS2103T-F12-2/revert-25-branch-week7wnchan","messageBody":"Revert \"Edited UserGuide\"","fileTypesAndContributionMap":{}},{"hash":"db06e9050bb72e2c5c52701f1d824dfbafb53092","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"befb2942c8b0e14bfe011d62c365d9d2df6945ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n","fileTypesAndContributionMap":{}},{"hash":"f94f6d2a3482049c958cc5e0fdb86fd47d4367c1","isMergeCommit":false,"messageTitle":"Edited UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9b0fb229ae3d4c8d1a73dece4261ef119bd16405","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-week7wnchan","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a33d8d6d9db38f70a95ef74e5af809040be84cf7","isMergeCommit":true,"messageTitle":"Merge pull request #28 from wnchan/branch-week7wnchan","messageBody":"Edited UserGuide","fileTypesAndContributionMap":{}},{"hash":"5aa70472a6232fd744ed9adce73d39d17a6ff7a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d25ad330f1990fa69e49823a1f3323b0b63be94a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited UserGuide\n","fileTypesAndContributionMap":{}},{"hash":"b1186d5a7d039affee78045c9e11549b65937072","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp into branch-week7wnchan","messageBody":"* \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp:\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Add Newline at EOF\n Add Newline at EOF\n Fix style conventions\n Update PPP Skeleton\n Add Majedah\u0027s details to AboutUs page\n Add Majedah\u0027s details to AboutUs page\n Implement new command - Remark\n","fileTypesAndContributionMap":{}},{"hash":"502442449759aec2c356e3a9ddc568858d7cf489","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83094e945099c5c11558efbc2ad269296de01410","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n","fileTypesAndContributionMap":{}},{"hash":"a4a684ec5af42e6c0c9c5f59c629f368a614d90f","isMergeCommit":false,"messageTitle":"Edited some classes associated to the \"Add\" feature.","messageBody":"Edited command and parser. Files under person package and person card\nfiles still needs to be edited.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":83}}},{"hash":"d84293243b5f53d2a1af776a74139b449f4eee29","isMergeCommit":false,"messageTitle":"Added field classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"684cbd7c34b7417894c646e8208f236ad0baa1cd","isMergeCommit":false,"messageTitle":"Edited Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":9}}}]},{"date":"2023-10-06","commitResults":[{"hash":"f9788849a70675c38d3f188cba8bd4299624d7f5","isMergeCommit":false,"messageTitle":"Edited Parser and Person files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":157}}}]},{"date":"2023-10-07","commitResults":[{"hash":"3c6f2a7405a3d58556e7eebcbf8a3de94107b91f","isMergeCommit":false,"messageTitle":"Fixed social media link bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"060e76c1e56c41697e705ac8bdc6f89c0316397b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9efbe65cb54d36c310c9a47a2cf95365db168b5a","isMergeCommit":false,"messageTitle":"Edited files for Add features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":105,"deletions":117}}},{"hash":"31596bfa32d8385d483cdb2d94d91e995535c452","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update AboutUs.md\n Update user stories, glossary, NFRs, use cases in DG\n Fix delete function description in UG\n Add delete.png of UI\n Add PPP\n Edit find feature\n Update information in UG\n Add photo to AboutUs\n","fileTypesAndContributionMap":{}},{"hash":"bad70ae891671f1925af7b17632109b80ed66578","isMergeCommit":false,"messageTitle":"Fixed some bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"634c8a8fc31ac34a8264b6f01ca88a7341fd682b","isMergeCommit":false,"messageTitle":"Fixed error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2141f9c55a798fba3e765e01cdad953a19107fdb","isMergeCommit":false,"messageTitle":"Edited checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":28}}},{"hash":"cee99e96bde9dbcb329a64c97e77f0f5daa302d9","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":24}}}]},{"date":"2023-10-12","commitResults":[{"hash":"15525629646d5141bf1c80ac9c65a8560c9c6c38","isMergeCommit":false,"messageTitle":"Added restrictions to fields","messageBody":"Name now only accepts alphabetical characters, emails only accept\n@u.nus.edu domains, social media link can accept null values, major\nonly accept a list of NUS majors, description only accept up till 150\ncharacters. Fixed some bugs pertaining to not including certain\nprefixes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":20},"docs":{"insertions":11,"deletions":8}}},{"hash":"7462e5597e144bca9657cf8bea0161b93e52fb1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-week7wnchan","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c1839e1ff67dd31d840bd346982e2b5396ccf2e","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":46}}},{"hash":"1b9e637559d3407c24a42813c37e9062e20eb4b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp into branch-week7wnchan","messageBody":"* \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp:\n Update list feature screenshot\n Update AboutUs.md\n Update user stories, glossary, NFRs, use cases in DG\n Fix delete function description in UG\n Add delete.png of UI\n Add PPP\n Edit find feature\n Update information in UG\n Fix bug in ListCommand\n Add photo to AboutUs\n Update success message and UG screenshot for list feature\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n","fileTypesAndContributionMap":{}},{"hash":"a9985d982ed450d3f0d20da037d8634569129f62","isMergeCommit":false,"messageTitle":"fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"41d79a265aa050de097be760fb0c95d32c15b9ae","isMergeCommit":false,"messageTitle":"fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"b3ee10613bf583e3e96370bd398444b19f9babea","isMergeCommit":false,"messageTitle":"Fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"a0cc1811102231f97edd05a584ac8f41afa03f5a","isMergeCommit":false,"messageTitle":"fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"9ddf44e59263e0e5d9bfb7f93ccc6745c8f58070","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wnchan/branch-week7wnchan","messageBody":"Edited the \"Add\" feature","fileTypesAndContributionMap":{}},{"hash":"8b8ce99b1fd19a622f76c00062da252f1a0f528b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b368be26c349ffa32c07bd61ba6878a7f17cd50d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n fixed checkstyle error\n Fixed checkstyle error\n fixed checkstyle errors\n fixed checkstyle errors\n Fixed checkstyle errors\n Added restrictions to fields\n Update list feature screenshot\n Fixed checkstyle errors\n Edited checkstyle errors\n Fixed error\n Fixed some bugs\n Edited files for Add features\n Fixed social media link bug\n Edited Parser and Person files\n Edited Person class\n Added field classes\n Fix bug in ListCommand\n Update success message and UG screenshot for list feature\n Edited some classes associated to the \"Add\" feature.\n","fileTypesAndContributionMap":{}},{"hash":"50e630fa6fc886f3aec55f001736cada8a66a782","isMergeCommit":false,"messageTitle":"Updated image for \u0027Add\u0027 feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e847aaa337d86bfc6529cdd5188b0f305a57f1ea","isMergeCommit":false,"messageTitle":"Edited checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"a91a8c53d1b0c332a47734b518e20bfc81f6d868","isMergeCommit":true,"messageTitle":"Merge pull request #53 from wnchan/branch-v1.2","messageBody":"Updated image for \u0027Add\u0027 feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"74b91458b12276c949ca2ab1de1a1dfdb4a9eadc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited checkstyle\n Updated image for \u0027Add\u0027 feature\n Update documentation\n Fix style\n Fix more style\n Fix style\n Fix style\n Edit test cases for delete with email\n Update delete command to delete by email\n Add edit feature in DG\n Add edit feature in UG\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"cc9455cb1a805e39a11d11b2a83a957d75122e87","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update docs\n Update documentation\n Fix bug in DeleteCommandParserTest\n Update EditCommandTest and DeleteCommandTest\n Fix checkstyle issues\n Update tests for Add Command and resolve checkstyle issues\n Fixed checkstyle\n Add edit feature\n","fileTypesAndContributionMap":{}},{"hash":"929c84f9cf203189e63688b4ed332945f61f4a3a","isMergeCommit":false,"messageTitle":"Made email the unique identifier","messageBody":"Made email the field that differentiates students, changed the duplicate\nperson message, made name auto capitalise the first letter of each word\nand edited the test case affected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":7},"test-code":{"insertions":10,"deletions":20}}},{"hash":"e5be5c08ecf570a57a7b0a4b928d6fba79640cbb","isMergeCommit":false,"messageTitle":"Edits for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c91ba0b367d657bc8ca6a99d7d8adb98673963a1","isMergeCommit":false,"messageTitle":"Import fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"b8c3f96326194b45a3e5dcb25f8c4b76d2a36fb3","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"bdb2449cef202e134f43ddab2abd63ca1e8855b9","isMergeCommit":true,"messageTitle":"Merge pull request #63 from wnchan/branch-v1.2b","messageBody":"Improved StudentConnect fields and identifier","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"c3b9723b3d5016331cf0f15eaf6c0904703cfb3c","isMergeCommit":false,"messageTitle":"Edit test files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":21,"deletions":25}}},{"hash":"530d5e01ebfb0e15684961b70b88145ebfd84912","isMergeCommit":true,"messageTitle":"Merge pull request #64 from wnchan/branch-v1.2b","messageBody":"Edit most of the test files","fileTypesAndContributionMap":{}}]}],"maj0-0":[{"date":"2023-09-30","commitResults":[{"hash":"f4e961c47d1db4c99a7187ca4ba1a5ffe464dc78","isMergeCommit":false,"messageTitle":"Implement new command - Remark","messageBody":"Implementing a remark command allows users of the AddressBook application to add optional remarks to people in their address book and edit/remove it if required.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":300,"deletions":91},"test-code":{"insertions":59,"deletions":7}}},{"hash":"b4512e9ab5edebcc38ecd0ea95af0db00dbd76e6","isMergeCommit":false,"messageTitle":"Add Majedah\u0027s details to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"68748bf43f70371376405b15c7499bd9d11bac52","isMergeCommit":false,"messageTitle":"Add Majedah\u0027s details to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"291ec4b7df28f06a3a420d4fe195cd46bd81bc6c","isMergeCommit":false,"messageTitle":"Update PPP Skeleton","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":47}}},{"hash":"ba2c151b931f737d2dd7e316ec08706607e410f9","isMergeCommit":false,"messageTitle":"Fix style conventions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"38d7da6bab51cf029d13bb126b66ce5447f95763","isMergeCommit":false,"messageTitle":"Add Newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":30},"docs":{"insertions":1,"deletions":2}}},{"hash":"1721c4768e1576dcef787734fb9e1731ee99e2d2","isMergeCommit":false,"messageTitle":"Add Newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2023-10-05","commitResults":[{"hash":"23f66b34a92c61191d4e017d3685605a91943046","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5082261981508738d5a3c404a234693b2274aafe","isMergeCommit":false,"messageTitle":"Finalise Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":1,"deletions":2}}},{"hash":"68208c0b71df079c23ded48bf7acbc5edce5e874","isMergeCommit":false,"messageTitle":"Update Gradle Wrapper","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":525,"deletions":561},"other":{"insertions":379,"deletions":379},"docs":{"insertions":621,"deletions":354},"test-code":{"insertions":164,"deletions":267}}},{"hash":"580da745f48822e415d8c8c85ca58b21ebf25e7a","isMergeCommit":false,"messageTitle":"Update UG for list feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":10}}},{"hash":"8ee1a7797905da7f99f40f7cf8e46528d637ff20","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bdc7d27f4612e64f187c9fd270d31b90967fe25","isMergeCommit":true,"messageTitle":"Merge branch \u002712-update-aboutus-page\u0027 of https://github.com/maj0-0/tp into 12-update-aboutus-page","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"17ad52d6d82fcbdeaf5b136b94013d1c00e412f1","isMergeCommit":false,"messageTitle":"Temporarily update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"634dc6daf56a2f05fa7b162251d252ffca98fbf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1419a0475895e22e36ca66255e9d8ebd01ae5c4d","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"7cfac867218bd7f8400642d2704a674b0da26b43","isMergeCommit":false,"messageTitle":"Update profile photo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"fb975baab209f62e876fe4500c50b8c637d364ff","isMergeCommit":true,"messageTitle":"Merge branch \u002712-update-aboutus-page\u0027 of https://github.com/maj0-0/tp into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"096f3c9ecce38b9a42cdca10a0ca7f1ad5b3d1d6","isMergeCommit":true,"messageTitle":"Merge pull request #17 from maj0-0/12-update-aboutus-page","messageBody":"Update About Us page, UG and PPP Skeleton","fileTypesAndContributionMap":{}},{"hash":"14ff71ae1a756e95662813cc8e578ad6a73b9ac4","isMergeCommit":false,"messageTitle":"Revert \"Update About Us page, UG and PPP Skeleton\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":596,"deletions":744},"other":{"insertions":379,"deletions":379},"docs":{"insertions":336,"deletions":657},"test-code":{"insertions":270,"deletions":218}}},{"hash":"a323d2e0f5b451eb8b4f8233dee871e8a45a3bbb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from AY2324S1-CS2103T-F12-2/revert-17-12-update-aboutus-page","messageBody":"Revert \"Update About Us page, UG and PPP Skeleton\"","fileTypesAndContributionMap":{}},{"hash":"40f6bf3d17f29070fb186b08780866b74fdd5ba9","isMergeCommit":false,"messageTitle":"Update UG for list feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":57}}},{"hash":"a6aad82c7031da1eee715a3b05325f6fcd503856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/week7-maj0-0\u0027 into week7-maj0-0","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"35e15528cb0b64461efaa1cb4e1c4c0501478fd1","isMergeCommit":false,"messageTitle":"Update PPP skeletal and AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":4}}},{"hash":"26e6dd958f09f66c4552b1234fdb7d8cf32070bf","isMergeCommit":false,"messageTitle":"Fix error in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":16}}},{"hash":"8bcb436192c7abbcac88e3fdcffb9bd4266654ee","isMergeCommit":true,"messageTitle":"Merge pull request #29 from maj0-0/week7-maj0-0","messageBody":"Update AboutUs, PPP skeletal and UG","fileTypesAndContributionMap":{}},{"hash":"38182d8f54ae65edb9a0d4381eb62a3a3c1fda3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into update-site-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"666e16da0442e69ab4b0aeabefbd2b87215fa908","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-site-settings\u0027 of https://github.com/maj0-0/tp into update-site-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a6bf76dc439228e25f841f90c03c2d12ad6dd46","isMergeCommit":false,"messageTitle":"Update success message and UG screenshot for list feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"docs":{"insertions":2,"deletions":0}}},{"hash":"984acf2147b66e2b5ca156e6917ff5e61917caa1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 1-List-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0302fd1a2c6f3146ff4b07b2639171a7f5d5acbf","isMergeCommit":false,"messageTitle":"Fix bug in ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"7ca6f59141d633ab1636fac98f307d46f0fdeb18","isMergeCommit":true,"messageTitle":"Merge branch \u00271-List-Feature\u0027 of https://github.com/maj0-0/tp into 1-List-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab94125048ddc180e8cf7481570fc7e4b19aff90","isMergeCommit":false,"messageTitle":"Update information in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":34}}},{"hash":"a9428663365276af324da5bc7c73f1c4ae4767aa","isMergeCommit":true,"messageTitle":"Merge pull request #37 from maj0-0/adapt-ug","messageBody":"Adapt UG to better fit StudentConnect","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"698e1ce41f6a8f4552d8bd92532d20cfd9d77441","isMergeCommit":true,"messageTitle":"Merge pull request #34 from maj0-0/1-List-Feature","messageBody":"Update list feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"b4f879e5c633e59099aba569e9f494fbc2fecead","isMergeCommit":false,"messageTitle":"Add tutorial class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0}}},{"hash":"0cc5a9c6bb429cc7ce46cbb962496e36042cbc78","isMergeCommit":false,"messageTitle":"Update implementation for tutorial field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":32}}},{"hash":"81c9755a2ee101041ddc67b5883aaf3dc7531767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/maj0-0/tp into 62-Tutorial-Field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8ca692c3762b232eb70df2a648457c836102635","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"668ee3deafe37a83ac0ce1b4fd72490cd0219ffd","isMergeCommit":false,"messageTitle":"Update Year Display Text","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"642081bb5cbd7cad2e9ed404204c2bf3ae96f51c","isMergeCommit":false,"messageTitle":"Add tutorial field to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":9}}},{"hash":"275181be0a5689eafa38ce7d0275f5e28176fe88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/maj0-0/tp into 62-Tutorial-Field","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n","fileTypesAndContributionMap":{}},{"hash":"76fa3cd3a4bda3a7b91320d42498b9d3fbbb0931","isMergeCommit":false,"messageTitle":"Match Tutorial Field UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":28}}},{"hash":"1e4abbac96e3da80e2b0906879a244f1490ccbbf","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":10},"test-code":{"insertions":37,"deletions":14}}},{"hash":"924e3b8803eea972f41eb2b451d0ca7a96fcfc15","isMergeCommit":false,"messageTitle":"Fix bugs in Tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":18}}},{"hash":"1f59c6744bd91b79ca4baf42f967eb0ee4b7d40c","isMergeCommit":false,"messageTitle":"Fix issue with loading tutorials","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"95697ff93598ca16d660fa989481d72f2c8b5420","isMergeCommit":false,"messageTitle":"Update clear feature in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}},{"hash":"aa133104c7004e5428c32cf2be8731dcc66f59c4","isMergeCommit":false,"messageTitle":"Update Tutorial type in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"be570ef64d8bbb3d1618adea7e74fe750723fdcb","isMergeCommit":false,"messageTitle":"Update Test Cases For Tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":47},"test-code":{"insertions":109,"deletions":0}}},{"hash":"dd23f3ba9803d2f007dc0d94446a655e0875978a","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":107,"deletions":0}}},{"hash":"e0b99861f7ea9dd6435192f48b872b291b7c9b82","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"096166eb26a4beee5358329fcea0a4418cfaf8dd","isMergeCommit":false,"messageTitle":"Add hash code test to TutorialTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"46f1fe6676540ec09aa41e351bfb73c601af5d3e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from maj0-0/62-Tutorial-Field","messageBody":"Add Tutorial Field","fileTypesAndContributionMap":{}}]}],"PearlynnT":[{"date":"2023-09-22","commitResults":[{"hash":"ea66fcca21b602fc8028cb5c5f765658f36fa050","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"af182d161606238a8bbd882fd1d4e3bbb91edb45","isMergeCommit":false,"messageTitle":"update UG content for find","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":15}}}]},{"date":"2023-10-05","commitResults":[{"hash":"942cb89c6fc396921921d3ec3884c4be6c835d02","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab60e1c1c72383ac83ffce6b90216eb6dd7036a4","isMergeCommit":false,"messageTitle":"Add line EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0c4e4b995f0c32c4c6393a242ab98518fe851bf7","isMergeCommit":true,"messageTitle":"Merge pull request #16 from PearlynnT/master","messageBody":"update UG content for find","fileTypesAndContributionMap":{}},{"hash":"ba38b96ba4115a8d9aa0095b004ba59c21b6d42b","isMergeCommit":false,"messageTitle":"Edit PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"74834e71ff44b3a6d6f818bcfac018c20a9c3d15","isMergeCommit":true,"messageTitle":"Merge pull request #23 from PearlynnT/ppp","messageBody":"Edit PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"f9ac93efee042ebd89d3a1425ba809e21eaa912f","isMergeCommit":false,"messageTitle":"Edit find feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":1},"test-code":{"insertions":18,"deletions":0}}},{"hash":"2454c10704099711e2fba6e3d9aaf65ab48ea70e","isMergeCommit":true,"messageTitle":"Merge pull request #38 from PearlynnT/find-feature","messageBody":"Edit find feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"eb4b9a425ea3a9abec268cf997186b7ac921f5cd","isMergeCommit":false,"messageTitle":"Add edit feature in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":14}}},{"hash":"ebf297de203b4502c6ee13d064207563d00bd013","isMergeCommit":false,"messageTitle":"Add edit feature in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":7}}},{"hash":"fb1429b8a37b426dbefe20f650271857963b2437","isMergeCommit":true,"messageTitle":"Merge pull request #48 from PearlynnT/edit-dg","messageBody":"Add edit feature in DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"7244036259d2e829a0cc5b12d0cfc28a76b7bb10","isMergeCommit":true,"messageTitle":"Merge pull request #46 from PearlynnT/edit-ug","messageBody":"Add edit feature in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"288c43e054e01a358e9cc14ba80fdabbfd2f59e9","isMergeCommit":false,"messageTitle":"Add edit feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":357,"deletions":161},"test-code":{"insertions":531,"deletions":393}}}]},{"date":"2023-10-16","commitResults":[{"hash":"f83246f8903b39b47dad1c40f1849f2d77272afe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea010e4c10045e39d0c3d59504be91f66bcdcda3","isMergeCommit":false,"messageTitle":"Fixed checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":16,"deletions":26},"test-code":{"insertions":1,"deletions":1}}},{"hash":"50c54d90b99d9933aa2f32c93d3b2c46f6fe3308","isMergeCommit":true,"messageTitle":"Merge pull request #56 from PearlynnT/edit-feature","messageBody":"Add edit feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"a147f1c17337e0cd8b7ec9ae9a08eba4f96b81f9","isMergeCommit":false,"messageTitle":"Fix edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":35}}},{"hash":"cc44fd89dd3659a62c5c7c20773b40a012fe68a4","isMergeCommit":false,"messageTitle":"Remove file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":71}}},{"hash":"b487b38f2bacd22f9d2d679151931fc80beca158","isMergeCommit":false,"messageTitle":"Add SocialMediaLinkTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"3e1b174deeff00f1b471b938995bfe8564ce56b7","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":24},"test-code":{"insertions":184,"deletions":1}}},{"hash":"7573585fa20960cf2246794a695ff3902cf5ae64","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"3b28f78cc141295cd1f82c1a4483494e212ce972","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}},{"hash":"e818087553ba19bcf9bd6af4f75f4d0465ecdeb7","isMergeCommit":false,"messageTitle":"Add test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"f923cc2ef608fb1b0ff072596abf14b82596efd0","isMergeCommit":true,"messageTitle":"Merge pull request #66 from PearlynnT/edit-test-fix","messageBody":"Fix edit command test","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Bearypop":{"docs":55,"functional-code":13,"test-code":142},"neyapraveen":{"docs":140,"functional-code":126,"test-code":21,"other":1},"wnchan":{"docs":75,"functional-code":415,"test-code":34},"maj0-0":{"docs":96,"functional-code":182,"test-code":256,"other":4},"PearlynnT":{"docs":85,"functional-code":330,"test-code":768}},"authorContributionVariance":{"Bearypop":3261.0256,"neyapraveen":5622.616,"wnchan":14948.974,"maj0-0":1766494.1,"PearlynnT":75310.6},"authorDisplayNameMap":{"Bearypop":"CS2103T-F12-2 LOO ..EONG","neyapraveen":"CS2103T-F12-2 DEWA..VEEN","wnchan":"CS2103T-F12-2 CHAN..NING","maj0-0":"CS2103T-F12-2 ALNA..AL M","PearlynnT":"CS2103T-F12-2 PEAR..YING"}} +{"authorDailyContributionsMap":{"Bearypop":[{"date":"2023-10-02","commitResults":[{"hash":"e5a2791764e979ba0dc6d7e6052944c5981fa713","isMergeCommit":false,"messageTitle":"Update AboutUs, User guide, PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"251f29cd6876fa06699c8370c413b4f836e2507d","isMergeCommit":false,"messageTitle":"Change exit feature so exit message is displayed before exiting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6}}},{"hash":"b92b0dd5411736c5e3873126e22278147f0c52d6","isMergeCommit":false,"messageTitle":"Change exit image in User Guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b7d3298f4339eca1ad2df3fd2a9ea25e651d6206","isMergeCommit":false,"messageTitle":"Bug fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"86f43c1ccbaf3bd1db0779bfa000a550b72a39a0","isMergeCommit":false,"messageTitle":"Change code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"073ada0a577c64c4a3967f07867cb8e3af89d233","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Bearypop/week-7-Yik-Leong","messageBody":"Update documentation and exit feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"2844cd7c7c22cab732de5f12e8ce46fc8e3f8a8a","isMergeCommit":false,"messageTitle":"Update PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7057471222168d1b82a265a6fa7da219feef81a0","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Bearypop/update-PPP","messageBody":"Update documentation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"2829bfd314524699f626f956160e84e16daf2740","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"8c7b878b4b4f6756afa013f7fbcbaa6f282e2933","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"84ab1746baef1c1e4bda83bd282b235b8f2a030d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"2251048de48e0c4e186fbef5e6d66f79956f03af","isMergeCommit":false,"messageTitle":"Update tests for Add Command and resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":126,"deletions":86}}},{"hash":"ab380a81760f1b6731ef0d66f1d43731bb32b5f9","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"0264b7d8f43e1cb45ef32a5a6f610686e5810ee1","isMergeCommit":false,"messageTitle":"Update EditCommandTest and DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":16,"deletions":10}}},{"hash":"0898b7912f69f9c24df9a459f6d7029ea60267cc","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Bearypop/test-add-command","messageBody":"Update tests for Add command","fileTypesAndContributionMap":{}},{"hash":"a6e4b2b284e8ec70e6903a817aa87713675ccb14","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Bearypop/tests-bug-fix","messageBody":"Tests bug fix","fileTypesAndContributionMap":{}},{"hash":"9cc512b08e113cb963c4bdca15bf4a295ac6cbba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17f7096ca210f3503e18fc604fa8a29b65afda71","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":19}}},{"hash":"602eca3e20625a19634a0fe35bb0f5709be1a5c3","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Bearypop/v1.2b-update-docs","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"d4f92869f0ea16cd79d793ecaad52d8a519f2671","isMergeCommit":false,"messageTitle":"Update docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"neyapraveen":[{"date":"2023-10-05","commitResults":[{"hash":"d59a985c48c65e23007645ddd01db40f60cf4aae","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp: (27 commits)\n Add photo to AboutUs\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n Edited UserGuide\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n Edited UserGuide\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Edited \u0027Add\u0027 feature in User Guide\n Updated AboutUs page, added image and skeletal PPP\n Updated README contents and Ui mockup\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"49a6cc6a0969a3805b3e0a43afa0f6bc73e1d030","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c3f0b479b049b11cf88a6ab725a1d9ba73eb840f","isMergeCommit":false,"messageTitle":"Add PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"d7c59c71dab2d6ee5983182c28cb191eaa7a0b55","isMergeCommit":true,"messageTitle":"Merge pull request #39 from neyapraveen/add-PPP","messageBody":"Add ppp","fileTypesAndContributionMap":{}},{"hash":"df77c4f91e7ca0d0f2cdf808cfb785cf7912bfbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd6aff44d1d5c580ec4de1c3a8196526585015e4","isMergeCommit":false,"messageTitle":"Fix delete function description in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}},{"hash":"d81728ee202a9ae9fc1bcd9d89c33d66d0146f45","isMergeCommit":true,"messageTitle":"Merge pull request #40 from neyapraveen/update-delete-ug2","messageBody":"Update delete ug2","fileTypesAndContributionMap":{}},{"hash":"096b7d8c1bf80eedb045bf63df11725cbd790af6","isMergeCommit":false,"messageTitle":"Update user stories, glossary, NFRs, use cases in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":90,"deletions":30}}},{"hash":"6e70025df6013717f584c3eb05355b56c37ae626","isMergeCommit":true,"messageTitle":"Merge pull request #42 from neyapraveen/update-dg","messageBody":"Update user stories, glossary, NFRs, use cases in DG","fileTypesAndContributionMap":{}},{"hash":"65ecd188c13cb8b8edd5a4ca7f3777f0f048b182","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"b3192e23fcccafc348d687e9d6d9045a7e79f754","isMergeCommit":true,"messageTitle":"Merge pull request #43 from neyapraveen/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"c59ccf71151fdba2f81b34120643005ffd2137b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp: (21 commits)\n fixed checkstyle error\n Fixed checkstyle error\n fixed checkstyle errors\n fixed checkstyle errors\n Fixed checkstyle errors\n Added restrictions to fields\n Update list feature screenshot\n Add edit feature in DG\n Fixed checkstyle errors\n Edited checkstyle errors\n Fixed error\n Fixed some bugs\n Edited files for Add features\n Fixed social media link bug\n Update AboutUs.md\n Edited Parser and Person files\n Edited Person class\n Added field classes\n Fix bug in ListCommand\n Update success message and UG screenshot for list feature\n ...\n","fileTypesAndContributionMap":{}},{"hash":"f8f0c7e67a5711127f81aa1ceb67b628334e9eea","isMergeCommit":false,"messageTitle":"Update delete command to delete by email","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":18}}},{"hash":"82a6760773fe5b3ae0265b9f440de193ee8f0520","isMergeCommit":false,"messageTitle":"Edit test cases for delete with email","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":54}}},{"hash":"466c12cc110f06267795d9b648e33161b2f30f4c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":21},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e4cf9a95e2e2aebf1cac1ea5e973cdaeaa6ba7f1","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":21},"test-code":{"insertions":22,"deletions":31}}},{"hash":"3883737b8ea7feaf508a446f3e3edba58a0fbe7d","isMergeCommit":true,"messageTitle":"Merge commit \u0027466c12cc110f06267795d9b648e33161b2f30f4c\u0027 into delete-by-email-feature","messageBody":"* commit \u0027466c12cc110f06267795d9b648e33161b2f30f4c\u0027:\n Fix style\n","fileTypesAndContributionMap":{}},{"hash":"2e8127989b25ed944561a3339579514391ff1040","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"d4299ab98268cbf36fbb9507eefcd2485a446f29","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"86366a1d201ef218bcd095496c148eb16b10514c","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"f313a284fdea97069c78ca202fc50b20e28f8033","isMergeCommit":true,"messageTitle":"Merge pull request #50 from neyapraveen/update-documentation-v1.2","messageBody":"Update documentation v1.2","fileTypesAndContributionMap":{}},{"hash":"c3a5f783a3a8e956dbd9b2ddbc929a9bcb75e2d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-by-email-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec1eb258bf94df4d3edf5dcffff217d9a2c22cf5","isMergeCommit":true,"messageTitle":"Merge pull request #49 from neyapraveen/delete-by-email-feature","messageBody":"Change to delete by email","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"ffd9fd9b4b2044b6c5fe3bfebcd02bd3bfc12dd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp:\n Update EditCommandTest and DeleteCommandTest\n Fix checkstyle issues\n Update tests for Add Command and resolve checkstyle issues\n Fixed checkstyle\n Add edit feature\n Edited checkstyle\n Updated image for \u0027Add\u0027 feature\n Update documentation\n Fix style\n Fix more style\n Fix style\n Fix style\n Edit test cases for delete with email\n Update delete command to delete by email\n Add edit feature in UG\n","fileTypesAndContributionMap":{}},{"hash":"a36b059f7e1e56ff03651da5334be627d9ab91ca","isMergeCommit":false,"messageTitle":"Fix bug in DeleteCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"73acd45f60f1128e7fa9f03e1acf5122853a1195","isMergeCommit":true,"messageTitle":"Merge pull request #60 from neyapraveen/branch-fix-deleteparsertest","messageBody":"Branch fix deleteparsertest","fileTypesAndContributionMap":{}},{"hash":"cdd991cac3d3a4b0ec7954ae340588f93a49e04e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/neyapraveen/tp","messageBody":"* \u0027master\u0027 of https://github.com/neyapraveen/tp:\n Fix bug in DeleteCommandParserTest\n","fileTypesAndContributionMap":{}},{"hash":"3d3bf6d34d4c40981b8cef2af10543e814cbe2c3","isMergeCommit":false,"messageTitle":"Change background colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":72}}},{"hash":"4033d6ab6f917c602a5ce6a0aa3079d0324c3831","isMergeCommit":false,"messageTitle":"Change border colour to yellow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"cd75eebdd1cc4fa336d5ec9d6f739b36f620c02e","isMergeCommit":false,"messageTitle":"Make names bold","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"1aa3865ff21bc6be8960596ec48b6722809eec27","isMergeCommit":false,"messageTitle":"Change fonts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d29271e7e94263927c1ff75d84b09ca152527e93","isMergeCommit":false,"messageTitle":"Fix styling for social media links","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":4}}},{"hash":"b43af555042880107b71d12e341aa3687a687be6","isMergeCommit":false,"messageTitle":"Make index same style as name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":9}}},{"hash":"0ef122df545f21d53d8ae39c20d0ec174820ede6","isMergeCommit":false,"messageTitle":"Add labels to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":9},"other":{"insertions":1,"deletions":1}}},{"hash":"59962b426b583ac5c0f0433656512349890d43cb","isMergeCommit":false,"messageTitle":"Change colour scheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":34}}},{"hash":"976fed700239c6b70f971a9a22fd529f1d088106","isMergeCommit":false,"messageTitle":"Improve style and visibility","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17}}},{"hash":"bc6eed9082106de0a4d88b990175e07e869c4208","isMergeCommit":true,"messageTitle":"Merge pull request #68 from neyapraveen/ui-improvement","messageBody":"Improve UI\r\nFix #59 ","fileTypesAndContributionMap":{}}]}],"wnchan":[{"date":"2023-10-04","commitResults":[{"hash":"8b1d36f33fc877e890dabd9d3eb4b7a7d8e20cb1","isMergeCommit":false,"messageTitle":"Updated README contents and Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"1adbc4aedbf8299eeec01312fa9520db32b39d67","isMergeCommit":false,"messageTitle":"Updated AboutUs page, added image and skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":6}}},{"hash":"2fe1d5d5e6c1db7ce749c21af81f2e3b60d06f3a","isMergeCommit":false,"messageTitle":"Edited \u0027Add\u0027 feature in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":7}}}]},{"date":"2023-10-05","commitResults":[{"hash":"16857c1ca7b1cb320b1395b0462eb2dafe2fc77c","isMergeCommit":true,"messageTitle":"Merge pull request #21 from wnchan/branch-AboutUs","messageBody":"Updated AboutsUs page, skeletal PPP and User Guide","fileTypesAndContributionMap":{}},{"hash":"aab0291119f8f9989a73f23ec940813a02663fba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edit PPP\n Add line EOF\n Update PPP\n Edited \u0027Add\u0027 feature in User Guide\n Updated AboutUs page, added image and skeletal PPP\n Updated README contents and Ui mockup\n update UG content for find\n","fileTypesAndContributionMap":{}},{"hash":"4387e680f7f46a3a20aad911fea3ed97e36b17dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c58d9b18e981861f4b48d72106b18935af5f7011","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Add Newline at EOF\n Add Newline at EOF\n Fix style conventions\n Update PPP Skeleton\n Add Majedah\u0027s details to AboutUs page\n Add Majedah\u0027s details to AboutUs page\n Implement new command - Remark\n","fileTypesAndContributionMap":{}},{"hash":"832299dc0cbf3777334c027b13c803120c3b9f5f","isMergeCommit":false,"messageTitle":"Edited UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"0f87c666ffe0f7cf78ec44e3e7df04d1b7e8de2d","isMergeCommit":true,"messageTitle":"Merge pull request #25 from wnchan/branch-week7wnchan","messageBody":"Edited UserGuide","fileTypesAndContributionMap":{}},{"hash":"2eaae636d66a55329c179fe5936cb56cdff4204a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf8610000cb2968fe115741b15a2b3525603cad6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited UserGuide\n","fileTypesAndContributionMap":{}},{"hash":"0a1dbee4f4771e8a57c1dd16fce11d1caa5c56bc","isMergeCommit":false,"messageTitle":"Revert \"Edited UserGuide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"4c8ceb246844e23b47c833a0a0d13090758cdf83","isMergeCommit":true,"messageTitle":"Merge pull request #27 from AY2324S1-CS2103T-F12-2/revert-25-branch-week7wnchan","messageBody":"Revert \"Edited UserGuide\"","fileTypesAndContributionMap":{}},{"hash":"db06e9050bb72e2c5c52701f1d824dfbafb53092","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"befb2942c8b0e14bfe011d62c365d9d2df6945ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n","fileTypesAndContributionMap":{}},{"hash":"f94f6d2a3482049c958cc5e0fdb86fd47d4367c1","isMergeCommit":false,"messageTitle":"Edited UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9b0fb229ae3d4c8d1a73dece4261ef119bd16405","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-week7wnchan","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a33d8d6d9db38f70a95ef74e5af809040be84cf7","isMergeCommit":true,"messageTitle":"Merge pull request #28 from wnchan/branch-week7wnchan","messageBody":"Edited UserGuide","fileTypesAndContributionMap":{}},{"hash":"5aa70472a6232fd744ed9adce73d39d17a6ff7a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d25ad330f1990fa69e49823a1f3323b0b63be94a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited UserGuide\n","fileTypesAndContributionMap":{}},{"hash":"b1186d5a7d039affee78045c9e11549b65937072","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp into branch-week7wnchan","messageBody":"* \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp:\n Revert \"Edited UserGuide\"\n Revert \"Update About Us page, UG and PPP Skeleton\"\n Update profile photo\n Update build.gradle\n Temporarily update build.gradle\n Revert changes to gradle.yml workflow\n Update UG for list feature\n Update Gradle Wrapper\n Finalise Style\n Add Newline at EOF\n Add Newline at EOF\n Fix style conventions\n Update PPP Skeleton\n Add Majedah\u0027s details to AboutUs page\n Add Majedah\u0027s details to AboutUs page\n Implement new command - Remark\n","fileTypesAndContributionMap":{}},{"hash":"502442449759aec2c356e3a9ddc568858d7cf489","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83094e945099c5c11558efbc2ad269296de01410","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n","fileTypesAndContributionMap":{}},{"hash":"a4a684ec5af42e6c0c9c5f59c629f368a614d90f","isMergeCommit":false,"messageTitle":"Edited some classes associated to the \"Add\" feature.","messageBody":"Edited command and parser. Files under person package and person card\nfiles still needs to be edited.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":83}}},{"hash":"d84293243b5f53d2a1af776a74139b449f4eee29","isMergeCommit":false,"messageTitle":"Added field classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"684cbd7c34b7417894c646e8208f236ad0baa1cd","isMergeCommit":false,"messageTitle":"Edited Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":9}}}]},{"date":"2023-10-06","commitResults":[{"hash":"f9788849a70675c38d3f188cba8bd4299624d7f5","isMergeCommit":false,"messageTitle":"Edited Parser and Person files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":157}}}]},{"date":"2023-10-07","commitResults":[{"hash":"3c6f2a7405a3d58556e7eebcbf8a3de94107b91f","isMergeCommit":false,"messageTitle":"Fixed social media link bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"060e76c1e56c41697e705ac8bdc6f89c0316397b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9efbe65cb54d36c310c9a47a2cf95365db168b5a","isMergeCommit":false,"messageTitle":"Edited files for Add features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":105,"deletions":117}}},{"hash":"31596bfa32d8385d483cdb2d94d91e995535c452","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update AboutUs.md\n Update user stories, glossary, NFRs, use cases in DG\n Fix delete function description in UG\n Add delete.png of UI\n Add PPP\n Edit find feature\n Update information in UG\n Add photo to AboutUs\n","fileTypesAndContributionMap":{}},{"hash":"bad70ae891671f1925af7b17632109b80ed66578","isMergeCommit":false,"messageTitle":"Fixed some bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"634c8a8fc31ac34a8264b6f01ca88a7341fd682b","isMergeCommit":false,"messageTitle":"Fixed error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2141f9c55a798fba3e765e01cdad953a19107fdb","isMergeCommit":false,"messageTitle":"Edited checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":28}}},{"hash":"cee99e96bde9dbcb329a64c97e77f0f5daa302d9","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":24}}}]},{"date":"2023-10-12","commitResults":[{"hash":"15525629646d5141bf1c80ac9c65a8560c9c6c38","isMergeCommit":false,"messageTitle":"Added restrictions to fields","messageBody":"Name now only accepts alphabetical characters, emails only accept\n@u.nus.edu domains, social media link can accept null values, major\nonly accept a list of NUS majors, description only accept up till 150\ncharacters. Fixed some bugs pertaining to not including certain\nprefixes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":20},"docs":{"insertions":11,"deletions":8}}},{"hash":"7462e5597e144bca9657cf8bea0161b93e52fb1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-week7wnchan","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c1839e1ff67dd31d840bd346982e2b5396ccf2e","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":46}}},{"hash":"1b9e637559d3407c24a42813c37e9062e20eb4b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp into branch-week7wnchan","messageBody":"* \u0027branch-week7wnchan\u0027 of https://github.com/wnchan/tp:\n Update list feature screenshot\n Update AboutUs.md\n Update user stories, glossary, NFRs, use cases in DG\n Fix delete function description in UG\n Add delete.png of UI\n Add PPP\n Edit find feature\n Update information in UG\n Fix bug in ListCommand\n Add photo to AboutUs\n Update success message and UG screenshot for list feature\n Change \"AB-3\" in website top navigation bar to \"StudentConnect\"\n Update title and repo for site-wide settings\n Fix error in UG\n Update PPP skeletal and AboutUs\n Update UG for list feature\n","fileTypesAndContributionMap":{}},{"hash":"a9985d982ed450d3f0d20da037d8634569129f62","isMergeCommit":false,"messageTitle":"fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"41d79a265aa050de097be760fb0c95d32c15b9ae","isMergeCommit":false,"messageTitle":"fixed checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"b3ee10613bf583e3e96370bd398444b19f9babea","isMergeCommit":false,"messageTitle":"Fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"a0cc1811102231f97edd05a584ac8f41afa03f5a","isMergeCommit":false,"messageTitle":"fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"9ddf44e59263e0e5d9bfb7f93ccc6745c8f58070","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wnchan/branch-week7wnchan","messageBody":"Edited the \"Add\" feature","fileTypesAndContributionMap":{}},{"hash":"8b8ce99b1fd19a622f76c00062da252f1a0f528b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b368be26c349ffa32c07bd61ba6878a7f17cd50d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n fixed checkstyle error\n Fixed checkstyle error\n fixed checkstyle errors\n fixed checkstyle errors\n Fixed checkstyle errors\n Added restrictions to fields\n Update list feature screenshot\n Fixed checkstyle errors\n Edited checkstyle errors\n Fixed error\n Fixed some bugs\n Edited files for Add features\n Fixed social media link bug\n Edited Parser and Person files\n Edited Person class\n Added field classes\n Fix bug in ListCommand\n Update success message and UG screenshot for list feature\n Edited some classes associated to the \"Add\" feature.\n","fileTypesAndContributionMap":{}},{"hash":"50e630fa6fc886f3aec55f001736cada8a66a782","isMergeCommit":false,"messageTitle":"Updated image for \u0027Add\u0027 feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e847aaa337d86bfc6529cdd5188b0f305a57f1ea","isMergeCommit":false,"messageTitle":"Edited checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"a91a8c53d1b0c332a47734b518e20bfc81f6d868","isMergeCommit":true,"messageTitle":"Merge pull request #53 from wnchan/branch-v1.2","messageBody":"Updated image for \u0027Add\u0027 feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"74b91458b12276c949ca2ab1de1a1dfdb4a9eadc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Edited checkstyle\n Updated image for \u0027Add\u0027 feature\n Update documentation\n Fix style\n Fix more style\n Fix style\n Fix style\n Edit test cases for delete with email\n Update delete command to delete by email\n Add edit feature in DG\n Add edit feature in UG\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"cc9455cb1a805e39a11d11b2a83a957d75122e87","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wnchan/tp","messageBody":"* \u0027master\u0027 of https://github.com/wnchan/tp:\n Update docs\n Update documentation\n Fix bug in DeleteCommandParserTest\n Update EditCommandTest and DeleteCommandTest\n Fix checkstyle issues\n Update tests for Add Command and resolve checkstyle issues\n Fixed checkstyle\n Add edit feature\n","fileTypesAndContributionMap":{}},{"hash":"929c84f9cf203189e63688b4ed332945f61f4a3a","isMergeCommit":false,"messageTitle":"Made email the unique identifier","messageBody":"Made email the field that differentiates students, changed the duplicate\nperson message, made name auto capitalise the first letter of each word\nand edited the test case affected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":7},"test-code":{"insertions":10,"deletions":20}}},{"hash":"e5be5c08ecf570a57a7b0a4b928d6fba79640cbb","isMergeCommit":false,"messageTitle":"Edits for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c91ba0b367d657bc8ca6a99d7d8adb98673963a1","isMergeCommit":false,"messageTitle":"Import fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"b8c3f96326194b45a3e5dcb25f8c4b76d2a36fb3","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"bdb2449cef202e134f43ddab2abd63ca1e8855b9","isMergeCommit":true,"messageTitle":"Merge pull request #63 from wnchan/branch-v1.2b","messageBody":"Improved StudentConnect fields and identifier","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"c3b9723b3d5016331cf0f15eaf6c0904703cfb3c","isMergeCommit":false,"messageTitle":"Edit test files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":21,"deletions":25}}},{"hash":"530d5e01ebfb0e15684961b70b88145ebfd84912","isMergeCommit":true,"messageTitle":"Merge pull request #64 from wnchan/branch-v1.2b","messageBody":"Edit most of the test files","fileTypesAndContributionMap":{}}]}],"maj0-0":[{"date":"2023-09-30","commitResults":[{"hash":"f4e961c47d1db4c99a7187ca4ba1a5ffe464dc78","isMergeCommit":false,"messageTitle":"Implement new command - Remark","messageBody":"Implementing a remark command allows users of the AddressBook application to add optional remarks to people in their address book and edit/remove it if required.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":300,"deletions":91},"test-code":{"insertions":59,"deletions":7}}},{"hash":"b4512e9ab5edebcc38ecd0ea95af0db00dbd76e6","isMergeCommit":false,"messageTitle":"Add Majedah\u0027s details to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"68748bf43f70371376405b15c7499bd9d11bac52","isMergeCommit":false,"messageTitle":"Add Majedah\u0027s details to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"291ec4b7df28f06a3a420d4fe195cd46bd81bc6c","isMergeCommit":false,"messageTitle":"Update PPP Skeleton","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":47}}},{"hash":"ba2c151b931f737d2dd7e316ec08706607e410f9","isMergeCommit":false,"messageTitle":"Fix style conventions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"38d7da6bab51cf029d13bb126b66ce5447f95763","isMergeCommit":false,"messageTitle":"Add Newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":30},"docs":{"insertions":1,"deletions":2}}},{"hash":"1721c4768e1576dcef787734fb9e1731ee99e2d2","isMergeCommit":false,"messageTitle":"Add Newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2023-10-05","commitResults":[{"hash":"23f66b34a92c61191d4e017d3685605a91943046","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5082261981508738d5a3c404a234693b2274aafe","isMergeCommit":false,"messageTitle":"Finalise Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":1,"deletions":2}}},{"hash":"68208c0b71df079c23ded48bf7acbc5edce5e874","isMergeCommit":false,"messageTitle":"Update Gradle Wrapper","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":525,"deletions":561},"other":{"insertions":379,"deletions":379},"docs":{"insertions":621,"deletions":354},"test-code":{"insertions":164,"deletions":267}}},{"hash":"580da745f48822e415d8c8c85ca58b21ebf25e7a","isMergeCommit":false,"messageTitle":"Update UG for list feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":10}}},{"hash":"8ee1a7797905da7f99f40f7cf8e46528d637ff20","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bdc7d27f4612e64f187c9fd270d31b90967fe25","isMergeCommit":true,"messageTitle":"Merge branch \u002712-update-aboutus-page\u0027 of https://github.com/maj0-0/tp into 12-update-aboutus-page","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"17ad52d6d82fcbdeaf5b136b94013d1c00e412f1","isMergeCommit":false,"messageTitle":"Temporarily update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"634dc6daf56a2f05fa7b162251d252ffca98fbf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1419a0475895e22e36ca66255e9d8ebd01ae5c4d","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"7cfac867218bd7f8400642d2704a674b0da26b43","isMergeCommit":false,"messageTitle":"Update profile photo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"fb975baab209f62e876fe4500c50b8c637d364ff","isMergeCommit":true,"messageTitle":"Merge branch \u002712-update-aboutus-page\u0027 of https://github.com/maj0-0/tp into 12-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"096f3c9ecce38b9a42cdca10a0ca7f1ad5b3d1d6","isMergeCommit":true,"messageTitle":"Merge pull request #17 from maj0-0/12-update-aboutus-page","messageBody":"Update About Us page, UG and PPP Skeleton","fileTypesAndContributionMap":{}},{"hash":"14ff71ae1a756e95662813cc8e578ad6a73b9ac4","isMergeCommit":false,"messageTitle":"Revert \"Update About Us page, UG and PPP Skeleton\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":596,"deletions":744},"other":{"insertions":379,"deletions":379},"docs":{"insertions":336,"deletions":657},"test-code":{"insertions":270,"deletions":218}}},{"hash":"a323d2e0f5b451eb8b4f8233dee871e8a45a3bbb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from AY2324S1-CS2103T-F12-2/revert-17-12-update-aboutus-page","messageBody":"Revert \"Update About Us page, UG and PPP Skeleton\"","fileTypesAndContributionMap":{}},{"hash":"40f6bf3d17f29070fb186b08780866b74fdd5ba9","isMergeCommit":false,"messageTitle":"Update UG for list feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":57}}},{"hash":"a6aad82c7031da1eee715a3b05325f6fcd503856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/week7-maj0-0\u0027 into week7-maj0-0","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"35e15528cb0b64461efaa1cb4e1c4c0501478fd1","isMergeCommit":false,"messageTitle":"Update PPP skeletal and AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":4}}},{"hash":"26e6dd958f09f66c4552b1234fdb7d8cf32070bf","isMergeCommit":false,"messageTitle":"Fix error in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":16}}},{"hash":"8bcb436192c7abbcac88e3fdcffb9bd4266654ee","isMergeCommit":true,"messageTitle":"Merge pull request #29 from maj0-0/week7-maj0-0","messageBody":"Update AboutUs, PPP skeletal and UG","fileTypesAndContributionMap":{}},{"hash":"38182d8f54ae65edb9a0d4381eb62a3a3c1fda3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into update-site-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"666e16da0442e69ab4b0aeabefbd2b87215fa908","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-site-settings\u0027 of https://github.com/maj0-0/tp into update-site-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a6bf76dc439228e25f841f90c03c2d12ad6dd46","isMergeCommit":false,"messageTitle":"Update success message and UG screenshot for list feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"docs":{"insertions":2,"deletions":0}}},{"hash":"984acf2147b66e2b5ca156e6917ff5e61917caa1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-F12-2:master\u0027 into 1-List-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0302fd1a2c6f3146ff4b07b2639171a7f5d5acbf","isMergeCommit":false,"messageTitle":"Fix bug in ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}},{"hash":"7ca6f59141d633ab1636fac98f307d46f0fdeb18","isMergeCommit":true,"messageTitle":"Merge branch \u00271-List-Feature\u0027 of https://github.com/maj0-0/tp into 1-List-Feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab94125048ddc180e8cf7481570fc7e4b19aff90","isMergeCommit":false,"messageTitle":"Update information in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":34}}},{"hash":"a9428663365276af324da5bc7c73f1c4ae4767aa","isMergeCommit":true,"messageTitle":"Merge pull request #37 from maj0-0/adapt-ug","messageBody":"Adapt UG to better fit StudentConnect","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"698e1ce41f6a8f4552d8bd92532d20cfd9d77441","isMergeCommit":true,"messageTitle":"Merge pull request #34 from maj0-0/1-List-Feature","messageBody":"Update list feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"b4f879e5c633e59099aba569e9f494fbc2fecead","isMergeCommit":false,"messageTitle":"Add tutorial class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0}}},{"hash":"0cc5a9c6bb429cc7ce46cbb962496e36042cbc78","isMergeCommit":false,"messageTitle":"Update implementation for tutorial field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":32}}},{"hash":"81c9755a2ee101041ddc67b5883aaf3dc7531767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/maj0-0/tp into 62-Tutorial-Field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8ca692c3762b232eb70df2a648457c836102635","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"668ee3deafe37a83ac0ce1b4fd72490cd0219ffd","isMergeCommit":false,"messageTitle":"Update Year Display Text","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"642081bb5cbd7cad2e9ed404204c2bf3ae96f51c","isMergeCommit":false,"messageTitle":"Add tutorial field to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":9}}},{"hash":"275181be0a5689eafa38ce7d0275f5e28176fe88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/maj0-0/tp into 62-Tutorial-Field","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n","fileTypesAndContributionMap":{}},{"hash":"76fa3cd3a4bda3a7b91320d42498b9d3fbbb0931","isMergeCommit":false,"messageTitle":"Match Tutorial Field UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":28}}},{"hash":"1e4abbac96e3da80e2b0906879a244f1490ccbbf","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":10},"test-code":{"insertions":37,"deletions":14}}},{"hash":"924e3b8803eea972f41eb2b451d0ca7a96fcfc15","isMergeCommit":false,"messageTitle":"Fix bugs in Tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":18}}},{"hash":"1f59c6744bd91b79ca4baf42f967eb0ee4b7d40c","isMergeCommit":false,"messageTitle":"Fix issue with loading tutorials","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"95697ff93598ca16d660fa989481d72f2c8b5420","isMergeCommit":false,"messageTitle":"Update clear feature in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}},{"hash":"aa133104c7004e5428c32cf2be8731dcc66f59c4","isMergeCommit":false,"messageTitle":"Update Tutorial type in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"be570ef64d8bbb3d1618adea7e74fe750723fdcb","isMergeCommit":false,"messageTitle":"Update Test Cases For Tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":47},"test-code":{"insertions":109,"deletions":0}}},{"hash":"dd23f3ba9803d2f007dc0d94446a655e0875978a","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":107,"deletions":0}}},{"hash":"e0b99861f7ea9dd6435192f48b872b291b7c9b82","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"096166eb26a4beee5358329fcea0a4418cfaf8dd","isMergeCommit":false,"messageTitle":"Add hash code test to TutorialTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"46f1fe6676540ec09aa41e351bfb73c601af5d3e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from maj0-0/62-Tutorial-Field","messageBody":"Add Tutorial Field","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"d63f9818f31d8fe8ec56ab083ea3bf561b9dd078","isMergeCommit":false,"messageTitle":"Update tutorial implementation to use Set instead of List","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":37},"test-code":{"insertions":34,"deletions":25}}}]},{"date":"2023-10-23","commitResults":[{"hash":"ce6f645f372e1d417fd6b486091cc9f811b71eb9","isMergeCommit":false,"messageTitle":"Migrate Tutorial.java to a separate folder for consistency","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"236efcaa7059d8aed6ccef5c5a0260693de0c59a","isMergeCommit":false,"messageTitle":"Migrate Tutorial.java to a separate folder for consistency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7},"test-code":{"insertions":8,"deletions":6}}}]},{"date":"2023-10-24","commitResults":[{"hash":"c7335e324468c0981784b85021776e262c328422","isMergeCommit":true,"messageTitle":"Merge pull request #73 from maj0-0/62-Tutorial-Field","messageBody":"Update Tutorial Implementation","fileTypesAndContributionMap":{}}]}],"PearlynnT":[{"date":"2023-09-22","commitResults":[{"hash":"ea66fcca21b602fc8028cb5c5f765658f36fa050","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"af182d161606238a8bbd882fd1d4e3bbb91edb45","isMergeCommit":false,"messageTitle":"update UG content for find","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":15}}}]},{"date":"2023-10-05","commitResults":[{"hash":"942cb89c6fc396921921d3ec3884c4be6c835d02","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab60e1c1c72383ac83ffce6b90216eb6dd7036a4","isMergeCommit":false,"messageTitle":"Add line EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0c4e4b995f0c32c4c6393a242ab98518fe851bf7","isMergeCommit":true,"messageTitle":"Merge pull request #16 from PearlynnT/master","messageBody":"update UG content for find","fileTypesAndContributionMap":{}},{"hash":"ba38b96ba4115a8d9aa0095b004ba59c21b6d42b","isMergeCommit":false,"messageTitle":"Edit PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"74834e71ff44b3a6d6f818bcfac018c20a9c3d15","isMergeCommit":true,"messageTitle":"Merge pull request #23 from PearlynnT/ppp","messageBody":"Edit PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"f9ac93efee042ebd89d3a1425ba809e21eaa912f","isMergeCommit":false,"messageTitle":"Edit find feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":1},"test-code":{"insertions":18,"deletions":0}}},{"hash":"2454c10704099711e2fba6e3d9aaf65ab48ea70e","isMergeCommit":true,"messageTitle":"Merge pull request #38 from PearlynnT/find-feature","messageBody":"Edit find feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"eb4b9a425ea3a9abec268cf997186b7ac921f5cd","isMergeCommit":false,"messageTitle":"Add edit feature in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":14}}},{"hash":"ebf297de203b4502c6ee13d064207563d00bd013","isMergeCommit":false,"messageTitle":"Add edit feature in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":7}}},{"hash":"fb1429b8a37b426dbefe20f650271857963b2437","isMergeCommit":true,"messageTitle":"Merge pull request #48 from PearlynnT/edit-dg","messageBody":"Add edit feature in DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"7244036259d2e829a0cc5b12d0cfc28a76b7bb10","isMergeCommit":true,"messageTitle":"Merge pull request #46 from PearlynnT/edit-ug","messageBody":"Add edit feature in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"288c43e054e01a358e9cc14ba80fdabbfd2f59e9","isMergeCommit":false,"messageTitle":"Add edit feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":357,"deletions":161},"test-code":{"insertions":531,"deletions":393}}}]},{"date":"2023-10-16","commitResults":[{"hash":"f83246f8903b39b47dad1c40f1849f2d77272afe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea010e4c10045e39d0c3d59504be91f66bcdcda3","isMergeCommit":false,"messageTitle":"Fixed checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":16,"deletions":26},"test-code":{"insertions":1,"deletions":1}}},{"hash":"50c54d90b99d9933aa2f32c93d3b2c46f6fe3308","isMergeCommit":true,"messageTitle":"Merge pull request #56 from PearlynnT/edit-feature","messageBody":"Add edit feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"a147f1c17337e0cd8b7ec9ae9a08eba4f96b81f9","isMergeCommit":false,"messageTitle":"Fix edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":35}}},{"hash":"cc44fd89dd3659a62c5c7c20773b40a012fe68a4","isMergeCommit":false,"messageTitle":"Remove file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":71}}},{"hash":"b487b38f2bacd22f9d2d679151931fc80beca158","isMergeCommit":false,"messageTitle":"Add SocialMediaLinkTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"3e1b174deeff00f1b471b938995bfe8564ce56b7","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":24},"test-code":{"insertions":184,"deletions":1}}},{"hash":"7573585fa20960cf2246794a695ff3902cf5ae64","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"3b28f78cc141295cd1f82c1a4483494e212ce972","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}},{"hash":"e818087553ba19bcf9bd6af4f75f4d0465ecdeb7","isMergeCommit":false,"messageTitle":"Add test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"f923cc2ef608fb1b0ff072596abf14b82596efd0","isMergeCommit":true,"messageTitle":"Merge pull request #66 from PearlynnT/edit-test-fix","messageBody":"Fix edit command test","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Bearypop":{"docs":55,"functional-code":13,"test-code":142},"neyapraveen":{"docs":140,"functional-code":126,"test-code":21,"other":1},"wnchan":{"docs":75,"functional-code":414,"test-code":34},"maj0-0":{"docs":96,"functional-code":175,"test-code":264,"other":4},"PearlynnT":{"docs":85,"functional-code":330,"test-code":771}},"authorContributionVariance":{"Bearypop":2791.3633,"neyapraveen":4884.4873,"wnchan":13105.33,"maj0-0":1509051.4,"PearlynnT":64615.484},"authorDisplayNameMap":{"Bearypop":"CS2103T-F12-2 LOO ..EONG","neyapraveen":"CS2103T-F12-2 DEWA..VEEN","wnchan":"CS2103T-F12-2 CHAN..NING","maj0-0":"CS2103T-F12-2 ALNA..AL M","PearlynnT":"CS2103T-F12-2 PEAR..YING"}} diff --git a/AY2324S1-CS2103T-T08-4_tp_master/authorship.json b/AY2324S1-CS2103T-T08-4_tp_master/authorship.json index 4ec79845..70e74652 100644 --- a/AY2324S1-CS2103T-T08-4_tp_master/authorship.json +++ b/AY2324S1-CS2103T-T08-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T08-4/tp/actions)","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"* This is a sample project for Software Engineering (SE) students.\u003cbr\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"* The project simulates an ongoing software project for a desktop application (called _MediFlowR_) used for managing contact details.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"* It is named `MediFlowR` because it tracks patient records for medical professionals.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"* For the detailed documentation of this project, see the **[MediFlowR Product Website](https://ay2324s1-cs2103t-t08-4.github.io/tp/)**.","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":8,"trgao":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" archiveFileName \u003d \u0027mediflowr.jar\u0027","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":"run {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"licongshen12":4,"-":67,"trgao":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"### Gao Tianrun","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/trgao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"[[github](https://github.com/trgao)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"[[portfolio](team/trgao.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"* Role: Team Lead","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"### Shen Licong","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/licongshen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"[[github](http://github.com/licongshen12)]","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":"[[portfolio](team/licongshen12.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"### Stalin Muthukumar Bill Kirankumar","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/billieboy7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"[[github](http://github.com/billieboy7)]","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"[[portfolio](team/billieboy7.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":"### Doan Quoc Thinh","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/dinde2004.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"[[github](http://github.com/dinde2004)]","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":"[[portfolio](team/dinde2004.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kwangthiag"},"content":"### Kwang Thiag","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"kwangthiag"},"content":"\u003cimg src\u003d\"images/kwangthiag.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"kwangthiag"},"content":"[[github](http://github.com/kwangthiag)]","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"kwangthiag"},"content":"[[portfolio](team/kwangthiag.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"dinde2004":1,"kwangthiag":5,"licongshen12":5,"-":33,"trgao":16}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point).","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2023-10-04"},{"lineNumber":259,"author":{"gitId":"trgao"},"content":"Healthcare Professionals who","lastModifiedDate":"2023-10-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"billieboy7"},"content":"* has a need to manage a significant number of patients at any given time","lastModifiedDate":"2023-10-04"},{"lineNumber":262,"author":{"gitId":"trgao"},"content":"* can add, update, delete and search patient records","lastModifiedDate":"2023-10-04"},{"lineNumber":263,"author":{"gitId":"trgao"},"content":"* are required to update, access and track multiple patients\u0027 treatment history","lastModifiedDate":"2023-10-04"},{"lineNumber":264,"author":{"gitId":"billieboy7"},"content":"* manage the scheduling, rescheduling and cancelling of appointments","lastModifiedDate":"2023-10-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"trgao"},"content":"* prefer typing to mouse interactions","lastModifiedDate":"2023-10-04"},{"lineNumber":268,"author":{"gitId":"trgao"},"content":"* are reasonably comfortable using CLI apps","lastModifiedDate":"2023-10-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"billieboy7"},"content":"**Value proposition**: manage patients\u0027 medical records faster than a typical GUI driven app in a systematic manner","lastModifiedDate":"2023-10-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"trgao"},"content":"|-----|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":279,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | create new patient records with relevant demographic information | add new patient records into the system |","lastModifiedDate":"2023-10-04"},{"lineNumber":280,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | update patient records as needed | keep the patient\u0027s information accurate and up to date |","lastModifiedDate":"2023-10-04"},{"lineNumber":281,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | delete patient records as needed | remove unused/outdated patient records |","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | search and retrieve patient records using their name quickly | find the necessary information efficiently without going through the entire list |","lastModifiedDate":"2023-10-04"},{"lineNumber":283,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | list all patients currently recorded in the system | see the general workload of the service. |","lastModifiedDate":"2023-10-04"},{"lineNumber":284,"author":{"gitId":"trgao"},"content":"| `* *` | healthcare professional | add custom remarks to a patient\u0027s records | give them detailed instructions and feedback after consultation |","lastModifiedDate":"2023-10-04"},{"lineNumber":285,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | schedule appointments for patients | set the date and time of patients\u0027 next appointment |","lastModifiedDate":"2023-10-04"},{"lineNumber":286,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | reschedule appointments when necessary | make sure my schedule does not clash with the appointments |","lastModifiedDate":"2023-10-04"},{"lineNumber":287,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | cancel appointments when necessary | clear up my schedule if a patient is not able to make it |","lastModifiedDate":"2023-10-04"},{"lineNumber":288,"author":{"gitId":"trgao"},"content":"| `* *` | healthcare professional | view a calendar with all scheduled appointments | plan my day effectively |","lastModifiedDate":"2023-10-04"},{"lineNumber":289,"author":{"gitId":"trgao"},"content":"| `*` | healthcare professional | schedule appointments for patients and assign them to specific doctors with matching schedules | efficiently match patients with free doctors |","lastModifiedDate":"2023-10-04"},{"lineNumber":290,"author":{"gitId":"trgao"},"content":"| `*` | healthcare professional | set reminders to patients for follow-up appointments | ensure that patients know about the follow-up appointments |","lastModifiedDate":"2023-10-04"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"kwangthiag"},"content":"(For all use cases below, the **System** is the `MediFlowR (MFR)` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"kwangthiag"},"content":"**Use case: Add a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"kwangthiag"},"content":"1. User requests to add a patient with name","lastModifiedDate":"2023-10-04"},{"lineNumber":303,"author":{"gitId":"kwangthiag"},"content":"2. MFR adds the patient and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":304,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":305,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":306,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":307,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":308,"author":{"gitId":"kwangthiag"},"content":"**Use case: Clear Database**","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":310,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":311,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":312,"author":{"gitId":"kwangthiag"},"content":"1. User requests clear all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"kwangthiag"},"content":"2. MFR clears the list and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":317,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":318,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":319,"author":{"gitId":"kwangthiag"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":320,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":321,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":322,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":323,"author":{"gitId":"kwangthiag"},"content":"1. User requests to delete a patient using ID","lastModifiedDate":"2023-10-04"},{"lineNumber":324,"author":{"gitId":"kwangthiag"},"content":"2. MFR deletes the person and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":325,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":326,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":327,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":328,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":329,"author":{"gitId":"kwangthiag"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":330,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":331,"author":{"gitId":"kwangthiag"},"content":"* 2a. The given ID is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":333,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":334,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":335,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":336,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":337,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"kwangthiag"},"content":"**Use case: List all patients**","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"kwangthiag"},"content":"1. User asks for a list of all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a list of all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR displays a message \"The list is empty\"","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"kwangthiag"},"content":"**Use case: Search a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"kwangthiag"},"content":"1. User searches for a name","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a list of patients which contain that name","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR displays a message \"No such user found\" ","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"kwangthiag"},"content":"**Use case: Update a patient\u0027s illness**","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"kwangthiag"},"content":"1. User uses the command to update the patient with that ID with the new illness","lastModifiedDate":"2023-10-04"},{"lineNumber":381,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":384,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":385,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":386,"author":{"gitId":"kwangthiag"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":388,"author":{"gitId":"kwangthiag"},"content":"* 2a. The given ID is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":389,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":390,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"kwangthiag"},"content":"**Use case: Ask For Help**","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"kwangthiag"},"content":"1. User asks for help","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a link to the help page","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"dinde2004"},"content":"4. Every operation should run in less than 100 milliseconds.","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"dinde2004"},"content":"5. The application should be able to scale horizontally and vertically to accommodate increasing data of user loads.","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"dinde2004"},"content":"6. The uptime percentage of the application should be greater than or equal 99.9%.","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"dinde2004"},"content":"7. The app should be able to handle unexpected input and edge cases, without making the app to crash or any data loss.","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"dinde2004"},"content":"8. The user interface should be friendly enough for users who are not tech-savvy.","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"dinde2004"},"content":"9. Testing should be implemented to avoid errors.","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"dinde2004"},"content":"10. The application does not require for internet connection to work properly.","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"dinde2004"},"content":"11. The size of the application in the hard disk should be no larger than 100MB, exclusive of the data.","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"licongshen12"},"content":"## Glossary","lastModifiedDate":"2023-10-06"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"licongshen12"},"content":"- **Mainstream OS**:","lastModifiedDate":"2023-10-06"},{"lineNumber":427,"author":{"gitId":"licongshen12"},"content":" - Refers to the most commonly used operating systems in the market, including Windows, Linux, Unix, and OS-X (MacOS).","lastModifiedDate":"2023-10-06"},{"lineNumber":428,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":429,"author":{"gitId":"licongshen12"},"content":"- **Private contact detail**:","lastModifiedDate":"2023-10-06"},{"lineNumber":430,"author":{"gitId":"licongshen12"},"content":" - A specific piece of information or data about a contact that isn\u0027t intended for public view or distribution.","lastModifiedDate":"2023-10-06"},{"lineNumber":431,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":432,"author":{"gitId":"licongshen12"},"content":"- **.puml files**:","lastModifiedDate":"2023-10-06"},{"lineNumber":433,"author":{"gitId":"licongshen12"},"content":" - Files used to define and create diagrams in the PlantUML format. These are typically used for illustrating software design or architecture.","lastModifiedDate":"2023-10-06"},{"lineNumber":434,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":435,"author":{"gitId":"licongshen12"},"content":"- **JavaFx UI framework**:","lastModifiedDate":"2023-10-06"},{"lineNumber":436,"author":{"gitId":"licongshen12"},"content":" - A Java library used for developing user interfaces. It provides functionalities for creating windows, dialogs, buttons, text fields, and other UI components.","lastModifiedDate":"2023-10-06"},{"lineNumber":437,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":438,"author":{"gitId":"licongshen12"},"content":"- **JSON**:","lastModifiedDate":"2023-10-06"},{"lineNumber":439,"author":{"gitId":"licongshen12"},"content":" - Stands for JavaScript Object Notation. It\u0027s a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate.","lastModifiedDate":"2023-10-06"},{"lineNumber":440,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":441,"author":{"gitId":"licongshen12"},"content":"- **MSS**:","lastModifiedDate":"2023-10-06"},{"lineNumber":442,"author":{"gitId":"licongshen12"},"content":" - Stands for Main Success Scenario. It describes the primary pathway of a use case that leads to a successful outcome.","lastModifiedDate":"2023-10-06"},{"lineNumber":443,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":444,"author":{"gitId":"licongshen12"},"content":"- **API**:","lastModifiedDate":"2023-10-06"},{"lineNumber":445,"author":{"gitId":"licongshen12"},"content":" - Stands for Application Programming Interface. It\u0027s a set of tools, definitions, and protocols for building and interacting with software and applications.","lastModifiedDate":"2023-10-06"},{"lineNumber":446,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":447,"author":{"gitId":"licongshen12"},"content":"- **AddressBook**:","lastModifiedDate":"2023-10-06"},{"lineNumber":448,"author":{"gitId":"licongshen12"},"content":" - In the context of the provided document, it refers to the core data structure or component in the application that keeps a record of contacts or persons.","lastModifiedDate":"2023-10-06"},{"lineNumber":449,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":450,"author":{"gitId":"licongshen12"},"content":"- **ObservableList**:","lastModifiedDate":"2023-10-06"},{"lineNumber":451,"author":{"gitId":"licongshen12"},"content":" - A list that allows listeners to track changes when they occur. Typically used in GUI applications to update the UI when underlying data changes.","lastModifiedDate":"2023-10-06"},{"lineNumber":452,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":453,"author":{"gitId":"licongshen12"},"content":"- **UI**:","lastModifiedDate":"2023-10-06"},{"lineNumber":454,"author":{"gitId":"licongshen12"},"content":" - Stands for User Interface. Refers to the space where interactions between humans and machines occur. The goal of this interaction is effective operation and control of the machine from the human end.","lastModifiedDate":"2023-10-06"},{"lineNumber":455,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":456,"author":{"gitId":"licongshen12"},"content":"- **Command**:","lastModifiedDate":"2023-10-06"},{"lineNumber":457,"author":{"gitId":"licongshen12"},"content":" - In the context of the provided document, it refers to a directive given by the user to perform certain operations or functions in the application.","lastModifiedDate":"2023-10-06"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":459,"author":{"gitId":"licongshen12"},"content":"- **PlantUML**:","lastModifiedDate":"2023-10-06"},{"lineNumber":460,"author":{"gitId":"licongshen12"},"content":" - A component that allows to quickly write diagrams in a plain text format, which it then processes to produce visual diagrams.","lastModifiedDate":"2023-10-06"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dinde2004":9,"kwangthiag":84,"billieboy7":3,"licongshen12":35,"-":364,"trgao":18}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"MediFlowR is a **desktop app for managing patient records and appointments, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, MediFlowR can get your patient management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"1. Download the latest `mediflowr.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your patient records.","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar mediflowr.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" * `list` : Lists all patients.","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" * `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever` : Adds a patient named `John` to the records.","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" * `delete id\u003d3` : Deletes the patient with id 3 in the current list.","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" * `clear` : Deletes all patients.","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"* Words in between square brackets `[]` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" e.g. in `search name\u003d[name]`, `[name]` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" e.g. if the command specifies `name\u003d[name] birthdate\u003d[birthdate]`, `birthdate\u003d[birthdate] name\u003d[name]` is also acceptable.","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":"### Adding a new patient: `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":"Creates a new patient profile to be added to the patient records. ","lastModifiedDate":"2023-10-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":"Format: `add name\u003d[name] birthdate\u003d[birthdate] gender\u003d[gender]","lastModifiedDate":"2023-10-03"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"illness\u003d[illness]​`","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":"* `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":"* `add name\u003dCena birthdate\u003d30/12/1993 gender\u003dMale illness\u003dSchizophrenia`","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":"### Updating Patient Treatment History: `update`","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":"Updates a patient\u0027s treatment history with illness.","lastModifiedDate":"2023-10-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":"Format: `update id\u003d[patient-id] illness\u003d[illness]`","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":"* Updates the illness of the patient with id `patient-id`.","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":"* Existing illness will be changed to the `illness`.","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":"* `update id\u003d12345 illness\u003dFever` updates the illness of the patient with patient ID `12345` to `Fever`.","lastModifiedDate":"2023-10-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"kwangthiag"},"content":"### Locating patients by name: `search`","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"kwangthiag"},"content":"Finds patients whose names contain any of the given keywords.","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"kwangthiag"},"content":"Format: `search name\u003d[name]`","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"kwangthiag"},"content":"* The search is case-insensitive. e.g `tianrun` will match `Tianrun`","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"kwangthiag"},"content":"* The order of the keywords does not matter. e.g. `Lebron James` will match `James Lebron`","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"kwangthiag"},"content":"* Only full words will be matched e.g. `Curr` will not match `Curry`","lastModifiedDate":"2023-10-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"kwangthiag"},"content":" e.g. `Chris Paul` will return `Chris Bumstead`, `Logan Paul`","lastModifiedDate":"2023-10-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"kwangthiag"},"content":"* `search name\u003dJames` returns `james` and `James Harden`","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"kwangthiag"},"content":"* `search name\u003dalex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"dinde2004"},"content":"Deletes the specified patient from the patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"dinde2004"},"content":"Format: `delete id\u003d[patient-id]`","lastModifiedDate":"2023-10-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"dinde2004"},"content":"* Deletes the patient with the specified `patient-id`.","lastModifiedDate":"2023-10-03"},{"lineNumber":124,"author":{"gitId":"dinde2004"},"content":"* The patient id refers to the id of the patient shown in the displayed patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":125,"author":{"gitId":"dinde2004"},"content":"* The patient id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"dinde2004"},"content":"`delete id\u003d12345` deletes the patient with id **12345** in the patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":"### Clearing all patient records : `clear`","lastModifiedDate":"2023-10-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":"Clears all patient records from the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":"MediFlowR data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":"MediFlowR data are saved automatically as a JSON file `[JAR file location]/data/mediflowr.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"trgao"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MediFlowR home folder.","lastModifiedDate":"2023-10-03"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":"**Add** | `add name\u003d[name] birthdate\u003d[birthdate] gender\u003d[gender] illness\u003d[illness]` \u003cbr\u003e e.g., `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":"**Delete** | `delete id\u003d[patient-id]`\u003cbr\u003e e.g., `delete id\u003d3`","lastModifiedDate":"2023-10-03"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":"**Update** | `update id\u003d[patient-id] illness\u003d[illness]`\u003cbr\u003e e.g.,`update id\u003d12345 illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":"**Search** | `search name\u003d[name]`\u003cbr\u003e e.g., `search name\u003dJames Jake`","lastModifiedDate":"2023-10-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dinde2004":6,"kwangthiag":9,"billieboy7":8,"licongshen12":6,"-":134,"trgao":20}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"trgao"},"content":" content: \"MediFlowR\";","lastModifiedDate":"2023-10-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"-":294,"trgao":1}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"title: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T08-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-T08-4/tp/graph/badge.svg?token\u003dW34CGP58OU)](https://codecov.io/gh/AY2324S1-CS2103T-T08-4/tp)","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"**MediFlowR is a desktop app for managing patient records and appointments, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* If you are interested in using MediFlowR, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start).","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.md) is a good place to start.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":13,"trgao":7}},{"path":"docs/team/billieboy7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"title: Stalin Muthukumar Bill Kirankumar\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"* **New Feature**: ","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"* **New Feature**: ","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dbillieboy7\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" * Added documentation for the features `add` [\\#28](https://github.com/AY2324S1-CS2103T-T08-4/tp/pull/28)","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * Ideated and updated the target user and value proposition","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"billieboy7":30}},{"path":"docs/team/dinde2004.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"title: Doan Quoc Thinh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"* **New Feature**: coming soon!","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" * What it does:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" * Justification:","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" * Highlights:","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" * Credits:","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003ddinde2004\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":" * Added documentation for the features `delete` [\\#21]()","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"dinde2004":30,"trgao":1}},{"path":"docs/team/kwangthiag.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"title: Kwang Thiag\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"kwangthiag"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dkwangthiag\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"kwangthiag"},"content":" * Added documentation for the feature `search` [\\#24]()","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"kwangthiag"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":" * Drew Mockups for CRUD","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"kwangthiag":27,"trgao":4}},{"path":"docs/team/licongshen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"title: Shen Licong\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dlicongshen12\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":" * Added documentation for the features `update` [\\#32](https://github.com/AY2324S1-CS2103T-T08-4/tp/pull/32)","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"licongshen12":26,"trgao":4}},{"path":"docs/team/trgao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"title: Gao Tianrun\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dtrgao\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Added documentations for user guide","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"trgao":31}},{"path":"src/main/java/seedu/address/commons/util/DateUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":" * Helper functions for handling datetimes.","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"public class DateUtil {","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" * Formats date and time inputs as: yyyy-MM-dd hh:mm (eg. 2020-02-20 08:00).","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" private static final DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" * Parses a {@code String dateTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" public static LocalDateTime parseDateTime(String dateAndTime) {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" String trimmedDateTime \u003d dateAndTime.trim();","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" localDateTime \u003d LocalDateTime.parse(trimmedDateTime, dateTimeFormat);","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" return localDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" * Returns a formatted {@code String dateTime} from a {@code LocalDateTime}.","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static String dateTimeToString(LocalDateTime dateAndTime) {","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" return dateAndTime.format(dateTimeFormat);","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"trgao":37}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"licongshen12"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the filtered list of appointments","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"licongshen12":4,"-":49,"trgao":6}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" return model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":88,"trgao":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Messages for person class.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d patients listed!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" * Messages for appointment class.","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX \u003d \"The appointment index provided is\"","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" + \"invalid\";","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_PATIENT_DOES_NOT_EXIST \u003d \"Patient provided does not exist\";","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_START_AND_END_TIMES \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" \"Your start time is either before or on the same time as the end \"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + \"time. Start time should be before end time\";","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_TIMESLOT \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" \"Please choose another timing for the appointment, there \"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" + \"already exists another appointment in this timing that clashes with the requested appointment\";","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" \"This appointment has already been created and we have taken note!\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" .append(\"; Gender: \")","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" .append(person.getGender())","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .append(\"; Birthdate: \")","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" .append(person.getBirthdate())","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" .append(\"; Illness: \");","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"dinde2004"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":" * Formats the {@code appointment} for display to the user.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"dinde2004"},"content":" public static String format(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"dinde2004"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" builder.append(\"Patient: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"dinde2004"},"content":" .append(appointment.getPatientName())","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" .append(\"; Start: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" .append(dateTimeToString(appointment.getStartTime()))","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" .append(\"; End: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" .append(dateTimeToString(appointment.getEndTime()))","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" .append(\"; Description: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" .append(appointment.getAppointmentDescription());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"dinde2004"},"content":" return builder.toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dinde2004":9,"-":48,"trgao":34}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Patient records has been cleared!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":22,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" /** Whether the command can be changed later on */","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" private final boolean isChangeable;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" * Overloaded constructor for {@code CommandResult} for commands that can be changed later on","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * @param feedbackToUser","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" * @param showHelp","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" * @param exit","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" * @param isChangeable","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean isChangeable) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" this.isChangeable \u003d isChangeable;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" this.isChangeable \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"billieboy7":18,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/AppointmentsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_APPOINTMENTS;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" * Lists all appointments in the address book to the user.","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"public class AppointmentsCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" public static final String COMMAND_WORD \u003d \"appointments\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all appointments\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" model.updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":23,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/CancelCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" * Cancels an appointment identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":"public class CancelCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" public static final String COMMAND_WORD \u003d \"cancel\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" + \": Cancel the appointment with the corresponding appointment id.\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 3\";","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_CANCEL_APPOINTMENT_SUCCESS \u003d \"Cancelled Appointment: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":" public CancelCommand(Index targetIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"dinde2004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"dinde2004"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"dinde2004"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"dinde2004"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"dinde2004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"dinde2004"},"content":" Appointment appointmentToCancel \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"dinde2004"},"content":" model.deleteAppointment(appointmentToCancel);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"dinde2004"},"content":" return new CommandResult(String.format(MESSAGE_CANCEL_APPOINTMENT_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"dinde2004"},"content":" Messages.format(appointmentToCancel)));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"dinde2004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"dinde2004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"dinde2004"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"dinde2004"},"content":" if (!(other instanceof CancelCommand)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"dinde2004"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"dinde2004"},"content":" CancelCommand otherCancelCommand \u003d (CancelCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"dinde2004"},"content":" return targetIndex.equals(otherCancelCommand.targetIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":60,"trgao":2}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/RescheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_APPOINTMENTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":" * Reschedules an existing appointment","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"kwangthiag"},"content":"public class RescheduleCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"kwangthiag"},"content":" public static final String COMMAND_WORD \u003d \"reschedule\";","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reschedules the appointment identified \"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":" + \"by the index number used in the displayed appointment list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer) \"","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"START \"","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"END\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"2023/05/02 09:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"2023/05/02 11:00 \";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Patient appointment rescheduled: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_NO_APPOINTMENT_FOUND \u003d \"No such appointment exists in the records\";","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d \"This appointment already exists in the records\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"kwangthiag"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"kwangthiag"},"content":" private final AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" * Creates a RescheduleCommand to change the appointment time","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * for the specified {@code Appointment}","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" * @param index of the appointment in the filtered appointment list to edit","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" * @param appointmentTime new appointment time","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"kwangthiag"},"content":" public RescheduleCommand(Index index, AppointmentTime appointmentTime) {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"kwangthiag"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"kwangthiag"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"kwangthiag"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"kwangthiag"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"kwangthiag"},"content":" throw new CommandException(MESSAGE_NO_APPOINTMENT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"kwangthiag"},"content":" Appointment appointmentToReschedule \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d createRescheduledAppointment(appointmentToReschedule, appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" // Clash in appointment slot","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidTimeSlot(lastShownList, rescheduledAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_TIMESLOT);","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" // Appointment already exists","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" if (model.hasAppointment(rescheduledAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"kwangthiag"},"content":" model.setAppointment(appointmentToReschedule, rescheduledAppointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"kwangthiag"},"content":" model.updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_SUCCESS, Messages.format(rescheduledAppointment)), false, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"kwangthiag"},"content":" private static Appointment createRescheduledAppointment(Appointment appointmentToReschedule,","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime newTime) {","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"kwangthiag"},"content":" assert appointmentToReschedule !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"kwangthiag"},"content":" Person patient \u003d appointmentToReschedule.getPerson();","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" AppointmentDescription description \u003d appointmentToReschedule.getAppointmentDescription();","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" return new Appointment(patient, newTime, description);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"kwangthiag"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"kwangthiag"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"kwangthiag"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"kwangthiag"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"kwangthiag"},"content":" if (!(other instanceof RescheduleCommand)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"kwangthiag"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand e \u003d (RescheduleCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"kwangthiag"},"content":" return index.equals(e.index);","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"kwangthiag"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"kwangthiag"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"kwangthiag"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"kwangthiag"},"content":" .add(\"appointmentTime\", appointmentTime)","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"kwangthiag"},"content":" .toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"kwangthiag"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"kwangthiag":91,"trgao":26}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_DESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_PATIENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules an appointment.\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_PATIENT + \"PATIENT \"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_START + \"START \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_END + \"END \"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_DESCRIPTION + \"DESCRIPTION\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_PATIENT + \"Alex Yeoh \"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"2023/10/20 12:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"2023/10/20 13:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_DESCRIPTION + \"Follow up on Chest X-Ray \";","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New appointment scheduled: %1$s.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" private final Appointment currAppointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" private final Name patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" * Creates a ScheduleCommand to add the specified {@code Appointment}","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" public ScheduleCommand(Appointment appointment, Name patientName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" // Check that appointment is non-null.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" // Save the appointment to currAppointment during initialisation.","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" this.currAppointment \u003d appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" List\u003cPerson\u003e latestPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" if (!model.hasPerson(patientName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_PATIENT_DOES_NOT_EXIST);","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" Person personToAdd \u003d latestPersonList","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" .stream().filter(person -\u003e person.getName().equals(patientName)).collect(Collectors.toList()).get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" // Add the Person patient to the current appointment","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" currAppointment.setPatient(personToAdd);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" // Clash in appointment slot","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidTimeSlot(lastShownList, currAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_TIMESLOT);","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":" // Appointment already exists","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" if (model.hasAppointment(currAppointment)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":" model.addAppointment(currAppointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_SUCCESS, Messages.format(currAppointment)), false, false, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"billieboy7"},"content":" // Check if the given object is the same object.","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"billieboy7"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"billieboy7"},"content":" // if Object other is of type AddAppointmentCommand, cast it to type AddAppointmentCommand and compare the","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"billieboy7"},"content":" // containing","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"billieboy7"},"content":" // currAppointment","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" if (other instanceof ScheduleCommand) {","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" ScheduleCommand otherAppointment \u003d (ScheduleCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" return currAppointment.equals(otherAppointment.currAppointment)","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" \u0026\u0026 patientName.equals(otherAppointment.patientName);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" .add(\"toAdd\", currAppointment)","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" .toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":80,"trgao":37}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the records. \"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" + PREFIX_GENDER + \"GENDER \"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" + PREFIX_BIRTHDATE + \"BIRTHDATE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_TAG + \"ILLNESS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" + PREFIX_GENDER + \"MALE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" + PREFIX_BIRTHDATE + \"2000/10/20 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" + PREFIX_TAG + \"Fever\";","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the records\";","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":77,"trgao":11}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" + \": Deletes the patient with the corresponding patient id.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 2\";","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":64,"trgao":4}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reschedules the appointment of the patient identified \"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer) \"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_BIRTHDATE + \"BIRTHDATE] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_TAG + \"ILLNESS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" + \" 1 \"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the records.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" Gender updatedGender \u003d editPersonDescriptor.getGender().orElse(personToEdit.getGender());","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" Birthdate updatedBirthdate \u003d editPersonDescriptor.getBirthdate().orElse(personToEdit.getBirthdate());","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" return new Person(updatedName, updatedGender, updatedBirthdate, updatedPhone, updatedEmail,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" updatedAddress, updatedTags);","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" private Birthdate birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" private Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" setBirthdate(toCopy.birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"trgao"},"content":" setGender(toCopy.gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, birthdate, gender, address, tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"trgao"},"content":" public void setBirthdate(Birthdate birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"trgao"},"content":" public Optional\u003cBirthdate\u003e getBirthdate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"trgao"},"content":" return Optional.ofNullable(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":210,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":211,"author":{"gitId":"trgao"},"content":" public void setGender(Gender gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":212,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":214,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":215,"author":{"gitId":"trgao"},"content":" public Optional\u003cGender\u003e getGender() {","lastModifiedDate":"2023-10-12"},{"lineNumber":216,"author":{"gitId":"trgao"},"content":" return Optional.ofNullable(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":217,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":220,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"trgao"},"content":" \u0026\u0026 Objects.equals(gender, otherEditPersonDescriptor.gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"trgao"},"content":" \u0026\u0026 Objects.equals(birthdate, otherEditPersonDescriptor.birthdate)","lastModifiedDate":"2023-10-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"trgao"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"trgao"},"content":" .add(\"birthdate\", birthdate)","lastModifiedDate":"2023-10-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kwangthiag":1,"licongshen12":3,"-":232,"trgao":42}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all patients whose names contain any of \"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"licongshen12":3,"-":56,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":22,"trgao":1}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.AppointmentsCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.CancelCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.RescheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.ScheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.appointmentparser.CancelCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.appointmentparser.RescheduleCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.appointmentparser.ScheduleCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.AddCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.DeleteCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.EditCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.FindCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":93,"author":{"gitId":"dinde2004"},"content":" case CancelCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"dinde2004"},"content":" return new CancelCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" case AppointmentsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" return new AppointmentsCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"dinde2004"},"content":" case RescheduleCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"dinde2004"},"content":" return new RescheduleCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dinde2004":12,"licongshen12":5,"-":80,"trgao":11}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the arguments.","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" public boolean arePrefixesPresent(Prefix... prefixes) {","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e getValue(prefix).isPresent());","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":78,"trgao":7}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":" /* Person prefix definitions */","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_GENDER \u003d new Prefix(\"gender\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_BIRTHDATE \u003d new Prefix(\"birthdate\u003d\");","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"illness\u003d\");","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" /* Appointment prefix definitions */","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_START \u003d new Prefix(\"start\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_END \u003d new Prefix(\"end\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_DESCRIPTION \u003d new Prefix(\"description\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_PATIENT \u003d new Prefix(\"patient\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"billieboy7":4,"-":9,"trgao":9}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" requireNonNull(oneBasedIndex);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" * Parses a {@code String birthdate} into a {@code Birthdate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code birthdate} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" public static Birthdate parseBirthdate(String birthdate) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" requireNonNull(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" String trimmedBirthdate \u003d birthdate.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" if (!Birthdate.isValidBirthdate(trimmedBirthdate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" throw new ParseException(Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" return new Birthdate(trimmedBirthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" * Parses a {@code String gender} into a {@code Gender}.","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code gender} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" public static Gender parseGender(String gender) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" requireNonNull(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" String trimmedGender \u003d gender.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" if (!Gender.isValidGender(trimmedGender)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" throw new ParseException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" return new Gender(trimmedGender);","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"billieboy7"},"content":" * Parses a {@code String dateAndTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"billieboy7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"billieboy7"},"content":" * @throws ParseException if the given {@code dateAndTime} is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"billieboy7"},"content":" public static LocalDateTime parseDateTime(String dateAndTime) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"billieboy7"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"billieboy7"},"content":" String trimmedDateTime \u003d dateAndTime.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"billieboy7"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"billieboy7"},"content":" localDateTime \u003d LocalDateTime.parse(trimmedDateTime, dateTimeFormat);","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"billieboy7"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"billieboy7"},"content":" return localDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"billieboy7"},"content":" * Parses a {@code String description} into a {@code AppointmentDescription}.","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"billieboy7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"billieboy7"},"content":" public static AppointmentDescription parseDescription(String description) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"billieboy7"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"billieboy7"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"billieboy7"},"content":" if (!AppointmentDescription.isValidAppointmentDescription(trimmedDescription)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"billieboy7"},"content":" return new AppointmentDescription(trimmedDescription);","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"billieboy7":38,"-":124,"trgao":35}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/CancelCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.CancelCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" * Parses input arguments and creates a new CancelCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":"public class CancelCommandParser implements Parser\u003cCancelCommand\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" * Parses the given {@code String} of arguments in the context of the CancelCommand","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" * and returns a CancelCommand object for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" public CancelCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":" return new CancelCommand(index);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CancelCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":25,"trgao":6}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/RescheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.appointmentcommands.RescheduleCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" * Parses input arguments and creates a new RescheduleCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"public class RescheduleCommandParser implements Parser\u003cRescheduleCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Parses the given {@code String} of arguments in the context of the RescheduleCommand","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" * and returns a RescheduleCommand object for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":" public RescheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"kwangthiag"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"kwangthiag"},"content":" Index index;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, RescheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END)","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, RescheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" LocalDateTime startTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_START).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" LocalDateTime endTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_END).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" appointmentTime \u003d new AppointmentTime(startTime, endTime);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":" return new RescheduleCommand(index, appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"kwangthiag"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"kwangthiag":39,"trgao":24}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_DESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_PATIENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.ScheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" * @param args","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION)","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" LocalDateTime startTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_START).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" LocalDateTime endTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_END).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" AppointmentDescription appointmentDescription \u003d ParserUtil.parseDescription(argMultimap","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" .getValue(PREFIX_APPOINTMENT_DESCRIPTION).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d new AppointmentTime(startTime, endTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" Name patient \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_APPOINTMENT_PATIENT).get());","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" Appointment appointment \u003d new Appointment(patient, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" return new ScheduleCommand(appointment, patient);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":69,"trgao":9}},{"path":"src/main/java/seedu/address/logic/parser/personparser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_ADDRESS,","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" Gender gender \u003d ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" Birthdate birthdate \u003d ParserUtil.parseBirthdate(argMultimap.getValue(PREFIX_BIRTHDATE).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" Person person \u003d new Person(name, gender, birthdate, phone, email, address, tagList);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"licongshen12":1,"-":46,"trgao":18}},{"path":"src/main/java/seedu/address/logic/parser/personparser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":1,"-":27,"trgao":3}},{"path":"src/main/java/seedu/address/logic/parser/personparser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDATE).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" editPersonDescriptor.setBirthdate(ParserUtil.parseBirthdate(argMultimap.getValue(PREFIX_BIRTHDATE).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" if (argMultimap.getValue(PREFIX_GENDER).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" editPersonDescriptor.setGender(ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":2,"-":80,"trgao":17}},{"path":"src/main/java/seedu/address/logic/parser/personparser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":1,"-":31,"trgao":2}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.UniqueAppointmentList;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" private final UniqueAppointmentList appointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" appointments \u003d new UniqueAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" * Creates an AddressBook using the Persons and Appointments in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" * Replaces the contents of the person list with {@code appointments}.","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" this.appointments.setAppointments(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" setAppointments(newData.getAppointmentList());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" * Returns true if a person with the same name as {@code name} exists in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" return persons.contains(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" //// appointment-level operations","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" return appointments.contains(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" * The appointment must not already exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment a) {","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" appointments.add(a);","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":" * Replaces the given appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"trgao"},"content":" * another existing appointment in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" requireNonNull(editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" appointments.setAppointment(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" public void removeAppointment(Appointment key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":" appointments.remove(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"trgao"},"content":" .add(\"appointments\", appointments)","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" return appointments.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointments.equals(otherAddressBook.appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" return Objects.hash(persons, appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":127,"trgao":71}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" Predicate\u003cAppointment\u003e PREDICATE_SHOW_ALL_APPOINTMENTS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" * Returns true if a person with the same name as {@code person} exists in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" boolean hasPerson(Name name);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" boolean hasAppointment(Appointment appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" * Deletes the given appointment.","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" * The appointment must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" void deleteAppointment(Appointment target);","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" * Adds the given appointment.","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" * {@code appointment} must not already exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" * Replaces the given appointment {@code target} with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as another existing","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" * appointment in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" void setAppointment(Appointment target, Appointment editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" /** Returns an unmodifiable view of the filtered appointment list */","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" * Updates the filter of the filtered appointment list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"billieboy7":3,"-":87,"trgao":41}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private final FilteredList\u003cAppointment\u003e filteredAppointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" filteredAppointments \u003d new FilteredList\u003c\u003e(this.addressBook.getAppointmentList());","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Person \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" return addressBook.hasPerson(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Appointment \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" return addressBook.hasAppointment(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":" addressBook.removeAppointment(target);","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"trgao"},"content":" addressBook.addAppointment(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"billieboy7"},"content":" updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"trgao"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" addressBook.setAppointment(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Appointment List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the list of {@code Appointment} backed by the internal list of","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":" return filteredAppointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":" filteredAppointments.setPredicate(predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"trgao"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"trgao"},"content":" \u0026\u0026 filteredAppointments.equals(otherModelManager.filteredAppointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"billieboy7":1,"-":147,"trgao":56}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the appointments list.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" * This list will not contain any duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":17,"trgao":7}},{"path":"src/main/java/seedu/address/model/appointment/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" * Represents an Appointment in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":" * Guarantees: details are present and not null, field values are validated.","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"public class Appointment {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" private final AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" private final AppointmentDescription appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" private final Name patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":" private Person patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" * Constructs an {@code Appointment}.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * @param patientName The name of the patient associated with the appointment.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" * @param appointmentTime The scheduled time for the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" * @param appointmentDescription The description for the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" public Appointment(","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" Name patientName, AppointmentTime appointmentTime, AppointmentDescription appointmentDescription) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" requireAllNonNull(patientName, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":" this.patient \u003d null;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" this.appointmentDescription \u003d appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" * Constructs an {@code Appointment}.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" * @param patient The patient associated with the appointment.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" * @param appointmentTime The scheduled time for the appointment.","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" * @param appointmentDescription The description for the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public Appointment(Person patient, AppointmentTime appointmentTime, AppointmentDescription appointmentDescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" requireAllNonNull(appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patient.getName();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" this.appointmentDescription \u003d appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" * Used in the AddAppointmentCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" * @param patient The patient associated with the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" public void setPatient(Person patient) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public Name getPatientName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" return this.patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"licongshen12"},"content":" public AppointmentTime getAppointmentTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"licongshen12"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime.getStart();","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"licongshen12"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime.getEnd();","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" public AppointmentDescription getAppointmentDescription() {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" return this.appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"licongshen12"},"content":" public Person getPerson() {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"licongshen12"},"content":" return this.patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" * Returns true if both appointments have the same time.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"kwangthiag"},"content":" * This defines a weaker notion of equality between two appointments.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"kwangthiag"},"content":" public boolean isSameAppointment(Appointment otherAppointment) {","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"kwangthiag"},"content":" if (otherAppointment \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"kwangthiag"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"kwangthiag"},"content":" return otherAppointment !\u003d null","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"kwangthiag"},"content":" \u0026\u0026 otherAppointment.getAppointmentTime().equals(getAppointmentTime());","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" if (!(other instanceof Appointment)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" Appointment otherAppointment \u003d (Appointment) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" return patient.equals(otherAppointment.patient)","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointmentTime.equals(otherAppointment.appointmentTime)","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointmentDescription.equals(otherAppointment.appointmentDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" return Objects.hash(patient, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" .add(\"patient\", patient)","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" .add(\"appointmentTime\", appointmentTime)","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" .add(\"description\", appointmentDescription)","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"kwangthiag":11,"billieboy7":8,"licongshen12":44,"trgao":65}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":" * Represents an Appointment\u0027s description in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentDescription(String)}","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"public class AppointmentDescription {","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" \"Description should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" * Constructor method","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" * @param description description to be included in the appointment","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public AppointmentDescription(String description) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" this.value \u003d description;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * Checks for validity of characters in appointment description","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" * @param appointmentDescription string text by user input","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" * @return whether the string only contains alphanumeric characters, numbers and hyphens","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" public static boolean isValidAppointmentDescription(String appointmentDescription) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" return appointmentDescription.matches(\"^[a-zA-Z0-9 -]+$\");","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" // if this and the other are the same object","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" if (other instanceof AppointmentDescription) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" AppointmentDescription otherAppointmentDescription \u003d (AppointmentDescription) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (this.value.equals(otherAppointmentDescription.value)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" return this.value.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" return this.value;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":50,"trgao":9}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" * Represents the time slot for an appointment in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentTime(LocalDateTime, LocalDateTime)}","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"public class AppointmentTime {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":" \"1. AppointmentTime start must be before AppointmentTime end.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" + \"2. AppointmentTime must also not overlap with an existing Appointment\u0027s time.\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" + \"* Note: Date indicated must be YYYY/MM/DD\"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":" + \"(i.e. 2th Jan 2020 must be input as 02/01/2021 instead of 2020-01-01).\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" + \"* Note: Time indicated must be XX:XX (i.e. 9AM must be input as 09:00 instead of 9:00).\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" + \"Eg: start\u003d13/10/2023 09:00 end\u003d13/10/2023 12:00\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":" // Data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" private final LocalDateTime start;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":" private final LocalDateTime end;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"licongshen12"},"content":" * Constructs an {@code AppointmentTime}.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":" * @param start Start time of the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"licongshen12"},"content":" * @param end End time of the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"licongshen12"},"content":" public AppointmentTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"licongshen12"},"content":" checkArgument(isValidAppointmentTime(start, end), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"licongshen12"},"content":" this.start \u003d start;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"licongshen12"},"content":" this.end \u003d end;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public LocalDateTime getStart() {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return start;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" public LocalDateTime getEnd() {","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" return end;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"licongshen12"},"content":" * Returns true if a given start and end time form a valid appointment time.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"licongshen12"},"content":" public static boolean isValidAppointmentTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"licongshen12"},"content":" requireAllNonNull(start, end);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" return !start.isAfter(end) \u0026\u0026 !start.isEqual(end);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"licongshen12"},"content":" * Returns true if the provided appointment does not overlap with any appointment in the appointment list.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"licongshen12"},"content":" * @param appointmentList Current list of appointments to check against.","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"licongshen12"},"content":" * @param appointment The appointment to check.","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"licongshen12"},"content":" * @return True if the appointment is valid, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" public static Boolean isValidTimeSlot(List\u003cAppointment\u003e appointmentList, Appointment appointment) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" LocalDateTime start \u003d appointment.getStartTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" LocalDateTime end \u003d appointment.getEndTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"licongshen12"},"content":" for (Appointment currentAppointment : appointmentList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" LocalDateTime currentStart \u003d currentAppointment.getStartTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" LocalDateTime currentEnd \u003d currentAppointment.getEndTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" if (start.isEqual(currentStart) || end.isEqual(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" || start.isAfter(currentStart) \u0026\u0026 start.isBefore(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" || end.isAfter(currentStart) \u0026\u0026 end.isBefore(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" || start.isBefore(currentStart) \u0026\u0026 end.isAfter(currentEnd)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"licongshen12"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"licongshen12"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"licongshen12"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":" || (other instanceof AppointmentTime // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 getStart().isEqual(((AppointmentTime) other).getStart()) // check same data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 getEnd().isEqual(((AppointmentTime) other).getEnd()));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":" return Objects.hash(start, end);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"licongshen12"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" return \"START: \" + dateTimeToString(start) + \"\\nEND: \" + dateTimeToString(end);","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":74,"trgao":28}},{"path":"src/main/java/seedu/address/model/appointment/UniqueAppointmentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.exceptions.AppointmentNotFoundException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.exceptions.DuplicateAppointmentException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":" * A list of appointments that enforces uniqueness between its elements.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":" * The implementation ensures that there are no duplicate appointments","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":" * in the list. An appointment is considered unique based on its identity.","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"public class UniqueAppointmentList implements Iterable\u003cAppointment\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":" private ObservableList\u003cAppointment\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" private final ObservableList\u003cAppointment\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" * Returns true if the list contains an equivalent appointment as the given argument.","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" public boolean contains(Appointment toCheck) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" * The appointment must not already exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public void add(Appointment toAdd) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" * Replaces the appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * another existing appointment in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" if (!target.equals(editedAppointment) \u0026\u0026 contains(editedAppointment)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" internalList.set(index, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" * Removes the equivalent appointment from the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" * The person must exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" public void remove(Appointment toRemove) {","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" public void setAppointments(UniqueAppointmentList replacement) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" * Replaces the contents of this list with {@code appointments}.","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" requireAllNonNull(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" if (!appointmentsAreUnique(appointments)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" internalList.setAll(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" public Iterator\u003cAppointment\u003e iterator() {","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"licongshen12"},"content":" * Returns true if both lists have the same appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"licongshen12"},"content":" * @param other The object to be compared with.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"licongshen12"},"content":" * @return true if both lists have the same appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"licongshen12"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"licongshen12"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"licongshen12"},"content":" || (other instanceof UniqueAppointmentList // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 internalList.equals(((UniqueAppointmentList) other).internalList));","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"licongshen12"},"content":" * Returns the hash code value for this list.","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"licongshen12"},"content":" * @return the hash code value for this list.","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"licongshen12"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" * Returns true if {@code appointments} contains only unique appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" private boolean appointmentsAreUnique(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":" for (int i \u003d 0; i \u003c appointments.size() - 1; i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":" for (int j \u003d i + 1; j \u003c appointments.size(); j++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"trgao"},"content":" if (appointments.get(i).equals(appointments.get(j))) {","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":37,"trgao":111}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":" * Signals that the operation is unable to find the specified appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"public class AppointmentNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":8}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":" * Signals that the operation would result in duplicate Appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":" * Duplicate Appointments are considered appointments that have the same identity.","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"public class DuplicateAppointmentException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"licongshen12"},"content":" * Constructs a new {@code DuplicateAppointmentException} with the default detail message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":" public DuplicateAppointmentException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":" super(\"Operation results in duplicate appointments\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":14}},{"path":"src/main/java/seedu/address/model/person/Birthdate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" * Represents a Person\u0027s birthdate in the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidBirthdate(String)}","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"public class Birthdate {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Birthdates should be of the form YYYY/MM/DD\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" public static final DateTimeFormatter FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * Constructs an {@code Birthdate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * @param birthdate A valid birthdate.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public Birthdate(String birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" requireNonNull(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" value \u003d birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Returns if a given string is a valid birthdate.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static boolean isValidBirthdate(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" LocalDate.parse(test, FORMAT);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return value;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" || (other instanceof Birthdate // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" \u0026\u0026 value.equals(((Birthdate) other).value)); // state check","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"trgao":58}},{"path":"src/main/java/seedu/address/model/person/Gender.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"public class Gender {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Gender should be either MALE or FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" * The first character of the birthdate must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" public static final String VALIDATION_REGEX \u003d \"MALE|FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * Constructs a {@code Gender}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * @param gender A valid gender.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public Gender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" requireNonNull(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" value \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Returns if a given string is a valid gender.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static boolean isValidGender(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" return value;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" || (other instanceof Gender // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" \u0026\u0026 value.equals(((Gender) other).value)); // state check","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"trgao":53}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" private final Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" private final Birthdate birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public Person(Name name, Gender gender, Birthdate birthdate, Phone phone, Email email,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" public Gender getGender() {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" return gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" public Birthdate getBirthdate() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" return birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" \u0026\u0026 gender.equals(otherPerson.gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" \u0026\u0026 birthdate.equals(otherPerson.birthdate)","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" return Objects.hash(name, gender, birthdate, phone, email, address, tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" .add(\"birthdate\", birthdate)","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":115,"trgao":19}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" * Returns true if the list contains a person with the same name as the given argument.","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" public boolean contains(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return internalList.stream().anyMatch(person -\u003e person.getName().equals(name));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":150,"trgao":8}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Represents an Illness Tag in the records.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Illness names should be alphanumeric\";","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":60,"trgao":2}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Alex Yeoh\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" getTagSet(\"fever\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Bernice Yu\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" getTagSet(\"flu\", \"cough\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Gender(\"FEMALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" getTagSet(\"covid\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"David Li\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" getTagSet(\"bronchitis\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" getTagSet(\"asthma\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" getTagSet(\"cancer\"))","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"-":48,"trgao":20}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_DOES_NOT_EXIST;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * Jackson-friendly version of {@link Appointment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"class JsonAdaptedAppointment {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final String patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" private final String start;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private final String end;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private final String description;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" * Constructs a {@code JsonAdaptedAppointment} with the given appointment details.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" public JsonAdaptedAppointment(@JsonProperty(\"patientName\") String patientName,","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"start\") String start,","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"end\") String end,","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"description\") String description) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" this.start \u003d start;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * Converts a given {@code Appointment} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" public JsonAdaptedAppointment(Appointment source) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" patientName \u003d String.valueOf(source.getPatientName());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" start \u003d dateTimeToString(source.getStartTime());","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" end \u003d dateTimeToString(source.getEndTime());","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" description \u003d source.getAppointmentDescription().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" * Converts this Jackson-friendly adapted appointment object into the model\u0027s {@code Appointment} object.","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" public Appointment toModelType(AddressBook addressBook) throws IllegalValueException {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" if (patientName \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" if (!Name.isValidName(patientName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" if (!addressBook.hasPerson(new Name(patientName))) {","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(MESSAGE_PATIENT_DOES_NOT_EXIST);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" final Person patient \u003d addressBook","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" .getPersonList().stream().filter(person -\u003e person.getName().fullName.equals(patientName))","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" .collect(Collectors.toList()).get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" if (start \u003d\u003d null || end \u003d\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentTime.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" startDateTime \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" endDateTime \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidAppointmentTime(startDateTime, endDateTime)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" final AppointmentTime modelAppointmentTime \u003d new AppointmentTime(startDateTime, endDateTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" if (!AppointmentDescription.isValidAppointmentDescription(description)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" final AppointmentDescription modelAppointmentDescription \u003d new AppointmentDescription(description);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" return new Appointment(","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" patient, modelAppointmentTime, modelAppointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"trgao":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private final String birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private final String gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"gender\") String gender,","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"birthdate\") String birthdate, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" gender \u003d source.getGender().value;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" birthdate \u003d source.getBirthdate().value;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" if (gender \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" if (!Gender.isValidGender(gender)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" final Gender modelGender \u003d new Gender(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" if (birthdate \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthdate.class.getSimpleName()));","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" if (!Birthdate.isValidBirthdate(birthdate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" final Birthdate modelBirthdate \u003d new Birthdate(birthdate);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" return new Person(modelName, modelGender, modelBirthdate, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":106,"trgao":29}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d \"Appointments list contains duplicate appointment(s).\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final List\u003cJsonAdaptedAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons and appointments.","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"appointments\") List\u003cJsonAdaptedAppointment\u003e appointments) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" this.appointments.addAll(appointments);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" appointments.addAll(","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" source.getAppointmentList().stream().map(JsonAdaptedAppointment::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" for (JsonAdaptedAppointment jsonAdaptedAppointment : appointments) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" Appointment appointment \u003d jsonAdaptedAppointment.toModelType(addressBook);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" if (addressBook.hasAppointment(appointment)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" addressBook.addAppointment(appointment);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":58,"trgao":18}},{"path":"src/main/java/seedu/address/ui/AppointmentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"public class AppointmentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" private static final String FXML \u003d \"AppointmentListCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public final Appointment appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private Label patientName;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private Label appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private Label appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public AppointmentCard(Appointment appointment, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" patientName.setText(\"PATIENT: \" + appointment.getPatientName());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" appointmentTime.setText(appointment.getAppointmentTime().toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" appointmentDescription.setText(appointment.getAppointmentDescription().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":48}},{"path":"src/main/java/seedu/address/ui/AppointmentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"public class AppointmentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" private static final String FXML \u003d \"AppointmentListPanel.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AppointmentListPanel.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" private ListView\u003cAppointment\u003e appointmentListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" public AppointmentListPanel(ObservableList\u003cAppointment\u003e appointmentList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" appointmentListView.setItems(appointmentList);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" appointmentListView.setCellFactory(listView -\u003e new AppointmentListViewCell());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" class AppointmentListViewCell extends ListCell\u003cAppointment\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" protected void updateItem(Appointment appointment, boolean empty) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" super.updateItem(appointment, empty);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" if (empty || appointment \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" setText(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" setGraphic(new AppointmentCard(appointment, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":49}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t08-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":101,"trgao":1}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private AppointmentListPanel appointmentListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" private StackPane appointmentListPanelPlaceholder;","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" appointmentListPanel \u003d new AppointmentListPanel(logic.getFilteredAppointmentList());","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" appointmentListPanelPlaceholder.getChildren().add(appointmentListPanel.getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"trgao":7}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" private Label gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" private Label birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" private Label address;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" birthdate.setText(person.getBirthdate().value);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" gender.setText(person.getGender().toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":57,"trgao":8}},{"path":"src/main/resources/view/AppointmentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentDescription\" text\u003d\"\\$appointmentDescription\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"patientName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$patientName\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$appointmentTime\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":33}},{"path":"src/main/resources/view/AppointmentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" \u003cListView fx:id\u003d\"appointmentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":8}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":".header_label {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":" -fx-font-size: 25px;","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" -fx-text-fill: #FFFFFF;","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"-":352,"trgao":6}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" title\u003d\"MediFlowR\" minWidth\u003d\"700\" minHeight\u003d\"700\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" \u003cHBox minWidth\u003d\"700\" prefWidth\u003d\"700\" prefHeight\u003d\"10000\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"350\" prefWidth\u003d\"350\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"patientsLabel\" text\u003d\"Patients\" styleClass\u003d\"header_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" \u003cVBox fx:id\u003d\"appointmentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"350\" prefWidth\u003d\"350\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentsLabel\" text\u003d\"Appointments\" styleClass\u003d\"header_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" \u003cStackPane fx:id\u003d\"appointmentListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" minHeight\u003d\"150\" prefHeight\u003d\"150\" maxHeight\u003d\"150\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":51,"trgao":21}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"gender\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$gender\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"birthdate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$birthdate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"trgao":2}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"trgao"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + GENDER_DESC_AMY + BIRTHDATE_DESC_AMY","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"trgao"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"licongshen12":2,"-":171,"trgao":4}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" public static final String VALID_GENDER_AMY \u003d \"FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" public static final String VALID_GENDER_BOB \u003d \"MALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public static final String VALID_BIRTHDATE_AMY \u003d \"2001/10/20\";","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public static final String VALID_BIRTHDATE_BOB \u003d \"2002/10/21\";","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" public static final String VALID_TAG_FEVER \u003d \"fever\";","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public static final String VALID_TAG_FLU \u003d \"flu\";","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" public static final String GENDER_DESC_AMY \u003d \" \" + PREFIX_GENDER + VALID_GENDER_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public static final String GENDER_DESC_BOB \u003d \" \" + PREFIX_GENDER + VALID_GENDER_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" public static final String BIRTHDATE_DESC_AMY \u003d \" \" + PREFIX_BIRTHDATE + VALID_BIRTHDATE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" public static final String BIRTHDATE_DESC_BOB \u003d \" \" + PREFIX_BIRTHDATE + VALID_BIRTHDATE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" public static final String INVALID_GENDER_DESC \u003d \" \" + PREFIX_GENDER + \"TEST\"; // only MALE or FEMALE allowed","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" public static final String INVALID_BIRTHDATE_DESC \u003d \" \" + PREFIX_BIRTHDATE + \"10-20-2001\"; // only MM/DD/YYYY format","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER, VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"licongshen12":1,"-":122,"trgao":18}},{"path":"src/test/java/seedu/address/logic/commands/appointmentcommands/AppointmentCommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.time.DayOfWeek;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.time.temporal.TemporalAdjusters;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" * The AppointmentCommandTestUtil class provides utility constants for testing appointment-related commands.","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" * It includes various date and time strings, as well as a valid description for creating test data.","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"public class AppointmentCommandTestUtil {","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" public static final DateTimeFormatter DATE_TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" public static final DayOfWeek DAY_OF_WEEK \u003d LocalDateTime.now().getDayOfWeek();","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" // Current date and date 4 hours later","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public static final String CURRENT_DATE \u003d LocalDateTime.now().format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public static final String CURRENT_DATE_PLUS_FOUR_HOURS \u003d LocalDateTime.now().plusHours(4)","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" .format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" // Date next week and 4 hours after that","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" public static final String NEXT_WEEK_MONDAY \u003d DATE_TIME_FORMATTER.format(LocalDateTime.now()","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" .with(TemporalAdjusters.next(DayOfWeek.MONDAY))","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" .withHour(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" .withMinute(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" .withSecond(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" .withNano(0));","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_START_ONE \u003d \"2023/08/03 10:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_END_ONE \u003d \"2023/08/03 13:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_START_TWO \u003d \"2023/09/03 10:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_END_TWO \u003d \"2023/09/03 11:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_DESCRIPTION \u003d \"Follow Up Blood Test\";","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"billieboy7":42}},{"path":"src/test/java/seedu/address/logic/commands/appointmentcommands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_TWO;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_TWO;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"import seedu.address.testutil.AppointmentBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"licongshen12"},"content":" public void constructor_nullAppointment_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e new ScheduleCommand(null, null));","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" // public void execute_appointmentAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" // ModelStubAcceptingAppointmentAdded modelStub \u003d new ModelStubAcceptingAppointmentAdded();","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" // Appointment validAppointment \u003d new AppointmentBuilder().build();","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" // Name testName \u003d new Name(\"test\");","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" // CommandResult commandResult \u003d new ScheduleCommand(validAppointment, testName).execute(modelStub);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" // assertEquals(String.format(ScheduleCommand.MESSAGE_SUCCESS, validAppointment),","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" // commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" // assertEquals(Arrays.asList(validAppointment), modelStub.appointments);","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" Name testName1 \u003d new Name(\"Test Name1\");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" Name testName2 \u003d new Name(\"Test Name2\");","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" Appointment appointment1 \u003d new AppointmentBuilder().withAppointmentTime(VALID_START_ONE, VALID_END_ONE).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" Appointment appointment2 \u003d new AppointmentBuilder().withAppointmentTime(VALID_START_TWO, VALID_END_TWO).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommand1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommand2 \u003d new ScheduleCommand(appointment2, testName2);","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommandSameTimeDifferentName1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommandSameTimeDifferentName2 \u003d new ScheduleCommand(appointment1, testName2);","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" // compare with different type - false","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(\"Test\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" // null test - false","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" // compares same appointment timing but different names (Patients) - false","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommandSameTimeDifferentName1.equals(scheduleCommandSameTimeDifferentName2));","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" // compares AddCommand1 with itself - true","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" assertTrue(scheduleCommand1.equals(scheduleCommand1));","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" assertEquals(scheduleCommand2, scheduleCommand2);","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" // compares 2 different Schedule Commands - false","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(scheduleCommand2));","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" // compares 2 different objects with same details - true","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand copyOfScheduleCommand1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" assertTrue(scheduleCommand1.equals(copyOfScheduleCommand1));","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"licongshen12"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"licongshen12"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"licongshen12"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"licongshen12"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"licongshen12"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"licongshen12"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"licongshen12"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"licongshen12"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"licongshen12"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"licongshen12"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"licongshen12"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"licongshen12"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"licongshen12"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"licongshen12"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"licongshen12"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"licongshen12"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"licongshen12"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"licongshen12"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"licongshen12"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":196,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":197,"author":{"gitId":"licongshen12"},"content":" * A Model stub that always accepts the appointment being added.","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"licongshen12"},"content":" private class ModelStubAcceptingAppointmentAdded extends ModelStub {","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"licongshen12"},"content":" private final ArrayList\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":202,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":203,"author":{"gitId":"licongshen12"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"licongshen12"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"licongshen12"},"content":" return appointments.stream().anyMatch(appointment::isSameAppointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"licongshen12"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"licongshen12"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"licongshen12"},"content":" appointments.add(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":216,"author":{"gitId":"billieboy7"},"content":" * A Model stub containing appointments","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"billieboy7"},"content":" private class ModelStubContainingAppointments extends ModelStub {","lastModifiedDate":"2023-10-21"},{"lineNumber":219,"author":{"gitId":"billieboy7"},"content":" private final Appointment appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":220,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"billieboy7"},"content":" ModelStubContainingAppointments(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":222,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":223,"author":{"gitId":"billieboy7"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":224,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":225,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":226,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":227,"author":{"gitId":"billieboy7"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":228,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":229,"author":{"gitId":"billieboy7"},"content":" return this.appointment.isSameAppointment(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":230,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":231,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":232,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":233,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"billieboy7":78,"licongshen12":148,"trgao":7}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":47,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":188,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":193,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":194,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":195,"author":{"gitId":"trgao"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-14"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":203,"trgao":39}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":119,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"licongshen12":1,"-":179,"trgao":5}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getName().orElse(null) + \", gender\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getGender().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", birthdate\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getBirthdate().orElse(null) + \", address\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"licongshen12":1,"-":65,"trgao":7}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":90,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":38,"trgao":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"licongshen12":6,"-":94,"trgao":2}},{"path":"src/test/java/seedu/address/logic/parser/personparser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BIRTHDATE_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FLU, VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_GENDER, PREFIX_ADDRESS,","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" PREFIX_BIRTHDATE, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + GENDER_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_AMY + BIRTHDATE_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" // invalid gender","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_GENDER_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"trgao"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-12"},{"lineNumber":198,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"trgao"},"content":" // invalid birthdate","lastModifiedDate":"2023-10-12"},{"lineNumber":202,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":203,"author":{"gitId":"trgao"},"content":" + INVALID_BIRTHDATE_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"trgao"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":214,"author":{"gitId":"trgao"},"content":" + INVALID_TAG_DESC + VALID_TAG_FLU, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":222,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"licongshen12":1,"-":174,"trgao":50}},{"path":"src/test/java/seedu/address/logic/parser/personparser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, \" 1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"licongshen12":1,"-":28,"trgao":4}},{"path":"src/test/java/seedu/address/logic/parser/personparser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER, VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"licongshen12":2,"-":188,"trgao":23}},{"path":"src/test/java/seedu/address/logic/parser/personparser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"licongshen12":1,"-":32,"trgao":1}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" + \", appointments\u003d\" + addressBook.getAppointmentList() + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" private final ObservableList\u003cAppointment\u003e appointments \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" return appointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"-":103,"trgao":13}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"-":131,"trgao":2}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" + \", gender\u003d\" + ALICE.getGender() + \", birthdate\u003d\" + ALICE.getBirthdate()","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":94,"trgao":8}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":171,"trgao":4}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedAppointmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_DOES_NOT_EXIST;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT1;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"public class JsonAdaptedAppointmentTest {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" private static final AddressBook ADDRESS_BOOK \u003d new AddressBookBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" .withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" private static final String INVALID_PATIENT \u003d \"R@chel\";","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" private static final String NON_EXISTENT_PATIENT \u003d \"Gabriel\";","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private static final String INVALID_START \u003d \"2023-10-10 10:00\";","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" private static final String INVALID_END \u003d \"2023-10-10 11:00\";","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private static final String INVALID_DESCRIPTION \u003d \"!@#!\";","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private static final String VALID_PATIENT \u003d APPOINTMENT1.getPatientName().fullName;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private static final String VALID_START \u003d dateTimeToString(APPOINTMENT1.getAppointmentTime().getStart());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private static final String VALID_END \u003d dateTimeToString(APPOINTMENT1.getAppointmentTime().getEnd());","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" private static final String VALID_DESCRIPTION \u003d APPOINTMENT1.getAppointmentDescription().value;","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public void toModelType_validAppointmentDetails_returnsAppointment() throws Exception {","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d new JsonAdaptedAppointment(APPOINTMENT1);","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" assertEquals(APPOINTMENT1, appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidPatient_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(INVALID_PATIENT, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" String expectedMessage1 \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage1, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(NON_EXISTENT_PATIENT, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class,","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" MESSAGE_PATIENT_DOES_NOT_EXIST, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" public void toModelType_nullPatient_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(null, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, INVALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d AppointmentTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, INVALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" public void toModelType_nullTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, null, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentTime.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, null, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, VALID_END, INVALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d AppointmentDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, VALID_END, null);","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentDescription.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"trgao":105}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private static final String INVALID_BIRTHDATE \u003d \"12-20-2001\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" private static final String INVALID_GENDER \u003d \"male\";","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private static final String VALID_BIRTHDATE \u003d BENSON.getBirthdate().toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" private static final String VALID_GENDER \u003d BENSON.getGender().toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidGender_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d Gender.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" public void toModelType_nullGender_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName());","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidBirthdate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, INVALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d Birthdate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" public void toModelType_nullBirthdate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, null, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthdate.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, INVALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" null, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, null, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, invalidTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"trgao":49}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT3;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT4;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" original.addAppointment(APPOINTMENT3);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" original.removeAppointment(APPOINTMENT3);","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" original.addAppointment(APPOINTMENT4);","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"trgao":5}},{"path":"src/test/java/seedu/address/testutil/AppointmentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_DESCRIPTION;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" * Apartment builder helps to build test appointment objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"public class AppointmentBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" private static final AppointmentTime DEFAULT_TIME \u003d new AppointmentTimeBuilder().build();","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" private static final Person DEFAULT_PATIENT \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_DESCRIPTION \u003d VALID_DESCRIPTION;","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" // Identity fields","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" private AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" private Person patient;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" // private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" private AppointmentDescription appointmentDescription;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentBuilder} with default settings.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d DEFAULT_TIME;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" patient \u003d DEFAULT_PATIENT;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" appointmentDescription \u003d new AppointmentDescription(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentBuilder} with data provided by {@code appointment}.","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d appointment.getAppointmentTime();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" patient \u003d appointment.getPerson();","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" appointmentDescription \u003d appointment.getAppointmentDescription();","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" public Appointment build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" return new Appointment(this.patient, this.appointmentTime, this.appointmentDescription);","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code AppointmentTime} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withAppointmentTime(String start, String end) {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" this.appointmentTime \u003d new AppointmentTimeBuilder().withStart(start).withEnd(end).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code Patient} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withPatient(Person patient) {","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code Description} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withDescription(String description) {","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" this.appointmentDescription \u003d new AppointmentDescription(description);","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"billieboy7":72}},{"path":"src/test/java/seedu/address/testutil/AppointmentTimeBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.parseDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.CURRENT_DATE;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.CURRENT_DATE_PLUS_FOUR_HOURS;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" * A utility class to help with building AppointmentTime objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"public class AppointmentTimeBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_START \u003d VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_END \u003d VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_START_TWO \u003d CURRENT_DATE;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_END_TWO \u003d CURRENT_DATE_PLUS_FOUR_HOURS;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentTimeBuilder} with the default details.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" start \u003d parseDateTime(DEFAULT_START);","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" end \u003d parseDateTime(DEFAULT_END);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" * Initializes the AppointmentTimeBuilder with the data of {@code appointmentTime}.","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder(AppointmentTime appointmentTime) {","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" start \u003d appointmentTime.getStart();","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" end \u003d appointmentTime.getEnd();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" * Sets the start time of the {@code AppointmentTime} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder withStart(String stringStart) {","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" this.start \u003d parseDateTime(stringStart);","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" * Sets the end time of the {@code AppointmentTime} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder withEnd(String stringEnd) {","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" this.end \u003d parseDateTime(stringEnd);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" public AppointmentTime build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" return new AppointmentTime(start, end);","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"billieboy7":61,"trgao":1}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" descriptor.setGender(person.getGender());","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" descriptor.setBirthdate(person.getBirthdate());","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" * Sets the {@code Gender} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" public EditPersonDescriptorBuilder withGender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" descriptor.setGender(new Gender(gender));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" * Sets the {@code Birthdate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" public EditPersonDescriptorBuilder withBirthdate(String birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" descriptor.setBirthdate(new Birthdate(birthdate));","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"licongshen12":1,"-":86,"trgao":20}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" public static final String DEFAULT_GENDER \u003d \"FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public static final String DEFAULT_BIRTHDATE \u003d \"2000/10/20\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private Birthdate birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" gender \u003d new Gender(DEFAULT_GENDER);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" birthdate \u003d new Birthdate(DEFAULT_BIRTHDATE);","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" gender \u003d personToCopy.getGender();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" birthdate \u003d personToCopy.getBirthdate();","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" * Sets the {@code Gender} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" public PersonBuilder withGender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" this.gender \u003d new Gender(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" * Sets the {@code Birthdate} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" public PersonBuilder withBirthdate(String birthdate) {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d new Birthdate(birthdate);","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" return new Person(name, gender, birthdate, phone, email, address, tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":95,"trgao":27}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" sb.append(PREFIX_GENDER + person.getGender().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" sb.append(PREFIX_BIRTHDATE + person.getBirthdate().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" descriptor.getGender().ifPresent(gender -\u003e sb.append(PREFIX_GENDER).append(gender.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" descriptor.getBirthdate().ifPresent(","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" birthdate -\u003e sb.append(PREFIX_BIRTHDATE).append(birthdate.value).append(\" \"));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"licongshen12":2,"-":60,"trgao":7}},{"path":"src/test/java/seedu/address/testutil/TypicalAppointments.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"public class TypicalAppointments {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT1 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" .withPatient(ALICE).withAppointmentTime(\"2023/10/10 10:00\", \"2023/10/10 11:00\")","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" .withDescription(\"Checkup\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT2 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" .withPatient(BENSON).withAppointmentTime(\"2023/01/29 21:00\", \"2023/01/29 23:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" .withDescription(\"X-ray Checkup\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" // Manually added","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT3 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" .withPatient(HOON).withAppointmentTime(\"2021/04/18 15:00\", \"2023/04/18 17:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" .withDescription(\"Follow-up\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT4 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" .withPatient(IDA).withAppointmentTime(\"2022/06/13 15:00\", \"2022/06/13 16:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" .withDescription(\"Follow-up\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"trgao":32}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDATE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDATE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" .withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" .withPhone(\"94351253\").withBirthdate(\"1999/01/12\")","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" .withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" .withBirthdate(\"2001/10/20\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" .withPhone(\"95352563\").withEmail(\"heinz@example.com\").withBirthdate(\"1987/01/02\")","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" .withPhone(\"87652533\").withEmail(\"cornelia@example.com\").withBirthdate(\"2003/03/28\")","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" .withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482224\").withEmail(\"werner@example.com\").withBirthdate(\"1989/05/19\")","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482427\").withEmail(\"lydia@example.com\").withBirthdate(\"2002/06/12\")","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482442\").withEmail(\"anna@example.com\").withBirthdate(\"1994/08/23\")","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" .withPhone(\"8482424\").withEmail(\"stefan@example.com\").withBirthdate(\"1978/10/20\")","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" .withAddress(\"little india\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" .withPhone(\"8482131\").withEmail(\"hans@example.com\").withBirthdate(\"2009/09/09\")","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .withAddress(\"chicago ave\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withGender(VALID_GENDER_AMY)","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withBirthdate(VALID_BIRTHDATE_AMY)","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withGender(VALID_GENDER_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withBirthdate(VALID_BIRTHDATE_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER, VALID_TAG_FLU)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"-":55,"trgao":37}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T08-4/tp/actions)","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"* This is a sample project for Software Engineering (SE) students.\u003cbr\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"* The project simulates an ongoing software project for a desktop application (called _MediFlowR_) used for managing contact details.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"* It is named `MediFlowR` because it tracks patient records for medical professionals.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"* For the detailed documentation of this project, see the **[MediFlowR Product Website](https://ay2324s1-cs2103t-t08-4.github.io/tp/)**.","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":8,"trgao":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"licongshen12"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac-aarch64\u0027","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" archiveFileName \u003d \u0027mediflowr.jar\u0027","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":"run {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"licongshen12":4,"-":67,"trgao":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"### Gao Tianrun","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/trgao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"[[github](https://github.com/trgao)]","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"[[portfolio](team/trgao.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"* Role: Team Lead","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"### Shen Licong","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/licongshen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"[[github](http://github.com/licongshen12)]","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":"[[portfolio](team/licongshen12.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"* Role: Developer","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"### Stalin Muthukumar Bill Kirankumar","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/billieboy7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"[[github](http://github.com/billieboy7)]","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"[[portfolio](team/billieboy7.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":"### Doan Quoc Thinh","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"\u003cimg src\u003d\"images/dinde2004.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"[[github](http://github.com/dinde2004)]","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":"[[portfolio](team/dinde2004.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kwangthiag"},"content":"### Kwang Thiag","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"kwangthiag"},"content":"\u003cimg src\u003d\"images/kwangthiag.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"kwangthiag"},"content":"[[github](http://github.com/kwangthiag)]","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"kwangthiag"},"content":"[[portfolio](team/kwangthiag.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":"* Responsibilities:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"dinde2004":1,"kwangthiag":5,"licongshen12":5,"-":33,"trgao":16}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point).","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2023-10-04"},{"lineNumber":259,"author":{"gitId":"trgao"},"content":"Healthcare Professionals who","lastModifiedDate":"2023-10-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"billieboy7"},"content":"* has a need to manage a significant number of patients at any given time","lastModifiedDate":"2023-10-04"},{"lineNumber":262,"author":{"gitId":"trgao"},"content":"* can add, update, delete and search patient records","lastModifiedDate":"2023-10-04"},{"lineNumber":263,"author":{"gitId":"trgao"},"content":"* are required to update, access and track multiple patients\u0027 treatment history","lastModifiedDate":"2023-10-04"},{"lineNumber":264,"author":{"gitId":"billieboy7"},"content":"* manage the scheduling, rescheduling and cancelling of appointments","lastModifiedDate":"2023-10-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"trgao"},"content":"* prefer typing to mouse interactions","lastModifiedDate":"2023-10-04"},{"lineNumber":268,"author":{"gitId":"trgao"},"content":"* are reasonably comfortable using CLI apps","lastModifiedDate":"2023-10-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"billieboy7"},"content":"**Value proposition**: manage patients\u0027 medical records faster than a typical GUI driven app in a systematic manner","lastModifiedDate":"2023-10-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"trgao"},"content":"|-----|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":279,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | create new patient records with relevant demographic information | add new patient records into the system |","lastModifiedDate":"2023-10-04"},{"lineNumber":280,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | update patient records as needed | keep the patient\u0027s information accurate and up to date |","lastModifiedDate":"2023-10-04"},{"lineNumber":281,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | delete patient records as needed | remove unused/outdated patient records |","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | search and retrieve patient records using their name quickly | find the necessary information efficiently without going through the entire list |","lastModifiedDate":"2023-10-04"},{"lineNumber":283,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | list all patients currently recorded in the system | see the general workload of the service. |","lastModifiedDate":"2023-10-04"},{"lineNumber":284,"author":{"gitId":"trgao"},"content":"| `* *` | healthcare professional | add custom remarks to a patient\u0027s records | give them detailed instructions and feedback after consultation |","lastModifiedDate":"2023-10-04"},{"lineNumber":285,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | schedule appointments for patients | set the date and time of patients\u0027 next appointment |","lastModifiedDate":"2023-10-04"},{"lineNumber":286,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | reschedule appointments when necessary | make sure my schedule does not clash with the appointments |","lastModifiedDate":"2023-10-04"},{"lineNumber":287,"author":{"gitId":"trgao"},"content":"| `* * *` | healthcare professional | cancel appointments when necessary | clear up my schedule if a patient is not able to make it |","lastModifiedDate":"2023-10-04"},{"lineNumber":288,"author":{"gitId":"trgao"},"content":"| `* *` | healthcare professional | view a calendar with all scheduled appointments | plan my day effectively |","lastModifiedDate":"2023-10-04"},{"lineNumber":289,"author":{"gitId":"trgao"},"content":"| `*` | healthcare professional | schedule appointments for patients and assign them to specific doctors with matching schedules | efficiently match patients with free doctors |","lastModifiedDate":"2023-10-04"},{"lineNumber":290,"author":{"gitId":"trgao"},"content":"| `*` | healthcare professional | set reminders to patients for follow-up appointments | ensure that patients know about the follow-up appointments |","lastModifiedDate":"2023-10-04"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"kwangthiag"},"content":"(For all use cases below, the **System** is the `MediFlowR (MFR)` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"kwangthiag"},"content":"**Use case: Add a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"kwangthiag"},"content":"1. User requests to add a patient with name","lastModifiedDate":"2023-10-04"},{"lineNumber":303,"author":{"gitId":"kwangthiag"},"content":"2. MFR adds the patient and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":304,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":305,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":306,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":307,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":308,"author":{"gitId":"kwangthiag"},"content":"**Use case: Clear Database**","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":310,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":311,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":312,"author":{"gitId":"kwangthiag"},"content":"1. User requests clear all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"kwangthiag"},"content":"2. MFR clears the list and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":317,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":318,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":319,"author":{"gitId":"kwangthiag"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":320,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":321,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":322,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":323,"author":{"gitId":"kwangthiag"},"content":"1. User requests to delete a patient using ID","lastModifiedDate":"2023-10-04"},{"lineNumber":324,"author":{"gitId":"kwangthiag"},"content":"2. MFR deletes the person and displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":325,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":326,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":327,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":328,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":329,"author":{"gitId":"kwangthiag"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":330,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":331,"author":{"gitId":"kwangthiag"},"content":"* 2a. The given ID is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":333,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":334,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":335,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":336,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":337,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"kwangthiag"},"content":"**Use case: List all patients**","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"kwangthiag"},"content":"1. User asks for a list of all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a list of all patients","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR displays a message \"The list is empty\"","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"kwangthiag"},"content":"**Use case: Search a patient**","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"kwangthiag"},"content":"1. User searches for a name","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a list of patients which contain that name","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR displays a message \"No such user found\" ","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"kwangthiag"},"content":"**Use case: Update a patient\u0027s illness**","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"kwangthiag"},"content":"1. User uses the command to update the patient with that ID with the new illness","lastModifiedDate":"2023-10-04"},{"lineNumber":381,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a confirmation message","lastModifiedDate":"2023-10-04"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":384,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":385,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":386,"author":{"gitId":"kwangthiag"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":388,"author":{"gitId":"kwangthiag"},"content":"* 2a. The given ID is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":389,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":390,"author":{"gitId":"kwangthiag"},"content":" * 2a1. MFR shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"kwangthiag"},"content":" ","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"kwangthiag"},"content":"**Use case: Ask For Help**","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"kwangthiag"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"kwangthiag"},"content":"1. User asks for help","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"kwangthiag"},"content":"2. MFR displays a link to the help page","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"kwangthiag"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"dinde2004"},"content":"4. Every operation should run in less than 100 milliseconds.","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"dinde2004"},"content":"5. The application should be able to scale horizontally and vertically to accommodate increasing data of user loads.","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"dinde2004"},"content":"6. The uptime percentage of the application should be greater than or equal 99.9%.","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"dinde2004"},"content":"7. The app should be able to handle unexpected input and edge cases, without making the app to crash or any data loss.","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"dinde2004"},"content":"8. The user interface should be friendly enough for users who are not tech-savvy.","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"dinde2004"},"content":"9. Testing should be implemented to avoid errors.","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"dinde2004"},"content":"10. The application does not require for internet connection to work properly.","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"dinde2004"},"content":"11. The size of the application in the hard disk should be no larger than 100MB, exclusive of the data.","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"licongshen12"},"content":"## Glossary","lastModifiedDate":"2023-10-06"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"licongshen12"},"content":"- **Mainstream OS**:","lastModifiedDate":"2023-10-06"},{"lineNumber":427,"author":{"gitId":"licongshen12"},"content":" - Refers to the most commonly used operating systems in the market, including Windows, Linux, Unix, and OS-X (MacOS).","lastModifiedDate":"2023-10-06"},{"lineNumber":428,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":429,"author":{"gitId":"licongshen12"},"content":"- **Private contact detail**:","lastModifiedDate":"2023-10-06"},{"lineNumber":430,"author":{"gitId":"licongshen12"},"content":" - A specific piece of information or data about a contact that isn\u0027t intended for public view or distribution.","lastModifiedDate":"2023-10-06"},{"lineNumber":431,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":432,"author":{"gitId":"licongshen12"},"content":"- **.puml files**:","lastModifiedDate":"2023-10-06"},{"lineNumber":433,"author":{"gitId":"licongshen12"},"content":" - Files used to define and create diagrams in the PlantUML format. These are typically used for illustrating software design or architecture.","lastModifiedDate":"2023-10-06"},{"lineNumber":434,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":435,"author":{"gitId":"licongshen12"},"content":"- **JavaFx UI framework**:","lastModifiedDate":"2023-10-06"},{"lineNumber":436,"author":{"gitId":"licongshen12"},"content":" - A Java library used for developing user interfaces. It provides functionalities for creating windows, dialogs, buttons, text fields, and other UI components.","lastModifiedDate":"2023-10-06"},{"lineNumber":437,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":438,"author":{"gitId":"licongshen12"},"content":"- **JSON**:","lastModifiedDate":"2023-10-06"},{"lineNumber":439,"author":{"gitId":"licongshen12"},"content":" - Stands for JavaScript Object Notation. It\u0027s a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate.","lastModifiedDate":"2023-10-06"},{"lineNumber":440,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":441,"author":{"gitId":"licongshen12"},"content":"- **MSS**:","lastModifiedDate":"2023-10-06"},{"lineNumber":442,"author":{"gitId":"licongshen12"},"content":" - Stands for Main Success Scenario. It describes the primary pathway of a use case that leads to a successful outcome.","lastModifiedDate":"2023-10-06"},{"lineNumber":443,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":444,"author":{"gitId":"licongshen12"},"content":"- **API**:","lastModifiedDate":"2023-10-06"},{"lineNumber":445,"author":{"gitId":"licongshen12"},"content":" - Stands for Application Programming Interface. It\u0027s a set of tools, definitions, and protocols for building and interacting with software and applications.","lastModifiedDate":"2023-10-06"},{"lineNumber":446,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":447,"author":{"gitId":"licongshen12"},"content":"- **AddressBook**:","lastModifiedDate":"2023-10-06"},{"lineNumber":448,"author":{"gitId":"licongshen12"},"content":" - In the context of the provided document, it refers to the core data structure or component in the application that keeps a record of contacts or persons.","lastModifiedDate":"2023-10-06"},{"lineNumber":449,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":450,"author":{"gitId":"licongshen12"},"content":"- **ObservableList**:","lastModifiedDate":"2023-10-06"},{"lineNumber":451,"author":{"gitId":"licongshen12"},"content":" - A list that allows listeners to track changes when they occur. Typically used in GUI applications to update the UI when underlying data changes.","lastModifiedDate":"2023-10-06"},{"lineNumber":452,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":453,"author":{"gitId":"licongshen12"},"content":"- **UI**:","lastModifiedDate":"2023-10-06"},{"lineNumber":454,"author":{"gitId":"licongshen12"},"content":" - Stands for User Interface. Refers to the space where interactions between humans and machines occur. The goal of this interaction is effective operation and control of the machine from the human end.","lastModifiedDate":"2023-10-06"},{"lineNumber":455,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":456,"author":{"gitId":"licongshen12"},"content":"- **Command**:","lastModifiedDate":"2023-10-06"},{"lineNumber":457,"author":{"gitId":"licongshen12"},"content":" - In the context of the provided document, it refers to a directive given by the user to perform certain operations or functions in the application.","lastModifiedDate":"2023-10-06"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":459,"author":{"gitId":"licongshen12"},"content":"- **PlantUML**:","lastModifiedDate":"2023-10-06"},{"lineNumber":460,"author":{"gitId":"licongshen12"},"content":" - A component that allows to quickly write diagrams in a plain text format, which it then processes to produce visual diagrams.","lastModifiedDate":"2023-10-06"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dinde2004":9,"kwangthiag":84,"billieboy7":3,"licongshen12":35,"-":364,"trgao":18}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"MediFlowR is a **desktop app for managing patient records and appointments, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, MediFlowR can get your patient management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"1. Download the latest `mediflowr.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your patient records.","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar mediflowr.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" * `list` : Lists all patients.","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" * `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever` : Adds a patient named `John` to the records.","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" * `delete id\u003d3` : Deletes the patient with id 3 in the current list.","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" * `clear` : Deletes all patients.","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"* Words in between square brackets `[]` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" e.g. in `search name\u003d[name]`, `[name]` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" e.g. if the command specifies `name\u003d[name] birthdate\u003d[birthdate]`, `birthdate\u003d[birthdate] name\u003d[name]` is also acceptable.","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":"### Adding a new patient: `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":"Creates a new patient profile to be added to the patient records. ","lastModifiedDate":"2023-10-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":"Format: `add name\u003d[name] birthdate\u003d[birthdate] gender\u003d[gender]","lastModifiedDate":"2023-10-03"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"illness\u003d[illness]​`","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":"* `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":"* `add name\u003dCena birthdate\u003d30/12/1993 gender\u003dMale illness\u003dSchizophrenia`","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":"### Updating Patient Treatment History: `update`","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":"Updates a patient\u0027s treatment history with illness.","lastModifiedDate":"2023-10-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":"Format: `update id\u003d[patient-id] illness\u003d[illness]`","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":"* Updates the illness of the patient with id `patient-id`.","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":"* Existing illness will be changed to the `illness`.","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":"* `update id\u003d12345 illness\u003dFever` updates the illness of the patient with patient ID `12345` to `Fever`.","lastModifiedDate":"2023-10-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"kwangthiag"},"content":"### Locating patients by name: `search`","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"kwangthiag"},"content":"Finds patients whose names contain any of the given keywords.","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"kwangthiag"},"content":"Format: `search name\u003d[name]`","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"kwangthiag"},"content":"* The search is case-insensitive. e.g `tianrun` will match `Tianrun`","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"kwangthiag"},"content":"* The order of the keywords does not matter. e.g. `Lebron James` will match `James Lebron`","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"kwangthiag"},"content":"* Only full words will be matched e.g. `Curr` will not match `Curry`","lastModifiedDate":"2023-10-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"kwangthiag"},"content":" e.g. `Chris Paul` will return `Chris Bumstead`, `Logan Paul`","lastModifiedDate":"2023-10-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"kwangthiag"},"content":"* `search name\u003dJames` returns `james` and `James Harden`","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"kwangthiag"},"content":"* `search name\u003dalex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"dinde2004"},"content":"Deletes the specified patient from the patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"dinde2004"},"content":"Format: `delete id\u003d[patient-id]`","lastModifiedDate":"2023-10-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"dinde2004"},"content":"* Deletes the patient with the specified `patient-id`.","lastModifiedDate":"2023-10-03"},{"lineNumber":124,"author":{"gitId":"dinde2004"},"content":"* The patient id refers to the id of the patient shown in the displayed patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":125,"author":{"gitId":"dinde2004"},"content":"* The patient id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"dinde2004"},"content":"`delete id\u003d12345` deletes the patient with id **12345** in the patient list.","lastModifiedDate":"2023-10-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":"### Clearing all patient records : `clear`","lastModifiedDate":"2023-10-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":"Clears all patient records from the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":"MediFlowR data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":"MediFlowR data are saved automatically as a JSON file `[JAR file location]/data/mediflowr.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"trgao"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MediFlowR home folder.","lastModifiedDate":"2023-10-03"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":"**Add** | `add name\u003d[name] birthdate\u003d[birthdate] gender\u003d[gender] illness\u003d[illness]` \u003cbr\u003e e.g., `add name\u003dJohn birthdate\u003d30/09/2001 gender\u003dMale illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":"**Delete** | `delete id\u003d[patient-id]`\u003cbr\u003e e.g., `delete id\u003d3`","lastModifiedDate":"2023-10-03"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":"**Update** | `update id\u003d[patient-id] illness\u003d[illness]`\u003cbr\u003e e.g.,`update id\u003d12345 illness\u003dFever`","lastModifiedDate":"2023-10-03"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":"**Search** | `search name\u003d[name]`\u003cbr\u003e e.g., `search name\u003dJames Jake`","lastModifiedDate":"2023-10-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dinde2004":6,"kwangthiag":9,"billieboy7":8,"licongshen12":6,"-":134,"trgao":20}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"trgao"},"content":" content: \"MediFlowR\";","lastModifiedDate":"2023-10-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"-":294,"trgao":1}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"title: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T08-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T08-4/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-T08-4/tp/graph/badge.svg?token\u003dW34CGP58OU)](https://codecov.io/gh/AY2324S1-CS2103T-T08-4/tp)","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"**MediFlowR is a desktop app for managing patient records and appointments, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* If you are interested in using MediFlowR, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start).","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.md) is a good place to start.","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"-":13,"trgao":7}},{"path":"docs/team/billieboy7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"title: Stalin Muthukumar Bill Kirankumar\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"* **New Feature**: ","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"* **New Feature**: ","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dbillieboy7\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"* **Project management**:","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" * User Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" * Added documentation for the features `add` [\\#28](https://github.com/AY2324S1-CS2103T-T08-4/tp/pull/28)","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * Ideated and updated the target user and value proposition","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":"* **Community**:","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":"* **Tools**:","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"billieboy7":30}},{"path":"docs/team/dinde2004.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"title: Doan Quoc Thinh\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"* **New Feature**: coming soon!","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" * What it does:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" * Justification:","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" * Highlights:","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" * Credits:","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003ddinde2004\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":" * Added documentation for the features `delete` [\\#21]()","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"dinde2004":30,"trgao":1}},{"path":"docs/team/kwangthiag.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"title: Kwang Thiag\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"kwangthiag"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dkwangthiag\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"kwangthiag"},"content":" * Added documentation for the feature `search` [\\#24]()","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"kwangthiag"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":" * Drew Mockups for CRUD","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"kwangthiag":27,"trgao":4}},{"path":"docs/team/licongshen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"title: Shen Licong\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dlicongshen12\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":" * Added documentation for the features `update` [\\#32](https://github.com/AY2324S1-CS2103T-T08-4/tp/pull/32)","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"licongshen12":26,"trgao":4}},{"path":"docs/team/trgao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"title: Gao Tianrun\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"### Project: MediFlowR","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"MediFlowR is a application that enables users to manage patient records within the system.","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"* **New Feature**:","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dtrgao\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Added documentations for user guide","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"trgao":31}},{"path":"src/main/java/seedu/address/commons/util/DateUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":" * Helper functions for handling datetimes.","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"public class DateUtil {","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" * Formats date and time inputs as: yyyy-MM-dd hh:mm (eg. 2020-02-20 08:00).","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" private static final DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" * Parses a {@code String dateTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" public static LocalDateTime parseDateTime(String dateAndTime) {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" String trimmedDateTime \u003d dateAndTime.trim();","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" localDateTime \u003d LocalDateTime.parse(trimmedDateTime, dateTimeFormat);","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" return localDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" * Returns a formatted {@code String dateTime} from a {@code LocalDateTime}.","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static String dateTimeToString(LocalDateTime dateAndTime) {","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" return dateAndTime.format(dateTimeFormat);","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"trgao":37}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"licongshen12"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the filtered list of appointments","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"licongshen12":4,"-":49,"trgao":6}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" return model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":88,"trgao":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Messages for person class.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d patients listed!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" * Messages for appointment class.","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX \u003d \"The appointment index provided is\"","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" + \"invalid\";","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_PATIENT_DOES_NOT_EXIST \u003d \"Patient provided does not exist\";","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_INVALID_START_AND_END_TIMES \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" \"Your start time is either before or on the same time as the end \"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + \"time. Start time should be before end time\";","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_TIMESLOT \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" \"Please choose another timing for the appointment, there \"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" + \"already exists another appointment in this timing that clashes with the requested appointment\";","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" \"This appointment has already been created and we have taken note!\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" .append(\"; Gender: \")","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" .append(person.getGender())","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .append(\"; Birthdate: \")","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" .append(person.getBirthdate())","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" .append(\"; Illness: \");","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"dinde2004"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":" * Formats the {@code appointment} for display to the user.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"dinde2004"},"content":" public static String format(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"dinde2004"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" builder.append(\"Patient: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"dinde2004"},"content":" .append(appointment.getPatientName())","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" .append(\"; Start: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" .append(dateTimeToString(appointment.getStartTime()))","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" .append(\"; End: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" .append(dateTimeToString(appointment.getEndTime()))","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" .append(\"; Description: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" .append(appointment.getAppointmentDescription());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"dinde2004"},"content":" return builder.toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dinde2004":9,"-":48,"trgao":34}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Patient records has been cleared!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":22,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" /** Whether the command can be changed later on */","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" private final boolean isChangeable;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" * Overloaded constructor for {@code CommandResult} for commands that can be changed later on","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * @param feedbackToUser","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" * @param showHelp","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" * @param exit","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" * @param isChangeable","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean isChangeable) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" this.isChangeable \u003d isChangeable;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" this.isChangeable \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"billieboy7":18,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/AppointmentsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_APPOINTMENTS;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" * Lists all appointments in the address book to the user.","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"public class AppointmentsCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" public static final String COMMAND_WORD \u003d \"appointments\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all appointments\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" model.updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":23,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/CancelCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" * Cancels an appointment identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":"public class CancelCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" public static final String COMMAND_WORD \u003d \"cancel\";","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" + \": Cancel the appointment with the corresponding appointment id.\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 3\";","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" public static final String MESSAGE_CANCEL_APPOINTMENT_SUCCESS \u003d \"Cancelled Appointment: %1$s\";","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":" public CancelCommand(Index targetIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"dinde2004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"dinde2004"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"dinde2004"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"dinde2004"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"dinde2004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"dinde2004"},"content":" Appointment appointmentToCancel \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"dinde2004"},"content":" model.deleteAppointment(appointmentToCancel);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"dinde2004"},"content":" return new CommandResult(String.format(MESSAGE_CANCEL_APPOINTMENT_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"dinde2004"},"content":" Messages.format(appointmentToCancel)));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"dinde2004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"dinde2004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"dinde2004"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"dinde2004"},"content":" if (!(other instanceof CancelCommand)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"dinde2004"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"dinde2004"},"content":" CancelCommand otherCancelCommand \u003d (CancelCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"dinde2004"},"content":" return targetIndex.equals(otherCancelCommand.targetIndex);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":60,"trgao":2}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/RescheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_APPOINTMENTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":" * Reschedules an existing appointment","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"kwangthiag"},"content":"public class RescheduleCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"kwangthiag"},"content":" public static final String COMMAND_WORD \u003d \"reschedule\";","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reschedules the appointment identified \"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":" + \"by the index number used in the displayed appointment list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer) \"","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"START \"","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"END\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"2023/05/02 09:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"2023/05/02 11:00 \";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Patient appointment rescheduled: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_NO_APPOINTMENT_FOUND \u003d \"No such appointment exists in the records\";","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d \"This appointment already exists in the records\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"kwangthiag"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"kwangthiag"},"content":" private final AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" * Creates a RescheduleCommand to change the appointment time","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * for the specified {@code Appointment}","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" * @param index of the appointment in the filtered appointment list to edit","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" * @param appointmentTime new appointment time","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"kwangthiag"},"content":" public RescheduleCommand(Index index, AppointmentTime appointmentTime) {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"kwangthiag"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"kwangthiag"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"kwangthiag"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"kwangthiag"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"kwangthiag"},"content":" throw new CommandException(MESSAGE_NO_APPOINTMENT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"kwangthiag"},"content":" Appointment appointmentToReschedule \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d createRescheduledAppointment(appointmentToReschedule, appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"kwangthiag"},"content":" model.updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"kwangthiag"},"content":" lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" // Clash in appointment slot","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidTimeSlot(lastShownList, rescheduledAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_TIMESLOT);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" // Appointment already exists","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" if (model.hasAppointment(rescheduledAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"kwangthiag"},"content":" model.setAppointment(appointmentToReschedule, rescheduledAppointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_SUCCESS, Messages.format(rescheduledAppointment)), false, false);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"kwangthiag"},"content":" private static Appointment createRescheduledAppointment(Appointment appointmentToReschedule,","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime newTime) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"kwangthiag"},"content":" assert appointmentToReschedule !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"kwangthiag"},"content":" Person patient \u003d appointmentToReschedule.getPerson();","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" AppointmentDescription description \u003d appointmentToReschedule.getAppointmentDescription();","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" return new Appointment(patient, newTime, description);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"kwangthiag"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"kwangthiag"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"kwangthiag"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"kwangthiag"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"kwangthiag"},"content":" if (!(other instanceof RescheduleCommand)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"kwangthiag"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand e \u003d (RescheduleCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"kwangthiag"},"content":" return index.equals(e.index);","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"kwangthiag"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"kwangthiag"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"kwangthiag"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"kwangthiag"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"kwangthiag"},"content":" .add(\"appointmentTime\", appointmentTime)","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"kwangthiag"},"content":" .toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"kwangthiag"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"kwangthiag":93,"trgao":26}},{"path":"src/main/java/seedu/address/logic/commands/appointmentcommands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_DESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_PATIENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules an appointment.\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_PATIENT + \"PATIENT \"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_START + \"START \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_END + \"END \"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_DESCRIPTION + \"DESCRIPTION\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_PATIENT + \"Alex Yeoh \"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_START + \"2023/10/20 12:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" + PREFIX_APPOINTMENT_END + \"2023/10/20 13:00 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" + PREFIX_APPOINTMENT_DESCRIPTION + \"Follow up on Chest X-Ray \";","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New appointment scheduled: %1$s.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" private final Appointment currAppointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" private final Name patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" * Creates a ScheduleCommand to add the specified {@code Appointment}","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" public ScheduleCommand(Appointment appointment, Name patientName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" // Check that appointment is non-null.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" // Save the appointment to currAppointment during initialisation.","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" this.currAppointment \u003d appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" List\u003cPerson\u003e latestPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" if (!model.hasPerson(patientName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_PATIENT_DOES_NOT_EXIST);","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" Person personToAdd \u003d latestPersonList","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" .stream().filter(person -\u003e person.getName().equals(patientName)).collect(Collectors.toList()).get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" // Add the Person patient to the current appointment","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" currAppointment.setPatient(personToAdd);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" // Clash in appointment slot","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidTimeSlot(lastShownList, currAppointment)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_TIMESLOT);","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":" // Appointment already exists","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" if (model.hasAppointment(currAppointment)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":" model.addAppointment(currAppointment);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_SUCCESS, Messages.format(currAppointment)), false, false, true);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"billieboy7"},"content":" // Check if the given object is the same object.","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"billieboy7"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"billieboy7"},"content":" // if Object other is of type AddAppointmentCommand, cast it to type AddAppointmentCommand and compare the","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"billieboy7"},"content":" // containing","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"billieboy7"},"content":" // currAppointment","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" if (other instanceof ScheduleCommand) {","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" ScheduleCommand otherAppointment \u003d (ScheduleCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" return currAppointment.equals(otherAppointment.currAppointment)","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" \u0026\u0026 patientName.equals(otherAppointment.patientName);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" .add(\"toAdd\", currAppointment)","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" .toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":80,"trgao":37}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the records. \"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" + PREFIX_GENDER + \"GENDER \"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" + PREFIX_BIRTHDATE + \"BIRTHDATE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_TAG + \"ILLNESS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" + PREFIX_GENDER + \"MALE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" + PREFIX_BIRTHDATE + \"2000/10/20 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" + PREFIX_TAG + \"Fever\";","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the records\";","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":77,"trgao":11}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" + \": Deletes the patient with the corresponding patient id.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD + \" 2\";","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":64,"trgao":4}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reschedules the appointment of the patient identified \"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" + \"Parameters: INDEX (index must be a positive integer) \"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_BIRTHDATE + \"BIRTHDATE] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" + \"[\" + PREFIX_TAG + \"ILLNESS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" + \" 1 \"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This patient already exists in the records.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" Gender updatedGender \u003d editPersonDescriptor.getGender().orElse(personToEdit.getGender());","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" Birthdate updatedBirthdate \u003d editPersonDescriptor.getBirthdate().orElse(personToEdit.getBirthdate());","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" return new Person(updatedName, updatedGender, updatedBirthdate, updatedPhone, updatedEmail,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" updatedAddress, updatedTags);","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" private Birthdate birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" private Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" setBirthdate(toCopy.birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"trgao"},"content":" setGender(toCopy.gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, birthdate, gender, address, tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"trgao"},"content":" public void setBirthdate(Birthdate birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"trgao"},"content":" public Optional\u003cBirthdate\u003e getBirthdate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"trgao"},"content":" return Optional.ofNullable(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":210,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":211,"author":{"gitId":"trgao"},"content":" public void setGender(Gender gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":212,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":214,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":215,"author":{"gitId":"trgao"},"content":" public Optional\u003cGender\u003e getGender() {","lastModifiedDate":"2023-10-12"},{"lineNumber":216,"author":{"gitId":"trgao"},"content":" return Optional.ofNullable(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":217,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":220,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"trgao"},"content":" \u0026\u0026 Objects.equals(gender, otherEditPersonDescriptor.gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"trgao"},"content":" \u0026\u0026 Objects.equals(birthdate, otherEditPersonDescriptor.birthdate)","lastModifiedDate":"2023-10-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"trgao"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"trgao"},"content":" .add(\"birthdate\", birthdate)","lastModifiedDate":"2023-10-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kwangthiag":1,"licongshen12":3,"-":232,"trgao":42}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all patients whose names contain any of \"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"licongshen12":3,"-":56,"trgao":1}},{"path":"src/main/java/seedu/address/logic/commands/personcommands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"licongshen12":3,"-":22,"trgao":1}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.AppointmentsCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.CancelCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.RescheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.ScheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.appointmentparser.CancelCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.appointmentparser.RescheduleCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.appointmentparser.ScheduleCommandParser;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.AddCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.DeleteCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.EditCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.personparser.FindCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":93,"author":{"gitId":"dinde2004"},"content":" case CancelCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"dinde2004"},"content":" return new CancelCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" case AppointmentsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" return new AppointmentsCommand();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"dinde2004"},"content":" case RescheduleCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"dinde2004"},"content":" return new RescheduleCommandParser().parse(arguments);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"dinde2004":12,"licongshen12":5,"-":80,"trgao":11}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the arguments.","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" public boolean arePrefixesPresent(Prefix... prefixes) {","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e getValue(prefix).isPresent());","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":78,"trgao":7}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":" /* Person prefix definitions */","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_GENDER \u003d new Prefix(\"gender\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_BIRTHDATE \u003d new Prefix(\"birthdate\u003d\");","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address\u003d\");","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"illness\u003d\");","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" /* Appointment prefix definitions */","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_START \u003d new Prefix(\"start\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_END \u003d new Prefix(\"end\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_DESCRIPTION \u003d new Prefix(\"description\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" public static final Prefix PREFIX_APPOINTMENT_PATIENT \u003d new Prefix(\"patient\u003d\");","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"billieboy7":4,"-":9,"trgao":9}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" requireNonNull(oneBasedIndex);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" * Parses a {@code String birthdate} into a {@code Birthdate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code birthdate} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" public static Birthdate parseBirthdate(String birthdate) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" requireNonNull(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" String trimmedBirthdate \u003d birthdate.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" if (!Birthdate.isValidBirthdate(trimmedBirthdate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" throw new ParseException(Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" return new Birthdate(trimmedBirthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" * Parses a {@code String gender} into a {@code Gender}.","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code gender} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" public static Gender parseGender(String gender) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" requireNonNull(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" String trimmedGender \u003d gender.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" if (!Gender.isValidGender(trimmedGender)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" throw new ParseException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" return new Gender(trimmedGender);","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"billieboy7"},"content":" * Parses a {@code String dateAndTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"billieboy7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"billieboy7"},"content":" * @throws ParseException if the given {@code dateAndTime} is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"billieboy7"},"content":" public static LocalDateTime parseDateTime(String dateAndTime) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"billieboy7"},"content":" requireNonNull(dateAndTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"billieboy7"},"content":" String trimmedDateTime \u003d dateAndTime.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"billieboy7"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"billieboy7"},"content":" localDateTime \u003d LocalDateTime.parse(trimmedDateTime, dateTimeFormat);","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"billieboy7"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"billieboy7"},"content":" return localDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"billieboy7"},"content":" * Parses a {@code String description} into a {@code AppointmentDescription}.","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"billieboy7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"billieboy7"},"content":" public static AppointmentDescription parseDescription(String description) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"billieboy7"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"billieboy7"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"billieboy7"},"content":" if (!AppointmentDescription.isValidAppointmentDescription(trimmedDescription)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"billieboy7"},"content":" return new AppointmentDescription(trimmedDescription);","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"billieboy7":38,"-":124,"trgao":35}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/CancelCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.commands.appointmentcommands.CancelCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" * Parses input arguments and creates a new CancelCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":"public class CancelCommandParser implements Parser\u003cCancelCommand\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" * Parses the given {@code String} of arguments in the context of the CancelCommand","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" * and returns a CancelCommand object for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" public CancelCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":" return new CancelCommand(index);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CancelCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"dinde2004":25,"trgao":6}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/RescheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.commands.appointmentcommands.RescheduleCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" * Parses input arguments and creates a new RescheduleCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"public class RescheduleCommandParser implements Parser\u003cRescheduleCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Parses the given {@code String} of arguments in the context of the RescheduleCommand","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" * and returns a RescheduleCommand object for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":" public RescheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"kwangthiag"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"kwangthiag"},"content":" Index index;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, RescheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END)","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, RescheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_APPOINTMENT_START, PREFIX_APPOINTMENT_END);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" LocalDateTime startTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_START).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" LocalDateTime endTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_END).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" appointmentTime \u003d new AppointmentTime(startTime, endTime);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":" return new RescheduleCommand(index, appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"kwangthiag"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"kwangthiag":39,"trgao":24}},{"path":"src/main/java/seedu/address/logic/parser/appointmentparser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.parser.appointmentparser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_DESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_END;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_PATIENT;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_START;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.appointmentcommands.ScheduleCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" * @param args","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION)","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_APPOINTMENT_PATIENT, PREFIX_APPOINTMENT_START,","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" PREFIX_APPOINTMENT_END, PREFIX_APPOINTMENT_DESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" LocalDateTime startTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_START).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" LocalDateTime endTime \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_APPOINTMENT_END).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" AppointmentDescription appointmentDescription \u003d ParserUtil.parseDescription(argMultimap","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" .getValue(PREFIX_APPOINTMENT_DESCRIPTION).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d new AppointmentTime(startTime, endTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" throw new ParseException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" Name patient \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_APPOINTMENT_PATIENT).get());","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" Appointment appointment \u003d new Appointment(patient, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" return new ScheduleCommand(appointment, patient);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":69,"trgao":9}},{"path":"src/main/java/seedu/address/logic/parser/personparser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_ADDRESS,","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" Gender gender \u003d ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" Birthdate birthdate \u003d ParserUtil.parseBirthdate(argMultimap.getValue(PREFIX_BIRTHDATE).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" Person person \u003d new Person(name, gender, birthdate, phone, email, address, tagList);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"licongshen12":1,"-":46,"trgao":18}},{"path":"src/main/java/seedu/address/logic/parser/personparser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":1,"-":27,"trgao":3}},{"path":"src/main/java/seedu/address/logic/parser/personparser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_GENDER, PREFIX_BIRTHDATE, PREFIX_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDATE).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" editPersonDescriptor.setBirthdate(ParserUtil.parseBirthdate(argMultimap.getValue(PREFIX_BIRTHDATE).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" if (argMultimap.getValue(PREFIX_GENDER).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" editPersonDescriptor.setGender(ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":2,"-":80,"trgao":17}},{"path":"src/main/java/seedu/address/logic/parser/personparser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.parser.Parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"licongshen12":1,"-":31,"trgao":2}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.UniqueAppointmentList;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" private final UniqueAppointmentList appointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" appointments \u003d new UniqueAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" * Creates an AddressBook using the Persons and Appointments in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" * Replaces the contents of the person list with {@code appointments}.","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" this.appointments.setAppointments(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" setAppointments(newData.getAppointmentList());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" * Returns true if a person with the same name as {@code name} exists in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" return persons.contains(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" //// appointment-level operations","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" return appointments.contains(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" * The appointment must not already exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment a) {","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" appointments.add(a);","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":" * Replaces the given appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"trgao"},"content":" * another existing appointment in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" requireNonNull(editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" appointments.setAppointment(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" public void removeAppointment(Appointment key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":" appointments.remove(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"trgao"},"content":" .add(\"appointments\", appointments)","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" return appointments.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointments.equals(otherAddressBook.appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" return Objects.hash(persons, appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":127,"trgao":71}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" Predicate\u003cAppointment\u003e PREDICATE_SHOW_ALL_APPOINTMENTS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" * Returns true if a person with the same name as {@code person} exists in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" boolean hasPerson(Name name);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" boolean hasAppointment(Appointment appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" * Deletes the given appointment.","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" * The appointment must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" void deleteAppointment(Appointment target);","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" * Adds the given appointment.","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" * {@code appointment} must not already exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" * Replaces the given appointment {@code target} with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as another existing","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" * appointment in the address book.","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" void setAppointment(Appointment target, Appointment editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" /** Returns an unmodifiable view of the filtered appointment list */","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" * Updates the filter of the filtered appointment list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"trgao"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"billieboy7":3,"-":87,"trgao":41}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private final FilteredList\u003cAppointment\u003e filteredAppointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" filteredAppointments \u003d new FilteredList\u003c\u003e(this.addressBook.getAppointmentList());","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Person \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" return addressBook.hasPerson(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Appointment \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" return addressBook.hasAppointment(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":" addressBook.removeAppointment(target);","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"trgao"},"content":" addressBook.addAppointment(appointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"billieboy7"},"content":" updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"trgao"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" addressBook.setAppointment(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"trgao"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Appointment List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the list of {@code Appointment} backed by the internal list of","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":" return filteredAppointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":" filteredAppointments.setPredicate(predicate);","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"trgao"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"trgao"},"content":" \u0026\u0026 filteredAppointments.equals(otherModelManager.filteredAppointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"billieboy7":1,"-":147,"trgao":56}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * Returns an unmodifiable view of the appointments list.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" * This list will not contain any duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" ObservableList\u003cAppointment\u003e getAppointmentList();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":17,"trgao":7}},{"path":"src/main/java/seedu/address/model/appointment/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" * Represents an Appointment in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":" * Guarantees: details are present and not null, field values are validated.","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"public class Appointment {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" private final AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" private final AppointmentDescription appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" private final Name patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":" private Person patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" * Constructs an {@code Appointment}.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" * @param patientName The name of the patient associated with the appointment.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" * @param appointmentTime The scheduled time for the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" * @param appointmentDescription The description for the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" public Appointment(","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" Name patientName, AppointmentTime appointmentTime, AppointmentDescription appointmentDescription) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" requireAllNonNull(patientName, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":" this.patient \u003d null;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" this.appointmentDescription \u003d appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" * Constructs an {@code Appointment}.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" * @param patient The patient associated with the appointment.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" * @param appointmentTime The scheduled time for the appointment.","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" * @param appointmentDescription The description for the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public Appointment(Person patient, AppointmentTime appointmentTime, AppointmentDescription appointmentDescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" requireAllNonNull(appointmentTime);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patient.getName();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" this.appointmentDescription \u003d appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" * Used in the AddAppointmentCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" * @param patient The patient associated with the appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" public void setPatient(Person patient) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public Name getPatientName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" return this.patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"licongshen12"},"content":" public AppointmentTime getAppointmentTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"licongshen12"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime.getStart();","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"licongshen12"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"licongshen12"},"content":" return this.appointmentTime.getEnd();","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" public AppointmentDescription getAppointmentDescription() {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" return this.appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"licongshen12"},"content":" public Person getPerson() {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"licongshen12"},"content":" return this.patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" * Returns true if both appointments have the same time.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"kwangthiag"},"content":" * This defines a weaker notion of equality between two appointments.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"kwangthiag"},"content":" public boolean isSameAppointment(Appointment otherAppointment) {","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"kwangthiag"},"content":" if (otherAppointment \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"kwangthiag"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"kwangthiag"},"content":" return otherAppointment !\u003d null","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"kwangthiag"},"content":" \u0026\u0026 otherAppointment.getAppointmentTime().equals(getAppointmentTime());","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" if (!(other instanceof Appointment)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" Appointment otherAppointment \u003d (Appointment) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" return patient.equals(otherAppointment.patient)","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointmentTime.equals(otherAppointment.appointmentTime)","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" \u0026\u0026 appointmentDescription.equals(otherAppointment.appointmentDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"trgao"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"trgao"},"content":" return Objects.hash(patient, appointmentTime, appointmentDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"trgao"},"content":" .add(\"patient\", patient)","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"trgao"},"content":" .add(\"appointmentTime\", appointmentTime)","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" .add(\"description\", appointmentDescription)","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"kwangthiag":11,"billieboy7":8,"licongshen12":44,"trgao":65}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":" * Represents an Appointment\u0027s description in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentDescription(String)}","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"public class AppointmentDescription {","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" \"Description should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" * Constructor method","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" * @param description description to be included in the appointment","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public AppointmentDescription(String description) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" requireNonNull(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" this.value \u003d description;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" * Checks for validity of characters in appointment description","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" * @param appointmentDescription string text by user input","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" * @return whether the string only contains alphanumeric characters, numbers and hyphens","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" public static boolean isValidAppointmentDescription(String appointmentDescription) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" return appointmentDescription.matches(\"^[a-zA-Z0-9 -]+$\");","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" // if this and the other are the same object","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" if (other instanceof AppointmentDescription) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" AppointmentDescription otherAppointmentDescription \u003d (AppointmentDescription) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" if (this.value.equals(otherAppointmentDescription.value)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" return this.value.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" return this.value;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"billieboy7":50,"trgao":9}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" * Represents the time slot for an appointment in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentTime(LocalDateTime, LocalDateTime)}","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"public class AppointmentTime {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":" \"1. AppointmentTime start must be before AppointmentTime end.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" + \"2. AppointmentTime must also not overlap with an existing Appointment\u0027s time.\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" + \"* Note: Date indicated must be YYYY/MM/DD\"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":" + \"(i.e. 2th Jan 2020 must be input as 02/01/2021 instead of 2020-01-01).\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" + \"* Note: Time indicated must be XX:XX (i.e. 9AM must be input as 09:00 instead of 9:00).\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" + \"Eg: start\u003d13/10/2023 09:00 end\u003d13/10/2023 12:00\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":" // Data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":" private final LocalDateTime start;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"licongshen12"},"content":" private final LocalDateTime end;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"licongshen12"},"content":" * Constructs an {@code AppointmentTime}.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":" * @param start Start time of the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"licongshen12"},"content":" * @param end End time of the appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"licongshen12"},"content":" public AppointmentTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"licongshen12"},"content":" checkArgument(isValidAppointmentTime(start, end), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"licongshen12"},"content":" this.start \u003d start;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"licongshen12"},"content":" this.end \u003d end;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public LocalDateTime getStart() {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return start;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" public LocalDateTime getEnd() {","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" return end;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"licongshen12"},"content":" * Returns true if a given start and end time form a valid appointment time.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"licongshen12"},"content":" public static boolean isValidAppointmentTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"licongshen12"},"content":" requireAllNonNull(start, end);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" return !start.isAfter(end) \u0026\u0026 !start.isEqual(end);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"licongshen12"},"content":" * Returns true if the provided appointment does not overlap with any appointment in the appointment list.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"licongshen12"},"content":" * @param appointmentList Current list of appointments to check against.","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"licongshen12"},"content":" * @param appointment The appointment to check.","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"licongshen12"},"content":" * @return True if the appointment is valid, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" public static Boolean isValidTimeSlot(List\u003cAppointment\u003e appointmentList, Appointment appointment) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" LocalDateTime start \u003d appointment.getStartTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" LocalDateTime end \u003d appointment.getEndTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"licongshen12"},"content":" for (Appointment currentAppointment : appointmentList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" LocalDateTime currentStart \u003d currentAppointment.getStartTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" LocalDateTime currentEnd \u003d currentAppointment.getEndTime();","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" if (start.isEqual(currentStart) || end.isEqual(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" || start.isAfter(currentStart) \u0026\u0026 start.isBefore(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" || end.isAfter(currentStart) \u0026\u0026 end.isBefore(currentEnd)","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" || start.isBefore(currentStart) \u0026\u0026 end.isAfter(currentEnd)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"licongshen12"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"licongshen12"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"licongshen12"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":" || (other instanceof AppointmentTime // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 getStart().isEqual(((AppointmentTime) other).getStart()) // check same data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 getEnd().isEqual(((AppointmentTime) other).getEnd()));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":" return Objects.hash(start, end);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"licongshen12"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" return \"START: \" + dateTimeToString(start) + \"\\nEND: \" + dateTimeToString(end);","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":74,"trgao":28}},{"path":"src/main/java/seedu/address/model/appointment/UniqueAppointmentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.exceptions.AppointmentNotFoundException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.exceptions.DuplicateAppointmentException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":" * A list of appointments that enforces uniqueness between its elements.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":" * The implementation ensures that there are no duplicate appointments","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":" * in the list. An appointment is considered unique based on its identity.","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"public class UniqueAppointmentList implements Iterable\u003cAppointment\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":" private ObservableList\u003cAppointment\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":" private final ObservableList\u003cAppointment\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" * Returns true if the list contains an equivalent appointment as the given argument.","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" public boolean contains(Appointment toCheck) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" * Adds an appointment to the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" * The appointment must not already exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public void add(Appointment toAdd) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" * Replaces the appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * another existing appointment in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" if (!target.equals(editedAppointment) \u0026\u0026 contains(editedAppointment)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" internalList.set(index, editedAppointment);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" * Removes the equivalent appointment from the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" * The person must exist in the list.","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" public void remove(Appointment toRemove) {","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" public void setAppointments(UniqueAppointmentList replacement) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" * Replaces the contents of this list with {@code appointments}.","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" requireAllNonNull(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" if (!appointmentsAreUnique(appointments)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" internalList.setAll(appointments);","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" public Iterator\u003cAppointment\u003e iterator() {","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"licongshen12"},"content":" * Returns true if both lists have the same appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"licongshen12"},"content":" * @param other The object to be compared with.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"licongshen12"},"content":" * @return true if both lists have the same appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"licongshen12"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"licongshen12"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"licongshen12"},"content":" || (other instanceof UniqueAppointmentList // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"licongshen12"},"content":" \u0026\u0026 internalList.equals(((UniqueAppointmentList) other).internalList));","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"licongshen12"},"content":" * Returns the hash code value for this list.","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"licongshen12"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"licongshen12"},"content":" * @return the hash code value for this list.","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"licongshen12"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" * Returns true if {@code appointments} contains only unique appointments.","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" private boolean appointmentsAreUnique(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":" for (int i \u003d 0; i \u003c appointments.size() - 1; i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":" for (int j \u003d i + 1; j \u003c appointments.size(); j++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"trgao"},"content":" if (appointments.get(i).equals(appointments.get(j))) {","lastModifiedDate":"2023-10-14"},{"lineNumber":142,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":37,"trgao":111}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":" * Signals that the operation is unable to find the specified appointment.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"public class AppointmentNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":8}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"licongshen12"},"content":" * Signals that the operation would result in duplicate Appointments.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"licongshen12"},"content":" * Duplicate Appointments are considered appointments that have the same identity.","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"public class DuplicateAppointmentException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"licongshen12"},"content":" * Constructs a new {@code DuplicateAppointmentException} with the default detail message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":" public DuplicateAppointmentException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":" super(\"Operation results in duplicate appointments\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"licongshen12":14}},{"path":"src/main/java/seedu/address/model/person/Birthdate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" * Represents a Person\u0027s birthdate in the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidBirthdate(String)}","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"public class Birthdate {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Birthdates should be of the form YYYY/MM/DD\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" public static final DateTimeFormatter FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * Constructs an {@code Birthdate}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * @param birthdate A valid birthdate.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public Birthdate(String birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" requireNonNull(birthdate);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" value \u003d birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Returns if a given string is a valid birthdate.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static boolean isValidBirthdate(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" LocalDate.parse(test, FORMAT);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return value;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" || (other instanceof Birthdate // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" \u0026\u0026 value.equals(((Birthdate) other).value)); // state check","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"trgao":58}},{"path":"src/main/java/seedu/address/model/person/Gender.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"public class Gender {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Gender should be either MALE or FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" * The first character of the birthdate must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" public static final String VALIDATION_REGEX \u003d \"MALE|FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public final String value;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * Constructs a {@code Gender}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * @param gender A valid gender.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public Gender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" requireNonNull(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" value \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" * Returns if a given string is a valid gender.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static boolean isValidGender(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" return value;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" || (other instanceof Gender // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" \u0026\u0026 value.equals(((Gender) other).value)); // state check","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"trgao":53}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" private final Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" private final Birthdate birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public Person(Name name, Gender gender, Birthdate birthdate, Phone phone, Email email,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" public Gender getGender() {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" return gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" public Birthdate getBirthdate() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" return birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" \u0026\u0026 gender.equals(otherPerson.gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"trgao"},"content":" \u0026\u0026 birthdate.equals(otherPerson.birthdate)","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" return Objects.hash(name, gender, birthdate, phone, email, address, tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"trgao"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" .add(\"birthdate\", birthdate)","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":115,"trgao":19}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" * Returns true if the list contains a person with the same name as the given argument.","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" public boolean contains(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" return internalList.stream().anyMatch(person -\u003e person.getName().equals(name));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":150,"trgao":8}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" * Represents an Illness Tag in the records.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Illness names should be alphanumeric\";","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":60,"trgao":2}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Alex Yeoh\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" getTagSet(\"fever\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Bernice Yu\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" getTagSet(\"flu\", \"cough\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Gender(\"FEMALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" getTagSet(\"covid\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"David Li\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" getTagSet(\"bronchitis\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" getTagSet(\"asthma\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Gender(\"MALE\"), new Birthdate(\"2000/10/20\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" getTagSet(\"cancer\"))","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"-":48,"trgao":20}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_DOES_NOT_EXIST;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" * Jackson-friendly version of {@link Appointment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"class JsonAdaptedAppointment {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final String patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" private final String start;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private final String end;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private final String description;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" * Constructs a {@code JsonAdaptedAppointment} with the given appointment details.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" @JsonCreator","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" public JsonAdaptedAppointment(@JsonProperty(\"patientName\") String patientName,","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"start\") String start,","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"end\") String end,","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"description\") String description) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" this.start \u003d start;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" * Converts a given {@code Appointment} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" public JsonAdaptedAppointment(Appointment source) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" patientName \u003d String.valueOf(source.getPatientName());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" start \u003d dateTimeToString(source.getStartTime());","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" end \u003d dateTimeToString(source.getEndTime());","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" description \u003d source.getAppointmentDescription().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" * Converts this Jackson-friendly adapted appointment object into the model\u0027s {@code Appointment} object.","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted appointment.","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" public Appointment toModelType(AddressBook addressBook) throws IllegalValueException {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" if (patientName \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" if (!Name.isValidName(patientName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" if (!addressBook.hasPerson(new Name(patientName))) {","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(MESSAGE_PATIENT_DOES_NOT_EXIST);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" final Person patient \u003d addressBook","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" .getPersonList().stream().filter(person -\u003e person.getName().fullName.equals(patientName))","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" .collect(Collectors.toList()).get(0);","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" if (start \u003d\u003d null || end \u003d\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentTime.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" startDateTime \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" endDateTime \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" if (!AppointmentTime.isValidAppointmentTime(startDateTime, endDateTime)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" final AppointmentTime modelAppointmentTime \u003d new AppointmentTime(startDateTime, endDateTime);","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" if (!AppointmentDescription.isValidAppointmentDescription(description)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(AppointmentDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" final AppointmentDescription modelAppointmentDescription \u003d new AppointmentDescription(description);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" return new Appointment(","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" patient, modelAppointmentTime, modelAppointmentDescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"trgao":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private final String birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private final String gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"gender\") String gender,","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"birthdate\") String birthdate, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" this.gender \u003d gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d birthdate;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" gender \u003d source.getGender().value;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" birthdate \u003d source.getBirthdate().value;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" if (gender \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" if (!Gender.isValidGender(gender)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" final Gender modelGender \u003d new Gender(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" if (birthdate \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthdate.class.getSimpleName()));","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" if (!Birthdate.isValidBirthdate(birthdate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" final Birthdate modelBirthdate \u003d new Birthdate(birthdate);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" return new Person(modelName, modelGender, modelBirthdate, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":106,"trgao":29}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public static final String MESSAGE_DUPLICATE_APPOINTMENT \u003d \"Appointments list contains duplicate appointment(s).\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private final List\u003cJsonAdaptedAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons and appointments.","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @JsonProperty(\"appointments\") List\u003cJsonAdaptedAppointment\u003e appointments) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" this.appointments.addAll(appointments);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" appointments.addAll(","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" source.getAppointmentList().stream().map(JsonAdaptedAppointment::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" for (JsonAdaptedAppointment jsonAdaptedAppointment : appointments) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" Appointment appointment \u003d jsonAdaptedAppointment.toModelType(addressBook);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" if (addressBook.hasAppointment(appointment)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_APPOINTMENT);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" addressBook.addAppointment(appointment);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":58,"trgao":18}},{"path":"src/main/java/seedu/address/ui/AppointmentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"public class AppointmentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" private static final String FXML \u003d \"AppointmentListCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public final Appointment appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private Label patientName;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private Label appointmentTime;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private Label appointmentDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" public AppointmentCard(Appointment appointment, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" patientName.setText(\"PATIENT: \" + appointment.getPatientName());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" appointmentTime.setText(appointment.getAppointmentTime().toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" appointmentDescription.setText(appointment.getAppointmentDescription().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":48}},{"path":"src/main/java/seedu/address/ui/AppointmentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"public class AppointmentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" private static final String FXML \u003d \"AppointmentListPanel.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AppointmentListPanel.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" private ListView\u003cAppointment\u003e appointmentListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" public AppointmentListPanel(ObservableList\u003cAppointment\u003e appointmentList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" appointmentListView.setItems(appointmentList);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" appointmentListView.setCellFactory(listView -\u003e new AppointmentListViewCell());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" class AppointmentListViewCell extends ListCell\u003cAppointment\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" protected void updateItem(Appointment appointment, boolean empty) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" super.updateItem(appointment, empty);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" if (empty || appointment \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" setText(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" setGraphic(new AppointmentCard(appointment, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":49}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t08-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":101,"trgao":1}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private AppointmentListPanel appointmentListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" private StackPane appointmentListPanelPlaceholder;","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"trgao"},"content":" appointmentListPanel \u003d new AppointmentListPanel(logic.getFilteredAppointmentList());","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"trgao"},"content":" appointmentListPanelPlaceholder.getChildren().add(appointmentListPanel.getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"trgao":7}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" private Label gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" private Label birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" private Label address;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" birthdate.setText(person.getBirthdate().value);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" gender.setText(person.getGender().toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":57,"trgao":8}},{"path":"src/main/resources/view/AppointmentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentDescription\" text\u003d\"\\$appointmentDescription\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"patientName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$patientName\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$appointmentTime\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":33}},{"path":"src/main/resources/view/AppointmentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":" \u003cListView fx:id\u003d\"appointmentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"trgao":8}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":".header_label {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"trgao"},"content":" -fx-font-size: 25px;","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"trgao"},"content":" -fx-text-fill: #FFFFFF;","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"-":352,"trgao":6}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" title\u003d\"MediFlowR\" minWidth\u003d\"700\" minHeight\u003d\"700\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" \u003cHBox minWidth\u003d\"700\" prefWidth\u003d\"700\" prefHeight\u003d\"10000\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"350\" prefWidth\u003d\"350\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"patientsLabel\" text\u003d\"Patients\" styleClass\u003d\"header_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" \u003cVBox fx:id\u003d\"appointmentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"350\" prefWidth\u003d\"350\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"appointmentsLabel\" text\u003d\"Appointments\" styleClass\u003d\"header_label\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" \u003cStackPane fx:id\u003d\"appointmentListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" minHeight\u003d\"150\" prefHeight\u003d\"150\" maxHeight\u003d\"150\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":51,"trgao":21}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"gender\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$gender\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" \u003cLabel fx:id\u003d\"birthdate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$birthdate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"trgao":2}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"trgao"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + GENDER_DESC_AMY + BIRTHDATE_DESC_AMY","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"trgao"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"licongshen12":2,"-":171,"trgao":4}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" public static final String VALID_GENDER_AMY \u003d \"FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" public static final String VALID_GENDER_BOB \u003d \"MALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public static final String VALID_BIRTHDATE_AMY \u003d \"2001/10/20\";","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" public static final String VALID_BIRTHDATE_BOB \u003d \"2002/10/21\";","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" public static final String VALID_TAG_FEVER \u003d \"fever\";","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" public static final String VALID_TAG_FLU \u003d \"flu\";","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public static final String GENDER_DESC_AMY \u003d \" \" + PREFIX_GENDER + VALID_GENDER_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" public static final String GENDER_DESC_BOB \u003d \" \" + PREFIX_GENDER + VALID_GENDER_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" public static final String BIRTHDATE_DESC_AMY \u003d \" \" + PREFIX_BIRTHDATE + VALID_BIRTHDATE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" public static final String BIRTHDATE_DESC_BOB \u003d \" \" + PREFIX_BIRTHDATE + VALID_BIRTHDATE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" public static final String INVALID_GENDER_DESC \u003d \" \" + PREFIX_GENDER + \"TEST\"; // only MALE or FEMALE allowed","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" public static final String INVALID_BIRTHDATE_DESC \u003d \" \" + PREFIX_BIRTHDATE + \"10-20-2001\"; // only MM/DD/YYYY format","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER, VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":143,"author":{"gitId":"kwangthiag"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-24"},{"lineNumber":144,"author":{"gitId":"kwangthiag"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2023-10-24"},{"lineNumber":145,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":146,"author":{"gitId":"kwangthiag"},"content":" public static void showAppointmentAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-24"},{"lineNumber":147,"author":{"gitId":"kwangthiag"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredAppointmentList().size());","lastModifiedDate":"2023-10-24"},{"lineNumber":148,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":149,"author":{"gitId":"kwangthiag"},"content":" Appointment appointment \u003d model.getFilteredAppointmentList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":150,"author":{"gitId":"kwangthiag"},"content":" model.updateFilteredAppointmentList(x -\u003e x.isSameAppointment(appointment));","lastModifiedDate":"2023-10-24"},{"lineNumber":151,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":152,"author":{"gitId":"kwangthiag"},"content":" assertEquals(1, model.getFilteredAppointmentList().size());","lastModifiedDate":"2023-10-24"},{"lineNumber":153,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":154,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"kwangthiag":14,"licongshen12":1,"-":122,"trgao":18}},{"path":"src/test/java/seedu/address/logic/commands/appointmentcommands/AppointmentCommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.time.DayOfWeek;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.time.temporal.TemporalAdjusters;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" * The AppointmentCommandTestUtil class provides utility constants for testing appointment-related commands.","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" * It includes various date and time strings, as well as a valid description for creating test data.","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"public class AppointmentCommandTestUtil {","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" public static final DateTimeFormatter DATE_TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm\");","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" public static final DayOfWeek DAY_OF_WEEK \u003d LocalDateTime.now().getDayOfWeek();","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" // Current date and date 4 hours later","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public static final String CURRENT_DATE \u003d LocalDateTime.now().format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" public static final String CURRENT_DATE_PLUS_FOUR_HOURS \u003d LocalDateTime.now().plusHours(4)","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" .format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" // Date next week and 4 hours after that","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" public static final String NEXT_WEEK_MONDAY \u003d DATE_TIME_FORMATTER.format(LocalDateTime.now()","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" .with(TemporalAdjusters.next(DayOfWeek.MONDAY))","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" .withHour(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" .withMinute(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" .withSecond(0)","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" .withNano(0));","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_START_ONE \u003d \"2023/08/03 10:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_END_ONE \u003d \"2023/08/03 13:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_START_TWO \u003d \"2023/09/03 10:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_END_TWO \u003d \"2023/09/03 11:00\";","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" public static final String VALID_DESCRIPTION \u003d \"Follow Up Blood Test\";","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"billieboy7":42}},{"path":"src/test/java/seedu/address/logic/commands/appointmentcommands/RescheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kwangthiag"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"kwangthiag"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"kwangthiag"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAppointmentAtIndex;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.testutil.TypicalAppointments.NOCLASHAPPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAddressBook;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_APPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_APPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.testutil.AppointmentTimeBuilder;","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"kwangthiag"},"content":"public class RescheduleCommandTest {","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"kwangthiag"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"kwangthiag"},"content":" public void execute_validIndexValidTimeUnfilteredList_success() {","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"kwangthiag"},"content":" Appointment newAppointment \u003d NOCLASHAPPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime newAppointmentTime \u003d new AppointmentTimeBuilder(newAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"kwangthiag"},"content":" Appointment appointmentToReschedule \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_FIRST_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d new Appointment(appointmentToReschedule.getPerson(),","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"kwangthiag"},"content":" newAppointment.getAppointmentTime(), appointmentToReschedule.getAppointmentDescription());","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, newAppointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"kwangthiag"},"content":" String expectedMessage \u003d String.format(RescheduleCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"kwangthiag"},"content":" Messages.format(rescheduledAppointment));","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"kwangthiag"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"kwangthiag"},"content":" expectedModel.setAppointment(expectedModel.getFilteredAppointmentList().get(0), rescheduledAppointment);","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"kwangthiag"},"content":" assertCommandSuccess(rescheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"kwangthiag"},"content":" public void execute_invalidTimeUnfilteredList_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_SECOND_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime \u003d new AppointmentTimeBuilder(rescheduledAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, appointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"kwangthiag"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_DUPLICATE_TIMESLOT,","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"kwangthiag"},"content":" Messages.format(rescheduledAppointment));","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"kwangthiag"},"content":" assertCommandFailure(rescheduleCommand, model, expectedMessage);","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"kwangthiag"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"kwangthiag"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredAppointmentList().size() + 1);","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d NOCLASHAPPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime \u003d new AppointmentTimeBuilder(rescheduledAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(outOfBoundIndex, appointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"kwangthiag"},"content":" assertCommandFailure(rescheduleCommand, model, RescheduleCommand.MESSAGE_NO_APPOINTMENT_FOUND);","lastModifiedDate":"2023-10-24"},{"lineNumber":69,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"kwangthiag"},"content":" public void execute_validIndexValidTimeFilteredList_success() {","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"kwangthiag"},"content":" showAppointmentAtIndex(model, INDEX_SECOND_APPOINTMENT);","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"kwangthiag"},"content":" Appointment newAppointment \u003d NOCLASHAPPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":75,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime newAppointmentTime \u003d new AppointmentTimeBuilder(newAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":76,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":77,"author":{"gitId":"kwangthiag"},"content":" Appointment appointmentToReschedule \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_FIRST_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d new Appointment(appointmentToReschedule.getPerson(),","lastModifiedDate":"2023-10-24"},{"lineNumber":80,"author":{"gitId":"kwangthiag"},"content":" newAppointment.getAppointmentTime(), appointmentToReschedule.getAppointmentDescription());","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, newAppointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"kwangthiag"},"content":" String expectedMessage \u003d String.format(RescheduleCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"kwangthiag"},"content":" Messages.format(rescheduledAppointment));","lastModifiedDate":"2023-10-24"},{"lineNumber":84,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"kwangthiag"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"kwangthiag"},"content":" expectedModel.setAppointment(expectedModel.getFilteredAppointmentList().get(1), rescheduledAppointment);","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"kwangthiag"},"content":" assertCommandSuccess(rescheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":91,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":92,"author":{"gitId":"kwangthiag"},"content":" public void execute_invalidTimeFilteredList_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_SECOND_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":95,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime \u003d new AppointmentTimeBuilder(rescheduledAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"kwangthiag"},"content":" showAppointmentAtIndex(model, INDEX_FIRST_APPOINTMENT);","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, appointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":99,"author":{"gitId":"kwangthiag"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_DUPLICATE_TIMESLOT,","lastModifiedDate":"2023-10-24"},{"lineNumber":100,"author":{"gitId":"kwangthiag"},"content":" Messages.format(rescheduledAppointment));","lastModifiedDate":"2023-10-24"},{"lineNumber":101,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":102,"author":{"gitId":"kwangthiag"},"content":" assertCommandFailure(rescheduleCommand, model, expectedMessage);","lastModifiedDate":"2023-10-24"},{"lineNumber":103,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"kwangthiag"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"kwangthiag"},"content":" showAppointmentAtIndex(model, INDEX_FIRST_APPOINTMENT);","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"kwangthiag"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredAppointmentList().size() + 1);","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"kwangthiag"},"content":" Appointment rescheduledAppointment \u003d NOCLASHAPPOINTMENT;","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime \u003d new AppointmentTimeBuilder(rescheduledAppointment).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleCommand \u003d new RescheduleCommand(outOfBoundIndex, appointmentTime);","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"kwangthiag"},"content":" assertCommandFailure(rescheduleCommand, model, RescheduleCommand.MESSAGE_NO_APPOINTMENT_FOUND);","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":115,"author":{"gitId":"kwangthiag"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":116,"author":{"gitId":"kwangthiag"},"content":" public void equals() {","lastModifiedDate":"2023-10-24"},{"lineNumber":117,"author":{"gitId":"kwangthiag"},"content":" Appointment appointment1 \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":118,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_FIRST_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":119,"author":{"gitId":"kwangthiag"},"content":" Appointment appointment2 \u003d model.getFilteredAppointmentList()","lastModifiedDate":"2023-10-24"},{"lineNumber":120,"author":{"gitId":"kwangthiag"},"content":" .get(INDEX_SECOND_APPOINTMENT.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":121,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":122,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime1 \u003d appointment1.getAppointmentTime();","lastModifiedDate":"2023-10-24"},{"lineNumber":123,"author":{"gitId":"kwangthiag"},"content":" AppointmentTime appointmentTime2 \u003d appointment2.getAppointmentTime();","lastModifiedDate":"2023-10-24"},{"lineNumber":124,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":125,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleFirstCommand \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, appointmentTime1);","lastModifiedDate":"2023-10-24"},{"lineNumber":126,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleSecondCommand \u003d new RescheduleCommand(INDEX_SECOND_APPOINTMENT, appointmentTime2);","lastModifiedDate":"2023-10-24"},{"lineNumber":127,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":128,"author":{"gitId":"kwangthiag"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-24"},{"lineNumber":129,"author":{"gitId":"kwangthiag"},"content":" assertTrue(rescheduleFirstCommand.equals(rescheduleFirstCommand));","lastModifiedDate":"2023-10-24"},{"lineNumber":130,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":131,"author":{"gitId":"kwangthiag"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-24"},{"lineNumber":132,"author":{"gitId":"kwangthiag"},"content":" RescheduleCommand rescheduleFirstCommandCopy \u003d new RescheduleCommand(INDEX_FIRST_APPOINTMENT, appointmentTime1);","lastModifiedDate":"2023-10-24"},{"lineNumber":133,"author":{"gitId":"kwangthiag"},"content":" assertTrue(rescheduleFirstCommand.equals(rescheduleFirstCommandCopy));","lastModifiedDate":"2023-10-24"},{"lineNumber":134,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":135,"author":{"gitId":"kwangthiag"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":136,"author":{"gitId":"kwangthiag"},"content":" assertFalse(rescheduleFirstCommand.equals(1));","lastModifiedDate":"2023-10-24"},{"lineNumber":137,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":138,"author":{"gitId":"kwangthiag"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":139,"author":{"gitId":"kwangthiag"},"content":" assertFalse(rescheduleFirstCommand.equals(null));","lastModifiedDate":"2023-10-24"},{"lineNumber":140,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":141,"author":{"gitId":"kwangthiag"},"content":" // different appointment -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":142,"author":{"gitId":"kwangthiag"},"content":" assertFalse(rescheduleFirstCommand.equals(rescheduleSecondCommand));","lastModifiedDate":"2023-10-24"},{"lineNumber":143,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":144,"author":{"gitId":"kwangthiag"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"kwangthiag":144}},{"path":"src/test/java/seedu/address/logic/commands/appointmentcommands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"licongshen12"},"content":"package seedu.address.logic.commands.appointmentcommands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"licongshen12"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"licongshen12"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_TWO;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_TWO;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"licongshen12"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"licongshen12"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"licongshen12"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"import seedu.address.testutil.AppointmentBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"licongshen12"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"licongshen12"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"licongshen12"},"content":" public void constructor_nullAppointment_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e new ScheduleCommand(null, null));","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" // public void execute_appointmentAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" // ModelStubAcceptingAppointmentAdded modelStub \u003d new ModelStubAcceptingAppointmentAdded();","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" // Appointment validAppointment \u003d new AppointmentBuilder().build();","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" // Name testName \u003d new Name(\"test\");","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" // CommandResult commandResult \u003d new ScheduleCommand(validAppointment, testName).execute(modelStub);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" //","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" // assertEquals(String.format(ScheduleCommand.MESSAGE_SUCCESS, validAppointment),","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" // commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" // assertEquals(Arrays.asList(validAppointment), modelStub.appointments);","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" Name testName1 \u003d new Name(\"Test Name1\");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" Name testName2 \u003d new Name(\"Test Name2\");","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" Appointment appointment1 \u003d new AppointmentBuilder().withAppointmentTime(VALID_START_ONE, VALID_END_ONE).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" Appointment appointment2 \u003d new AppointmentBuilder().withAppointmentTime(VALID_START_TWO, VALID_END_TWO).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommand1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommand2 \u003d new ScheduleCommand(appointment2, testName2);","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommandSameTimeDifferentName1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand scheduleCommandSameTimeDifferentName2 \u003d new ScheduleCommand(appointment1, testName2);","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" // compare with different type - false","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(\"Test\"));","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" // null test - false","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" // compares same appointment timing but different names (Patients) - false","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommandSameTimeDifferentName1.equals(scheduleCommandSameTimeDifferentName2));","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" // compares AddCommand1 with itself - true","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" assertTrue(scheduleCommand1.equals(scheduleCommand1));","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" assertEquals(scheduleCommand2, scheduleCommand2);","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" // compares 2 different Schedule Commands - false","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":" assertFalse(scheduleCommand1.equals(scheduleCommand2));","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" // compares 2 different objects with same details - true","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":" ScheduleCommand copyOfScheduleCommand1 \u003d new ScheduleCommand(appointment1, testName1);","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" assertTrue(scheduleCommand1.equals(copyOfScheduleCommand1));","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"licongshen12"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"licongshen12"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"licongshen12"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"licongshen12"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"licongshen12"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"licongshen12"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"licongshen12"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"licongshen12"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"licongshen12"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"licongshen12"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"licongshen12"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"licongshen12"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"licongshen12"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"licongshen12"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"licongshen12"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"licongshen12"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"licongshen12"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"licongshen12"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"licongshen12"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"licongshen12"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"licongshen12"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"licongshen12"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"licongshen12"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":196,"author":{"gitId":"licongshen12"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":197,"author":{"gitId":"licongshen12"},"content":" * A Model stub that always accepts the appointment being added.","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"licongshen12"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"licongshen12"},"content":" private class ModelStubAcceptingAppointmentAdded extends ModelStub {","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"licongshen12"},"content":" private final ArrayList\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":202,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":203,"author":{"gitId":"licongshen12"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"licongshen12"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"licongshen12"},"content":" return appointments.stream().anyMatch(appointment::isSameAppointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"licongshen12"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"licongshen12"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"licongshen12"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"licongshen12"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"licongshen12"},"content":" appointments.add(appointment);","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"licongshen12"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":216,"author":{"gitId":"billieboy7"},"content":" * A Model stub containing appointments","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"billieboy7"},"content":" private class ModelStubContainingAppointments extends ModelStub {","lastModifiedDate":"2023-10-21"},{"lineNumber":219,"author":{"gitId":"billieboy7"},"content":" private final Appointment appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":220,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"billieboy7"},"content":" ModelStubContainingAppointments(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":222,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":223,"author":{"gitId":"billieboy7"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":224,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":225,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":226,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":227,"author":{"gitId":"billieboy7"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":228,"author":{"gitId":"billieboy7"},"content":" requireNonNull(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":229,"author":{"gitId":"billieboy7"},"content":" return this.appointment.isSameAppointment(appointment);","lastModifiedDate":"2023-10-21"},{"lineNumber":230,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":231,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":232,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":233,"author":{"gitId":"licongshen12"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"billieboy7":78,"licongshen12":148,"trgao":7}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":47,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"trgao"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" public boolean hasPerson(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"trgao"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"trgao"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"trgao"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":188,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":191,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":192,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":193,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":194,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":195,"author":{"gitId":"trgao"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2023-10-14"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":203,"trgao":39}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":119,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"licongshen12":1,"-":179,"trgao":5}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getName().orElse(null) + \", gender\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getGender().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", birthdate\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" + editPersonDescriptor.getBirthdate().orElse(null) + \", address\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"licongshen12":1,"-":65,"trgao":7}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":90,"trgao":1}},{"path":"src/test/java/seedu/address/logic/commands/personcommands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.commands.personcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":38,"trgao":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.ListCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"licongshen12":6,"-":94,"trgao":2}},{"path":"src/test/java/seedu/address/logic/parser/personparser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDATE_DESC_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BIRTHDATE_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FLU, VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_GENDER, PREFIX_ADDRESS,","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" PREFIX_BIRTHDATE, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":149,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + GENDER_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_AMY + BIRTHDATE_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"trgao"},"content":" // invalid gender","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_GENDER_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"trgao"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-12"},{"lineNumber":198,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"trgao"},"content":" // invalid birthdate","lastModifiedDate":"2023-10-12"},{"lineNumber":202,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":203,"author":{"gitId":"trgao"},"content":" + INVALID_BIRTHDATE_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"trgao"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Birthdate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":214,"author":{"gitId":"trgao"},"content":" + INVALID_TAG_DESC + VALID_TAG_FLU, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + GENDER_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"trgao"},"content":" + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + GENDER_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":222,"author":{"gitId":"trgao"},"content":" + EMAIL_DESC_BOB + BIRTHDATE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"licongshen12":1,"-":174,"trgao":50}},{"path":"src/test/java/seedu/address/logic/parser/personparser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.DeleteCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" assertParseSuccess(parser, \" 1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"licongshen12":1,"-":28,"trgao":4}},{"path":"src/test/java/seedu/address/logic/parser/personparser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" assertParseFailure(parser, \" 1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"trgao"},"content":" assertParseFailure(","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"trgao"},"content":" parser, \" 1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" .withTags(VALID_TAG_FEVER, VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"trgao"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"trgao"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"trgao"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"licongshen12":2,"-":188,"trgao":23}},{"path":"src/test/java/seedu/address/logic/parser/personparser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.logic.parser.personparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.FindCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"licongshen12":1,"-":32,"trgao":1}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" + \", appointments\u003d\" + addressBook.getAppointmentList() + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" private final ObservableList\u003cAppointment\u003e appointments \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"trgao"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"trgao"},"content":" return appointments;","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"-":103,"trgao":13}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"-":131,"trgao":2}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_FEVER).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" + \", gender\u003d\" + ALICE.getGender() + \", birthdate\u003d\" + ALICE.getBirthdate()","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":94,"trgao":8}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains((Person) null));","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER)","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":171,"trgao":4}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedAppointmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.dateTimeToString;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_DOES_NOT_EXIST;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT1;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"trgao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":"public class JsonAdaptedAppointmentTest {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" private static final AddressBook ADDRESS_BOOK \u003d new AddressBookBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":" .withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" private static final String INVALID_PATIENT \u003d \"R@chel\";","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" private static final String NON_EXISTENT_PATIENT \u003d \"Gabriel\";","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private static final String INVALID_START \u003d \"2023-10-10 10:00\";","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" private static final String INVALID_END \u003d \"2023-10-10 11:00\";","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private static final String INVALID_DESCRIPTION \u003d \"!@#!\";","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" private static final String VALID_PATIENT \u003d APPOINTMENT1.getPatientName().fullName;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private static final String VALID_START \u003d dateTimeToString(APPOINTMENT1.getAppointmentTime().getStart());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" private static final String VALID_END \u003d dateTimeToString(APPOINTMENT1.getAppointmentTime().getEnd());","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" private static final String VALID_DESCRIPTION \u003d APPOINTMENT1.getAppointmentDescription().value;","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"trgao"},"content":" public void toModelType_validAppointmentDetails_returnsAppointment() throws Exception {","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d new JsonAdaptedAppointment(APPOINTMENT1);","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" assertEquals(APPOINTMENT1, appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidPatient_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(INVALID_PATIENT, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" String expectedMessage1 \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage1, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(NON_EXISTENT_PATIENT, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class,","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" MESSAGE_PATIENT_DOES_NOT_EXIST, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" public void toModelType_nullPatient_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(null, VALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, INVALID_START, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d AppointmentTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, INVALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" public void toModelType_nullTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment1 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, null, VALID_END, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentTime.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment1.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment2 \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, null, VALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment2.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, VALID_END, INVALID_DESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d AppointmentDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"trgao"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"trgao"},"content":" JsonAdaptedAppointment appointment \u003d new JsonAdaptedAppointment(VALID_PATIENT, VALID_START, VALID_END, null);","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"trgao"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, AppointmentDescription.class.getSimpleName());","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, () -\u003e appointment.toModelType(ADDRESS_BOOK));","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"trgao":105}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":" private static final String INVALID_BIRTHDATE \u003d \"12-20-2001\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" private static final String INVALID_GENDER \u003d \"male\";","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" private static final String VALID_BIRTHDATE \u003d BENSON.getBirthdate().toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" private static final String VALID_GENDER \u003d BENSON.getGender().toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidGender_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d Gender.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" public void toModelType_nullGender_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName());","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" public void toModelType_invalidBirthdate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, INVALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d Birthdate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"trgao"},"content":" public void toModelType_nullBirthdate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, null, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"trgao"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthdate.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, INVALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"trgao"},"content":" null, VALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"trgao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, null, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"trgao"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_BIRTHDATE, VALID_PHONE,","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"trgao"},"content":" VALID_EMAIL, VALID_ADDRESS, invalidTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"trgao":49}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT3;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalAppointments.APPOINTMENT4;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" original.addAppointment(APPOINTMENT3);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" original.removeAppointment(APPOINTMENT3);","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"trgao"},"content":" original.addAppointment(APPOINTMENT4);","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"trgao":5}},{"path":"src/test/java/seedu/address/testutil/AppointmentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_DESCRIPTION;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentDescription;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" * Apartment builder helps to build test appointment objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"public class AppointmentBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" private static final AppointmentTime DEFAULT_TIME \u003d new AppointmentTimeBuilder().build();","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" private static final Person DEFAULT_PATIENT \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_DESCRIPTION \u003d VALID_DESCRIPTION;","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" // Identity fields","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" private AppointmentTime appointmentTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" private Person patient;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" // private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" private AppointmentDescription appointmentDescription;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentBuilder} with default settings.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d DEFAULT_TIME;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" patient \u003d DEFAULT_PATIENT;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" appointmentDescription \u003d new AppointmentDescription(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentBuilder} with data provided by {@code appointment}.","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder(Appointment appointment) {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" appointmentTime \u003d appointment.getAppointmentTime();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" patient \u003d appointment.getPerson();","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" appointmentDescription \u003d appointment.getAppointmentDescription();","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" public Appointment build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" return new Appointment(this.patient, this.appointmentTime, this.appointmentDescription);","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code AppointmentTime} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withAppointmentTime(String start, String end) {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" this.appointmentTime \u003d new AppointmentTimeBuilder().withStart(start).withEnd(end).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code Patient} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withPatient(Person patient) {","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" this.patient \u003d patient;","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" * Sets the {@code Description} for the Appointment being built.","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" public AppointmentBuilder withDescription(String description) {","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" this.appointmentDescription \u003d new AppointmentDescription(description);","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"billieboy7":72}},{"path":"src/test/java/seedu/address/testutil/AppointmentTimeBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.commons.util.DateUtil.parseDateTime;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.CURRENT_DATE;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.CURRENT_DATE_PLUS_FOUR_HOURS;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import static seedu.address.logic.commands.appointmentcommands.AppointmentCommandTestUtil.VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"import seedu.address.model.appointment.AppointmentTime;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" * A utility class to help with building AppointmentTime objects.","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"public class AppointmentTimeBuilder {","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_START \u003d VALID_START_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_END \u003d VALID_END_ONE;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_START_TWO \u003d CURRENT_DATE;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" private static final String DEFAULT_END_TWO \u003d CURRENT_DATE_PLUS_FOUR_HOURS;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" * Creates a {@code AppointmentTimeBuilder} with the default details.","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder() {","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" start \u003d parseDateTime(DEFAULT_START);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" end \u003d parseDateTime(DEFAULT_END);","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" * Initializes the AppointmentTimeBuilder with the data of {@code appointmentTime}.","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder(AppointmentTime appointmentTime) {","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" start \u003d appointmentTime.getStart();","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" end \u003d appointmentTime.getEnd();","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"kwangthiag"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":" * Creates a {@code AppointmentTimeBuilder} with data provided by {@code appointment}.","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"kwangthiag"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":" public AppointmentTimeBuilder(Appointment appointment) {","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" start \u003d appointment.getAppointmentTime().getStart();","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"kwangthiag"},"content":" end \u003d appointment.getAppointmentTime().getEnd();","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" * Sets the start time of the {@code AppointmentTime} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder withStart(String stringStart) {","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" this.start \u003d parseDateTime(stringStart);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" * Sets the end time of the {@code AppointmentTime} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" public AppointmentTimeBuilder withEnd(String stringEnd) {","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" this.end \u003d parseDateTime(stringEnd);","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" public AppointmentTime build() {","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" return new AppointmentTime(start, end);","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"kwangthiag":9,"billieboy7":61,"trgao":1}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"trgao"},"content":" descriptor.setGender(person.getGender());","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" descriptor.setBirthdate(person.getBirthdate());","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" * Sets the {@code Gender} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" public EditPersonDescriptorBuilder withGender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" descriptor.setGender(new Gender(gender));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" * Sets the {@code Birthdate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" public EditPersonDescriptorBuilder withBirthdate(String birthdate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" descriptor.setBirthdate(new Birthdate(birthdate));","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"licongshen12":1,"-":86,"trgao":20}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" public static final String DEFAULT_GENDER \u003d \"FEMALE\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" public static final String DEFAULT_BIRTHDATE \u003d \"2000/10/20\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" private Gender gender;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":" private Birthdate birthdate;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" gender \u003d new Gender(DEFAULT_GENDER);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" birthdate \u003d new Birthdate(DEFAULT_BIRTHDATE);","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" gender \u003d personToCopy.getGender();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" birthdate \u003d personToCopy.getBirthdate();","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" * Sets the {@code Gender} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"trgao"},"content":" public PersonBuilder withGender(String gender) {","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"trgao"},"content":" this.gender \u003d new Gender(gender);","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"trgao"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"trgao"},"content":" * Sets the {@code Birthdate} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"trgao"},"content":" public PersonBuilder withBirthdate(String birthdate) {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"trgao"},"content":" this.birthdate \u003d new Birthdate(birthdate);","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"trgao"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"trgao"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"trgao"},"content":" return new Person(name, gender, birthdate, phone, email, address, tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":95,"trgao":27}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDATE;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.AddCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"licongshen12"},"content":"import seedu.address.logic.commands.personcommands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" sb.append(PREFIX_GENDER + person.getGender().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" sb.append(PREFIX_BIRTHDATE + person.getBirthdate().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" descriptor.getGender().ifPresent(gender -\u003e sb.append(PREFIX_GENDER).append(gender.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"trgao"},"content":" descriptor.getBirthdate().ifPresent(","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"trgao"},"content":" birthdate -\u003e sb.append(PREFIX_BIRTHDATE).append(birthdate.value).append(\" \"));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"licongshen12":2,"-":60,"trgao":7}},{"path":"src/test/java/seedu/address/testutil/TypicalAppointments.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"trgao"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"kwangthiag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"kwangthiag"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"kwangthiag"},"content":"import java.util.List;","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"trgao"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"trgao"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"trgao"},"content":"public class TypicalAppointments {","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT1 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"trgao"},"content":" .withPatient(ALICE).withAppointmentTime(\"2023/10/10 10:00\", \"2023/10/10 11:00\")","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"trgao"},"content":" .withDescription(\"Checkup\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT2 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"trgao"},"content":" .withPatient(BENSON).withAppointmentTime(\"2023/01/29 21:00\", \"2023/01/29 23:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"trgao"},"content":" .withDescription(\"X-ray Checkup\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"trgao"},"content":" // Manually added","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT3 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"trgao"},"content":" .withPatient(HOON).withAppointmentTime(\"2021/04/18 15:00\", \"2023/04/18 17:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" .withDescription(\"Follow-up\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" public static final Appointment APPOINTMENT4 \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"trgao"},"content":" .withPatient(IDA).withAppointmentTime(\"2022/06/13 15:00\", \"2022/06/13 16:30\")","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"trgao"},"content":" .withDescription(\"Follow-up\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"kwangthiag"},"content":" public static final Appointment NOCLASHAPPOINTMENT \u003d new AppointmentBuilder()","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"kwangthiag"},"content":" .withPatient(ALICE).withAppointmentTime(\"3000/01/01 10:00\", \"3000/01/01 11:00\")","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"kwangthiag"},"content":" .withDescription(\"Checkup\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"kwangthiag"},"content":" public static List\u003cAppointment\u003e getTypicalAppointments() {","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"kwangthiag"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(APPOINTMENT1, APPOINTMENT2, APPOINTMENT3, APPOINTMENT4));","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"kwangthiag"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"kwangthiag"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"kwangthiag"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"kwangthiag"},"content":" for (Appointment appointment : getTypicalAppointments()) {","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"kwangthiag"},"content":" ab.addAppointment(appointment);","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"kwangthiag"},"content":" return ab;","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"kwangthiag"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"kwangthiag":20,"trgao":32}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"kwangthiag"},"content":" public static final Index INDEX_FIRST_APPOINTMENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"kwangthiag"},"content":" public static final Index INDEX_SECOND_APPOINTMENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"kwangthiag"},"content":" public static final Index INDEX_THIRD_APPOINTMENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"kwangthiag":3,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDATE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDATE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FEVER;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"trgao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FLU;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"trgao"},"content":" .withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"trgao"},"content":" .withPhone(\"94351253\").withBirthdate(\"1999/01/12\")","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"trgao"},"content":" .withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"trgao"},"content":" .withBirthdate(\"2001/10/20\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":41,"author":{"gitId":"trgao"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"trgao"},"content":" .withPhone(\"95352563\").withEmail(\"heinz@example.com\").withBirthdate(\"1987/01/02\")","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"trgao"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"trgao"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"trgao"},"content":" .withPhone(\"87652533\").withEmail(\"cornelia@example.com\").withBirthdate(\"2003/03/28\")","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"trgao"},"content":" .withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"trgao"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482224\").withEmail(\"werner@example.com\").withBirthdate(\"1989/05/19\")","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"trgao"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"trgao"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482427\").withEmail(\"lydia@example.com\").withBirthdate(\"2002/06/12\")","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"trgao"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"trgao"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"trgao"},"content":" .withPhone(\"9482442\").withEmail(\"anna@example.com\").withBirthdate(\"1994/08/23\")","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"trgao"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"trgao"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withGender(\"MALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"trgao"},"content":" .withPhone(\"8482424\").withEmail(\"stefan@example.com\").withBirthdate(\"1978/10/20\")","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"trgao"},"content":" .withAddress(\"little india\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"trgao"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withGender(\"FEMALE\")","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"trgao"},"content":" .withPhone(\"8482131\").withEmail(\"hans@example.com\").withBirthdate(\"2009/09/09\")","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"trgao"},"content":" .withAddress(\"chicago ave\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":66,"author":{"gitId":"trgao"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withGender(VALID_GENDER_AMY)","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withBirthdate(VALID_BIRTHDATE_AMY)","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FLU).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"trgao"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withGender(VALID_GENDER_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"trgao"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withBirthdate(VALID_BIRTHDATE_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"trgao"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FEVER, VALID_TAG_FLU)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"-":55,"trgao":37}}] diff --git a/AY2324S1-CS2103T-T08-4_tp_master/commits.json b/AY2324S1-CS2103T-T08-4_tp_master/commits.json index bbb0c348..1b136304 100644 --- a/AY2324S1-CS2103T-T08-4_tp_master/commits.json +++ b/AY2324S1-CS2103T-T08-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dinde2004":[{"date":"2023-10-03","commitResults":[{"hash":"5d00c2b00b3b825922810d9664bdbc90a20249ed","isMergeCommit":false,"messageTitle":"Modify the information about the delete function in the User guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"e4be36d3c18e5bfba309bb7f6b73ab66c8904a10","isMergeCommit":false,"messageTitle":"Add my PPP Skeleton","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":51}}},{"hash":"43d3ae13bbb18f840996bac0075d9a24cfb2798b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from kwangthiag/branch-UG","messageBody":"Edit Find in User Guide","fileTypesAndContributionMap":{}},{"hash":"3089fd662d2a1ce4719c9dacf7a9bbcafefdea3f","isMergeCommit":true,"messageTitle":"Merge pull request #31 from kwangthiag/branch-Photo","messageBody":"Add Photo","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"ad8e074b23d9ceaaf3b197c2719d227f0e34d845","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"f3da755d8bad30affefad48f2c27d581773f9dbc","isMergeCommit":false,"messageTitle":"Add cli syntax for cancel appointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"c16b564303d4f2e3fe85f97bef67bef7bda8674f","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":17}}}]},{"date":"2023-10-19","commitResults":[{"hash":"f44ecd9b6a041420f5485c31400776abce13e93f","isMergeCommit":false,"messageTitle":"Add function to cancel an appointment and view all appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":0}}},{"hash":"406fd1f0dfd0043c4d0f2e4aef223f1c23b18008","isMergeCommit":false,"messageTitle":"Fix some checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":13}}},{"hash":"20d9544776fcf66402897c2a228e1c7e01669e32","isMergeCommit":false,"messageTitle":"Fix checkstyle error when resolving conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":24}}},{"hash":"cf3f6515809c54f2adb90fb4e84e47d3d6aa9d61","isMergeCommit":true,"messageTitle":"Resolve conflicts and fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1dad3ae61528c5d2689310f543e52959b028bac6","isMergeCommit":true,"messageTitle":"Resolve conflicts and fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24827d436697412287b5ab31660fddaa576c376f","isMergeCommit":false,"messageTitle":"Add newline at the end of AddressBookParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ec1a0e0002f6567eb1e52c16ac305f4bda092ad3","isMergeCommit":false,"messageTitle":"Fix indentation of switch case in AddressBookParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":27}}}]}],"kwangthiag":[{"date":"2023-10-03","commitResults":[{"hash":"9bae180d4256376ab95b902d330f6e49205c49fb","isMergeCommit":false,"messageTitle":"Edit Find in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"daf987bb602220afab9aaafbe66c68f217d45031","isMergeCommit":false,"messageTitle":"Edit profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":51}}},{"hash":"afad1cef2ea4a41ad525ca875edad2a630ca873d","isMergeCommit":false,"messageTitle":"Fix UG names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"fedf891b59f7dd5bdd3d60f5b7ab862e789748a3","isMergeCommit":false,"messageTitle":"Add my profile in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1f73d8e902d7af02c88f42a54aa66576dbd4821f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from licongshen12/branch-UG-Update","messageBody":"Edit Update in User Guide","fileTypesAndContributionMap":{}},{"hash":"762936620c5b516254067ca204ee0014b6533508","isMergeCommit":true,"messageTitle":"Merge pull request #36 from trgao/tianrun-PPP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccd4e821fb31fd36eb69823c4201dde55ceae71","isMergeCommit":true,"messageTitle":"Merge pull request #38 from trgao/update-readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"711e19e35ac06cb3a2a347a6ef565266a7b011c1","isMergeCommit":true,"messageTitle":"Merge pull request #39 from trgao/fix-project-website","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"746d234af8d94b6e97153d9bde72f613af8e3c3e","isMergeCommit":false,"messageTitle":"Add Use Cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":96,"deletions":10}}},{"hash":"25219847c3d472fe556b4e90d740d27b16022ea8","isMergeCommit":true,"messageTitle":"Merge pull request #49 from trgao/update-readme-aboutus","messageBody":"Update readme badge and PPP pages","fileTypesAndContributionMap":{}},{"hash":"f2ff0ee3e9eeeeefdb41d7d730c9540ee9952c64","isMergeCommit":true,"messageTitle":"Merge pull request #52 from trgao/fix-bill-photo-name","messageBody":"Fix Bill photo file name","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"3ca8eb443acbec2beb407aef39c7ddcfd61983d5","isMergeCommit":false,"messageTitle":"Fix Reschedule command syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":1}}},{"hash":"2b52f009c495e056423e3b3c99f3081e9481c951","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17}}}]},{"date":"2023-10-16","commitResults":[{"hash":"85e5a88be54bf3d57f620558e68fec390aaedcd5","isMergeCommit":true,"messageTitle":"Resolve merge conflict in CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"c57f468cc4f59db531299accae171d9532313a44","isMergeCommit":false,"messageTitle":"Make Reschedule Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":120,"deletions":16}}},{"hash":"7e8503afa0c9b010fe2cbd60ca993642d0580562","isMergeCommit":false,"messageTitle":"Make Reschedule Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"bccc220773b1ca02826086827c9bee4b77d2138c","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"bab64c8cc3b53a7b42a7c680b5777ea2d377f8aa","isMergeCommit":true,"messageTitle":"Merge pull request #77 from trgao/fix-appointment","messageBody":"Fix appointment class","fileTypesAndContributionMap":{}},{"hash":"0d1b3b306b48e6c44e45c1111d8ca95bf427fc9b","isMergeCommit":true,"messageTitle":"Merge pull request #75 from trgao/change-birthdate-format","messageBody":"Change birthdate format","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"42ab380f1658dca097ccb8d5db80a024fdf26ecf","isMergeCommit":true,"messageTitle":"Merge pull request #78 from trgao/fix-appointment-json","messageBody":"Fix appointments storage","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"21bc55c53cc391b6d5e227cbb5263cee333f2c54","isMergeCommit":false,"messageTitle":"Add toString method to RescheduleCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"d83af4b8f038b4a6255cda3b4532e91d0fa7135d","isMergeCommit":true,"messageTitle":"Merge pull request #90 from trgao/fix-invocation-bug","messageBody":"Fix invocation target error bug","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"6e4b7e858ba55daa9f0ab053f170ee4ac79a4f37","isMergeCommit":true,"messageTitle":"Merge pull request #101 from trgao/add-appointment-json-test","messageBody":"Add appointment json test","fileTypesAndContributionMap":{}}]}],"billieboy7":[{"date":"2023-10-03","commitResults":[{"hash":"01942884fa4537e6b8993a661771d6a31194a576","isMergeCommit":false,"messageTitle":"Update UserGuide.md - Add functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"8489049a126da8e6bc323bc19b78cf9ac07c1061","isMergeCommit":true,"messageTitle":"Merge pull request #26 from dinde2004/tutorial-adding-command","messageBody":"Modify the information about the delete function in the User guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"d46989c7f9f65feef7064a03ff49db00c0ca2bec","isMergeCommit":false,"messageTitle":"Update Target User and Value Proposition in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"4ac4d7070b4b38e6c93179b4a6e8f4ced6aff617","isMergeCommit":false,"messageTitle":"Add Bill\u0027s skeletal PPP for Project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"af5598ae15134a0ac3846dd635f7620ce74c553d","isMergeCommit":false,"messageTitle":"Add Appointment Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"d4619239a4e0e7eb5c773c1b30ec02bbf20e2be4","isMergeCommit":false,"messageTitle":"Add AddAppointment Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c6bc8b826a403350b9adbdedf45082c32a075df9","isMergeCommit":false,"messageTitle":"Add AddAppointmentParser class yet to fix \"clash in appointment\" error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":321,"deletions":147}}},{"hash":"11cc34af61cce3965df42438c7cf30dc0f9361db","isMergeCommit":false,"messageTitle":"Fix clash with appointment bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"e46d561df903940232a5cc26ee7e5fd8e313c154","isMergeCommit":false,"messageTitle":"Add additional checks for checking of Start time and End time.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":2}}},{"hash":"b97f4c2435b1823c57188b2f3b03f76168e91ff7","isMergeCommit":false,"messageTitle":"Clear issues for CheckStyleMain","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":26}}}]},{"date":"2023-10-21","commitResults":[{"hash":"c046fb4c66067dd1eaf03d82d9a6e0154a30acdf","isMergeCommit":false,"messageTitle":"Add AppointmentBuilder.java, AppointmentTimeBuilder.java, AppointmentCommandTestUtil.java and additional Schedule Command Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":275,"deletions":0}}}]},{"date":"2023-10-22","commitResults":[{"hash":"97d9dff018a5db204f240d76f80b83a8cb4d8730","isMergeCommit":false,"messageTitle":"Fix CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":33}}},{"hash":"7af1e5c4a533fd2cc6ce74759a472cb863e3d948","isMergeCommit":true,"messageTitle":"Merge pull request #95 from trgao/enable-assertions","messageBody":"Enable assertions","fileTypesAndContributionMap":{}}]}],"licongshen12":[{"date":"2023-10-03","commitResults":[{"hash":"630a4c2b82ba4e21744d7c5a7b720d939a263731","isMergeCommit":false,"messageTitle":"Edit Update in User Guide","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":4},"docs":{"insertions":6,"deletions":11}}},{"hash":"0f3dafba2c8a8da3f7ea6293d2163bb63c0757fd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from trgao/user-guide-misc","messageBody":"Update miscellaneous for user guide","fileTypesAndContributionMap":{}},{"hash":"27150ab7f34a0f08353f9a69311ad77fc04c3a72","isMergeCommit":false,"messageTitle":"Edit Update in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2912180e25834edaca3ee10796fcea1659663de6","isMergeCommit":false,"messageTitle":"Add licongshen.md and Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":56}}}]},{"date":"2023-10-06","commitResults":[{"hash":"e4d943152aff21e2b4854f78e9ff3ecd33e0a50f","isMergeCommit":false,"messageTitle":"Update DG Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"2c9c8f844485d2b8100e9ec8a943a22950753110","isMergeCommit":true,"messageTitle":"Merge pull request #65 from trgao/refactor-person-class","messageBody":"Refactor person class","fileTypesAndContributionMap":{}},{"hash":"6157adda764837f01652aef9414630f6ca23d376","isMergeCommit":false,"messageTitle":"Add Appointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":262,"deletions":24},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":44,"deletions":26}}},{"hash":"184a081fcad0bb849b43871c3e7fe4add7869f72","isMergeCommit":false,"messageTitle":"Edit Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":15},"test-code":{"insertions":6,"deletions":15}}},{"hash":"0c4ecf089a0387669dc1a64cfed83de56b62a6bd","isMergeCommit":false,"messageTitle":"Edit Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"b153bdcddd3742ac042d4c3057886de525f6e8bb","isMergeCommit":true,"messageTitle":"Merge pull request #72 from trgao/add-appointments-ui","messageBody":"Add appointments UI and appointments list","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"d25466e511ab2aa83945f352799c0eadf73777e1","isMergeCommit":true,"messageTitle":"Merge pull request #91 from trgao/refactor-code","messageBody":"Minor changes","fileTypesAndContributionMap":{}},{"hash":"d6eb97fea0d242522b1e6a9b9ac5b2334b98216c","isMergeCommit":false,"messageTitle":"Add stubs to ScheduleCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"14a0d213f404325a94a76e1712061c9d0c96f37e","isMergeCommit":false,"messageTitle":"Add stubs to ScheduleCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-20","commitResults":[{"hash":"f37afe6f02b8b4d833f6f7d6a0bd409fbc2ecbb9","isMergeCommit":true,"messageTitle":"Merge pull request #94 from trgao/change-patient-id-to-name","messageBody":"Change patient id to name","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"trgao":[{"date":"2023-10-03","commitResults":[{"hash":"6df5beaa2bd141449d763e94e23cacba183b8442","isMergeCommit":false,"messageTitle":"Update miscellaneous for user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":26}}},{"hash":"ec50dac8e7c68af9ed2b9c1363fd51d26c1829ca","isMergeCommit":true,"messageTitle":"Merge pull request #28 from billieboy7/UGAddFunctionality","messageBody":"Update UserGuide.md - Add functionality","fileTypesAndContributionMap":{}},{"hash":"6c22fa209a990bbfe56fcac7981cb61abb6ae427","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ppp-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ccc66c48e04a9a4f526f7374989cdd43fefaa5f","isMergeCommit":true,"messageTitle":"Merge pull request #33 from dinde2004/ppp-skeleton","messageBody":"Add my PPP Skeleton","fileTypesAndContributionMap":{}},{"hash":"6cf8dffea393f742244fb3775742a50f40c011dc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from dinde2004/photo","messageBody":"Add my personal photo","fileTypesAndContributionMap":{}},{"hash":"0a387bac717f3017bdb4687347e25fa216a59afb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-PPP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f0a3b4b395ed215bd6057df6958b298f4a83be1","isMergeCommit":true,"messageTitle":"Merge pull request #35 from licongshen12/branch-PPP","messageBody":"Add licongshen.md and Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8a244ee0ff698438da7dbe3f6d1835f8334ceaf7","isMergeCommit":false,"messageTitle":"Update AboutUs page and add individual photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"c4f82741f6b9fd4212097cd838d73fb96ce02e26","isMergeCommit":false,"messageTitle":"Add individual project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":4}}},{"hash":"0ef0cd269a1c668c0cb18e21ab1276856a519e6e","isMergeCommit":false,"messageTitle":"Update project website and readme page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2ae927c4b38c0229a9a89244d5a9d58c5c8154e2","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":19}}},{"hash":"976eaecc87da27559ddb6a434032e80dbe6f4d2a","isMergeCommit":false,"messageTitle":"Fix codecov badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"854424eb2c9b1501296b0a58af79075250d76b9b","isMergeCommit":false,"messageTitle":"Fix individual ppp page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c078ef58b6aab476327a9fb3c5b740aa569df5fd","isMergeCommit":false,"messageTitle":"Fix product website link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"ed88e5fb3ecdf079b849b512bd1c8d189c7863e9","isMergeCommit":true,"messageTitle":"Merge pull request #45 from billieboy7/DG_TargetUserAndValueProp","messageBody":"Update Target User and Value Proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"cb77aae4c170d996eede9274f85930606b47e8d3","isMergeCommit":true,"messageTitle":"Merge pull request #46 from billieboy7/Week7-PPP","messageBody":"Add Bill\u0027s skeletal PPP for Project","fileTypesAndContributionMap":{}},{"hash":"87f11097091efb6388ff854714571ab70634dd89","isMergeCommit":true,"messageTitle":"Merge pull request #47 from billieboy7/Week7_BillIMG","messageBody":"Add Bill photo","fileTypesAndContributionMap":{}},{"hash":"c907f0d75c9268af9a993cb244b2aafc8ce733e1","isMergeCommit":true,"messageTitle":"Merge pull request #48 from kwangthiag/b-DevGuide","messageBody":"Add Use Cases to Developer Guide","fileTypesAndContributionMap":{}},{"hash":"3f84d2ed84e1d385e8f772bfd28169afcf436dc9","isMergeCommit":false,"messageTitle":"Add reposense links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"08630668af750fab84a41cd1c75f589d9bfedb35","isMergeCommit":false,"messageTitle":"Update readme github badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"ac0e45677e4131354061943d64fe2f91537c90f6","isMergeCommit":false,"messageTitle":"Fix aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"2a1e828d0edbbcb25f96dc6bf1ce5761ffdddf77","isMergeCommit":false,"messageTitle":"Update user stories in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":18}}},{"hash":"3c83af82d28402e004748734722a61396dd8bd86","isMergeCommit":true,"messageTitle":"Merge pull request #50 from trgao/update-DG-user-stories","messageBody":"Update user stories in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"226650a795c40b8e5b2f4654ceb5eae92ead643b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from dinde2004/non-functional-requirements","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"2e1d75bd06e2c4196865b20269b1adb4fd08d767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8789120b5d1051b2a236b94e430c992d1a134d6c","isMergeCommit":true,"messageTitle":"Merge pull request #55 from licongshen12/branch-update-DG","messageBody":"Update DG Glossary","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"1c8d48ab7df097dd2eaaf8856a54c5ee3e8054b1","isMergeCommit":false,"messageTitle":"Add birthdate attribute to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":18},"test-code":{"insertions":14,"deletions":1}}},{"hash":"047b2336bbc07fe6af90a6b6784dc7e0d006b1db","isMergeCommit":false,"messageTitle":"Fix birthdate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":7}}},{"hash":"c794178922b0739b5143345a3c488bb788bb6e8a","isMergeCommit":false,"messageTitle":"Add gender attribute to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":20}}},{"hash":"6962e784c48df74ee9eae7db6939146efefc3e8c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":40},"test-code":{"insertions":201,"deletions":50}}},{"hash":"cc6d7aa72aae9b0c7458e9b6c94a5b6a8df000d0","isMergeCommit":false,"messageTitle":"Change name of app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"27c7a3fb693d4584c122151b05d6c698aed68d63","isMergeCommit":false,"messageTitle":"Change prefix for commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4c43ef18b2fbc46f08ad7511d2e368c172f698a0","isMergeCommit":false,"messageTitle":"Fix order of attributes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":59},"test-code":{"insertions":51,"deletions":49}}},{"hash":"1eb26ef078b57eb6582cca5b0f3453ac32a17a48","isMergeCommit":false,"messageTitle":"Change user guide url","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c2c4eec58b27ef45729c4ee82ea0125034229a83","isMergeCommit":false,"messageTitle":"Update commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":28},"test-code":{"insertions":42,"deletions":33}}},{"hash":"f0771a8d02397750c6b61cb28acffe04315a33ed","isMergeCommit":true,"messageTitle":"Merge pull request #66 from licongshen12/branch-add-appointment","messageBody":"Add Appointment class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"3afd3162497d6419247723c9096fdeea1ec45a72","isMergeCommit":false,"messageTitle":"Add appointments ui and appointment list to logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":435,"deletions":17}}},{"hash":"1c5e0c83028b177d55274d6ea8be6538e25d60ed","isMergeCommit":false,"messageTitle":"Fix tests and refactor commands and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"other":{"insertions":63,"deletions":25},"test-code":{"insertions":10,"deletions":3}}},{"hash":"72cc88f3af7de667d42eec6f1f41480acf7de38e","isMergeCommit":false,"messageTitle":"Update appointment model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":37}}},{"hash":"64f4a368a6070dba20f91cf7b4275a56ec44667f","isMergeCommit":false,"messageTitle":"Add prefixes for appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"4f1fb9b7d60700601f88070de9d4c7453070af22","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AppointmentMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a5353fd7e43a2414b67bbb3e2ab1ec558956ad0","isMergeCommit":true,"messageTitle":"Merge pull request #70 from billieboy7/AppointmentMessages","messageBody":"Add Appointment Messages","fileTypesAndContributionMap":{}},{"hash":"b6dcb4d4f3e4a78632d613bea284a117749fba57","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into appointment-cancel-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"92be17919281f6ecab5fa68dff54b72e209250f3","isMergeCommit":false,"messageTitle":"Change default person tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"98fda47189313b1c4fde5411e9134daf0f4f264f","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kwangthiag/resched","messageBody":"Fix Reschedule command syntax","fileTypesAndContributionMap":{}},{"hash":"6c784e512678818d4a3b36f2af77dadaefc091a5","isMergeCommit":false,"messageTitle":"Change birthdate format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":16},"test-code":{"insertions":11,"deletions":10}}},{"hash":"6a8fb98920d6fca17dafd2be170fc92631b89b90","isMergeCommit":true,"messageTitle":"Merge pull request #74 from trgao/change-tags-data","messageBody":"Change default person tags","fileTypesAndContributionMap":{}},{"hash":"bcefcfce6a4e3b89c78a2ddc22ec75bae295221a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into change-birthdate-format","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e02350f0b55846dbcfad87e05ec81d6c1ea75bd","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"168e219c6f12eb56b17c8741635dee262105d62d","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24}}},{"hash":"eb80080650faaeb275764680bfebae57517a641e","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1d87b1cb560ad6d0594cfbfff9c5d4d8bc73b50d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24}}},{"hash":"adac76f647d60394642f062a31b4421ceb83f9f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AddAppointment","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7bdb8baaa53d29b50738eb9c083277225dff4570","isMergeCommit":true,"messageTitle":"Merge pull request #76 from billieboy7/AddAppointment","messageBody":"Add Appointment Feature ","fileTypesAndContributionMap":{}},{"hash":"ecffb0aab2b44f13280482c1ff5176b89e250082","isMergeCommit":false,"messageTitle":"Fix appointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":50}}}]},{"date":"2023-10-18","commitResults":[{"hash":"912b5769b75513f4f1dec9af85cc407cfad0f62e","isMergeCommit":false,"messageTitle":"Fix appointments storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":73}}},{"hash":"bd55a83ec32e6f2a36670b6ebb485e7cb0630683","isMergeCommit":false,"messageTitle":"Fix date formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":24},"test-code":{"insertions":12,"deletions":13}}},{"hash":"90cc555ea8bea6629116c2ed6ec0ce895dc64561","isMergeCommit":true,"messageTitle":"Merge pull request #84 from trgao/standardise-date-format","messageBody":"Fix date formatting","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"f659dc2c91e6ba389e1f697b15bfc689df6dba74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into appointment-cancel-and-view-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4180c5e00c55b8680f9a6d2ce8959bd12b9984a0","isMergeCommit":true,"messageTitle":"Merge pull request #88 from kwangthiag/resched","messageBody":"Add toString method to RescheduleCommand class","fileTypesAndContributionMap":{}},{"hash":"534dadb7143cb22cf9ea8a49c66332b9193a24ca","isMergeCommit":false,"messageTitle":"Fix invocation target error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d290f448f728431d7340e219646907a33699c4fb","isMergeCommit":true,"messageTitle":"Merge pull request #89 from dinde2004/appointment-cancel-and-view-command","messageBody":"Add function to cancel an appointment and view all appointments","fileTypesAndContributionMap":{}},{"hash":"117a75badaa03229fd771433058bbbde6dadad04","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":19},"other":{"insertions":8,"deletions":7}}},{"hash":"025890fdedf3402cbb8320146681b0865910e73b","isMergeCommit":true,"messageTitle":"Merge pull request #93 from licongshen12/branch-ScheduleCommandTest","messageBody":"Add stubs to ScheduleCommandTest","fileTypesAndContributionMap":{}},{"hash":"436d43832c99003146b6b2b4722753f1db5af574","isMergeCommit":false,"messageTitle":"Change patient id to patient name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":55},"other":{"insertions":6,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"5407dcf0ced12e08b44c0e8bdf8ccb1b6d3b52e2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":16,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"e070c0e94e9d53dff0741f3c03125e35b658a523","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b3456d5311ae81b7a8468ae891c7ee204badb086","isMergeCommit":false,"messageTitle":"Remove id from parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":67}}},{"hash":"47aa5d610fb80d9a0c3042f0391239123cbcdf1f","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":31,"deletions":33}}},{"hash":"d0a12f5bd730fd20574f3185619972e0f0516a8f","isMergeCommit":false,"messageTitle":"Remove println","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"54e6baffe6948d1f7b4d30fe6a4351a934b1bc4d","isMergeCommit":false,"messageTitle":"Fix command descriptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":33,"deletions":33}}},{"hash":"b1e347f9b4fdc37b9d160a3df3203f53abecefc3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-21","commitResults":[{"hash":"85eebf34f68e12f0dbc83667ce26f5225e89b82c","isMergeCommit":false,"messageTitle":"Enable assertions","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2023-10-22","commitResults":[{"hash":"9ad01f3efead7bd98f330731d72d3d402d752245","isMergeCommit":true,"messageTitle":"Merge pull request #96 from billieboy7/AdditionalScheduleCommandTests","messageBody":"Additional schedule command tests","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"f4828a428dc71e516f9ae93b668ab5ded13ac570","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedAppointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":101,"deletions":0}}},{"hash":"41d6a1bf869d883cb35bbc868a8d3f64cb845b80","isMergeCommit":false,"messageTitle":"Refactor parsing datetimes and changing datetime to string functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":32},"test-code":{"insertions":18,"deletions":17}}},{"hash":"47edd90f86e7582f2ca78f22cfaf4d34bb8d4e66","isMergeCommit":false,"messageTitle":"Add additional tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":1}}},{"hash":"771298b2963a74cde55535b10729da3dd49c834b","isMergeCommit":false,"messageTitle":"Add test for non-existent patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":17},"test-code":{"insertions":10,"deletions":3}}},{"hash":"8c7cb490fff01fa74de65b6838e2f376d0f43795","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":11},"test-code":{"insertions":6,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"dinde2004":{"docs":46,"functional-code":129,"test-code":0},"kwangthiag":{"docs":125,"functional-code":142,"test-code":0},"billieboy7":{"docs":41,"functional-code":271,"test-code":253},"licongshen12":{"docs":72,"functional-code":206,"test-code":167,"other":4},"trgao":{"docs":106,"functional-code":1235,"test-code":474,"other":6}},"authorContributionVariance":{"dinde2004":2844.0068,"kwangthiag":1840.7969,"billieboy7":12604.268,"licongshen12":6861.9326,"trgao":36816.37},"authorDisplayNameMap":{"dinde2004":"CS2103T-T08-4 DOAN..HINH","kwangthiag":"CS2103T-T08-4 TAN ..HIAG","billieboy7":"CS2103T-T08-4 STAL..UMAR","licongshen12":"CS2103T-T08-4 SHEN..CONG","trgao":"CS2103T-T08-4 GAO ..NRUN"}} +{"authorDailyContributionsMap":{"dinde2004":[{"date":"2023-10-03","commitResults":[{"hash":"5d00c2b00b3b825922810d9664bdbc90a20249ed","isMergeCommit":false,"messageTitle":"Modify the information about the delete function in the User guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"e4be36d3c18e5bfba309bb7f6b73ab66c8904a10","isMergeCommit":false,"messageTitle":"Add my PPP Skeleton","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":51}}},{"hash":"43d3ae13bbb18f840996bac0075d9a24cfb2798b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from kwangthiag/branch-UG","messageBody":"Edit Find in User Guide","fileTypesAndContributionMap":{}},{"hash":"3089fd662d2a1ce4719c9dacf7a9bbcafefdea3f","isMergeCommit":true,"messageTitle":"Merge pull request #31 from kwangthiag/branch-Photo","messageBody":"Add Photo","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"ad8e074b23d9ceaaf3b197c2719d227f0e34d845","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"f3da755d8bad30affefad48f2c27d581773f9dbc","isMergeCommit":false,"messageTitle":"Add cli syntax for cancel appointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"c16b564303d4f2e3fe85f97bef67bef7bda8674f","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":17}}}]},{"date":"2023-10-19","commitResults":[{"hash":"f44ecd9b6a041420f5485c31400776abce13e93f","isMergeCommit":false,"messageTitle":"Add function to cancel an appointment and view all appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":0}}},{"hash":"406fd1f0dfd0043c4d0f2e4aef223f1c23b18008","isMergeCommit":false,"messageTitle":"Fix some checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":13}}},{"hash":"20d9544776fcf66402897c2a228e1c7e01669e32","isMergeCommit":false,"messageTitle":"Fix checkstyle error when resolving conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":24}}},{"hash":"cf3f6515809c54f2adb90fb4e84e47d3d6aa9d61","isMergeCommit":true,"messageTitle":"Resolve conflicts and fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1dad3ae61528c5d2689310f543e52959b028bac6","isMergeCommit":true,"messageTitle":"Resolve conflicts and fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24827d436697412287b5ab31660fddaa576c376f","isMergeCommit":false,"messageTitle":"Add newline at the end of AddressBookParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ec1a0e0002f6567eb1e52c16ac305f4bda092ad3","isMergeCommit":false,"messageTitle":"Fix indentation of switch case in AddressBookParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":27}}}]}],"kwangthiag":[{"date":"2023-10-03","commitResults":[{"hash":"9bae180d4256376ab95b902d330f6e49205c49fb","isMergeCommit":false,"messageTitle":"Edit Find in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"daf987bb602220afab9aaafbe66c68f217d45031","isMergeCommit":false,"messageTitle":"Edit profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":51}}},{"hash":"afad1cef2ea4a41ad525ca875edad2a630ca873d","isMergeCommit":false,"messageTitle":"Fix UG names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"fedf891b59f7dd5bdd3d60f5b7ab862e789748a3","isMergeCommit":false,"messageTitle":"Add my profile in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1f73d8e902d7af02c88f42a54aa66576dbd4821f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from licongshen12/branch-UG-Update","messageBody":"Edit Update in User Guide","fileTypesAndContributionMap":{}},{"hash":"762936620c5b516254067ca204ee0014b6533508","isMergeCommit":true,"messageTitle":"Merge pull request #36 from trgao/tianrun-PPP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccd4e821fb31fd36eb69823c4201dde55ceae71","isMergeCommit":true,"messageTitle":"Merge pull request #38 from trgao/update-readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"711e19e35ac06cb3a2a347a6ef565266a7b011c1","isMergeCommit":true,"messageTitle":"Merge pull request #39 from trgao/fix-project-website","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"746d234af8d94b6e97153d9bde72f613af8e3c3e","isMergeCommit":false,"messageTitle":"Add Use Cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":96,"deletions":10}}},{"hash":"25219847c3d472fe556b4e90d740d27b16022ea8","isMergeCommit":true,"messageTitle":"Merge pull request #49 from trgao/update-readme-aboutus","messageBody":"Update readme badge and PPP pages","fileTypesAndContributionMap":{}},{"hash":"f2ff0ee3e9eeeeefdb41d7d730c9540ee9952c64","isMergeCommit":true,"messageTitle":"Merge pull request #52 from trgao/fix-bill-photo-name","messageBody":"Fix Bill photo file name","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"3ca8eb443acbec2beb407aef39c7ddcfd61983d5","isMergeCommit":false,"messageTitle":"Fix Reschedule command syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":1}}},{"hash":"2b52f009c495e056423e3b3c99f3081e9481c951","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17}}}]},{"date":"2023-10-16","commitResults":[{"hash":"85e5a88be54bf3d57f620558e68fec390aaedcd5","isMergeCommit":true,"messageTitle":"Resolve merge conflict in CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"c57f468cc4f59db531299accae171d9532313a44","isMergeCommit":false,"messageTitle":"Make Reschedule Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":120,"deletions":16}}},{"hash":"7e8503afa0c9b010fe2cbd60ca993642d0580562","isMergeCommit":false,"messageTitle":"Make Reschedule Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"bccc220773b1ca02826086827c9bee4b77d2138c","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"bab64c8cc3b53a7b42a7c680b5777ea2d377f8aa","isMergeCommit":true,"messageTitle":"Merge pull request #77 from trgao/fix-appointment","messageBody":"Fix appointment class","fileTypesAndContributionMap":{}},{"hash":"0d1b3b306b48e6c44e45c1111d8ca95bf427fc9b","isMergeCommit":true,"messageTitle":"Merge pull request #75 from trgao/change-birthdate-format","messageBody":"Change birthdate format","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"42ab380f1658dca097ccb8d5db80a024fdf26ecf","isMergeCommit":true,"messageTitle":"Merge pull request #78 from trgao/fix-appointment-json","messageBody":"Fix appointments storage","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"21bc55c53cc391b6d5e227cbb5263cee333f2c54","isMergeCommit":false,"messageTitle":"Add toString method to RescheduleCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"d83af4b8f038b4a6255cda3b4532e91d0fa7135d","isMergeCommit":true,"messageTitle":"Merge pull request #90 from trgao/fix-invocation-bug","messageBody":"Fix invocation target error bug","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"6e4b7e858ba55daa9f0ab053f170ee4ac79a4f37","isMergeCommit":true,"messageTitle":"Merge pull request #101 from trgao/add-appointment-json-test","messageBody":"Add appointment json test","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"ff01315f5b303099ec00b223186ffc876eb0c20e","isMergeCommit":false,"messageTitle":"Add tests to reschedule command and fix reschedule command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":190,"deletions":0}}}]}],"billieboy7":[{"date":"2023-10-03","commitResults":[{"hash":"01942884fa4537e6b8993a661771d6a31194a576","isMergeCommit":false,"messageTitle":"Update UserGuide.md - Add functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"8489049a126da8e6bc323bc19b78cf9ac07c1061","isMergeCommit":true,"messageTitle":"Merge pull request #26 from dinde2004/tutorial-adding-command","messageBody":"Modify the information about the delete function in the User guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"d46989c7f9f65feef7064a03ff49db00c0ca2bec","isMergeCommit":false,"messageTitle":"Update Target User and Value Proposition in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"4ac4d7070b4b38e6c93179b4a6e8f4ced6aff617","isMergeCommit":false,"messageTitle":"Add Bill\u0027s skeletal PPP for Project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"af5598ae15134a0ac3846dd635f7620ce74c553d","isMergeCommit":false,"messageTitle":"Add Appointment Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"d4619239a4e0e7eb5c773c1b30ec02bbf20e2be4","isMergeCommit":false,"messageTitle":"Add AddAppointment Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c6bc8b826a403350b9adbdedf45082c32a075df9","isMergeCommit":false,"messageTitle":"Add AddAppointmentParser class yet to fix \"clash in appointment\" error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":321,"deletions":147}}},{"hash":"11cc34af61cce3965df42438c7cf30dc0f9361db","isMergeCommit":false,"messageTitle":"Fix clash with appointment bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"e46d561df903940232a5cc26ee7e5fd8e313c154","isMergeCommit":false,"messageTitle":"Add additional checks for checking of Start time and End time.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":2}}},{"hash":"b97f4c2435b1823c57188b2f3b03f76168e91ff7","isMergeCommit":false,"messageTitle":"Clear issues for CheckStyleMain","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":26}}}]},{"date":"2023-10-21","commitResults":[{"hash":"c046fb4c66067dd1eaf03d82d9a6e0154a30acdf","isMergeCommit":false,"messageTitle":"Add AppointmentBuilder.java, AppointmentTimeBuilder.java, AppointmentCommandTestUtil.java and additional Schedule Command Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":275,"deletions":0}}}]},{"date":"2023-10-22","commitResults":[{"hash":"97d9dff018a5db204f240d76f80b83a8cb4d8730","isMergeCommit":false,"messageTitle":"Fix CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":33}}},{"hash":"7af1e5c4a533fd2cc6ce74759a472cb863e3d948","isMergeCommit":true,"messageTitle":"Merge pull request #95 from trgao/enable-assertions","messageBody":"Enable assertions","fileTypesAndContributionMap":{}}]}],"licongshen12":[{"date":"2023-10-03","commitResults":[{"hash":"630a4c2b82ba4e21744d7c5a7b720d939a263731","isMergeCommit":false,"messageTitle":"Edit Update in User Guide","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":4},"docs":{"insertions":6,"deletions":11}}},{"hash":"0f3dafba2c8a8da3f7ea6293d2163bb63c0757fd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from trgao/user-guide-misc","messageBody":"Update miscellaneous for user guide","fileTypesAndContributionMap":{}},{"hash":"27150ab7f34a0f08353f9a69311ad77fc04c3a72","isMergeCommit":false,"messageTitle":"Edit Update in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2912180e25834edaca3ee10796fcea1659663de6","isMergeCommit":false,"messageTitle":"Add licongshen.md and Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":56}}}]},{"date":"2023-10-06","commitResults":[{"hash":"e4d943152aff21e2b4854f78e9ff3ecd33e0a50f","isMergeCommit":false,"messageTitle":"Update DG Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"2c9c8f844485d2b8100e9ec8a943a22950753110","isMergeCommit":true,"messageTitle":"Merge pull request #65 from trgao/refactor-person-class","messageBody":"Refactor person class","fileTypesAndContributionMap":{}},{"hash":"6157adda764837f01652aef9414630f6ca23d376","isMergeCommit":false,"messageTitle":"Add Appointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":262,"deletions":24},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":44,"deletions":26}}},{"hash":"184a081fcad0bb849b43871c3e7fe4add7869f72","isMergeCommit":false,"messageTitle":"Edit Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":15},"test-code":{"insertions":6,"deletions":15}}},{"hash":"0c4ecf089a0387669dc1a64cfed83de56b62a6bd","isMergeCommit":false,"messageTitle":"Edit Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"b153bdcddd3742ac042d4c3057886de525f6e8bb","isMergeCommit":true,"messageTitle":"Merge pull request #72 from trgao/add-appointments-ui","messageBody":"Add appointments UI and appointments list","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"d25466e511ab2aa83945f352799c0eadf73777e1","isMergeCommit":true,"messageTitle":"Merge pull request #91 from trgao/refactor-code","messageBody":"Minor changes","fileTypesAndContributionMap":{}},{"hash":"d6eb97fea0d242522b1e6a9b9ac5b2334b98216c","isMergeCommit":false,"messageTitle":"Add stubs to ScheduleCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"14a0d213f404325a94a76e1712061c9d0c96f37e","isMergeCommit":false,"messageTitle":"Add stubs to ScheduleCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-20","commitResults":[{"hash":"f37afe6f02b8b4d833f6f7d6a0bd409fbc2ecbb9","isMergeCommit":true,"messageTitle":"Merge pull request #94 from trgao/change-patient-id-to-name","messageBody":"Change patient id to name","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"trgao":[{"date":"2023-10-03","commitResults":[{"hash":"6df5beaa2bd141449d763e94e23cacba183b8442","isMergeCommit":false,"messageTitle":"Update miscellaneous for user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":26}}},{"hash":"ec50dac8e7c68af9ed2b9c1363fd51d26c1829ca","isMergeCommit":true,"messageTitle":"Merge pull request #28 from billieboy7/UGAddFunctionality","messageBody":"Update UserGuide.md - Add functionality","fileTypesAndContributionMap":{}},{"hash":"6c22fa209a990bbfe56fcac7981cb61abb6ae427","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ppp-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ccc66c48e04a9a4f526f7374989cdd43fefaa5f","isMergeCommit":true,"messageTitle":"Merge pull request #33 from dinde2004/ppp-skeleton","messageBody":"Add my PPP Skeleton","fileTypesAndContributionMap":{}},{"hash":"6cf8dffea393f742244fb3775742a50f40c011dc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from dinde2004/photo","messageBody":"Add my personal photo","fileTypesAndContributionMap":{}},{"hash":"0a387bac717f3017bdb4687347e25fa216a59afb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-PPP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f0a3b4b395ed215bd6057df6958b298f4a83be1","isMergeCommit":true,"messageTitle":"Merge pull request #35 from licongshen12/branch-PPP","messageBody":"Add licongshen.md and Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8a244ee0ff698438da7dbe3f6d1835f8334ceaf7","isMergeCommit":false,"messageTitle":"Update AboutUs page and add individual photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"c4f82741f6b9fd4212097cd838d73fb96ce02e26","isMergeCommit":false,"messageTitle":"Add individual project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":4}}},{"hash":"0ef0cd269a1c668c0cb18e21ab1276856a519e6e","isMergeCommit":false,"messageTitle":"Update project website and readme page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2ae927c4b38c0229a9a89244d5a9d58c5c8154e2","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":19}}},{"hash":"976eaecc87da27559ddb6a434032e80dbe6f4d2a","isMergeCommit":false,"messageTitle":"Fix codecov badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"854424eb2c9b1501296b0a58af79075250d76b9b","isMergeCommit":false,"messageTitle":"Fix individual ppp page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c078ef58b6aab476327a9fb3c5b740aa569df5fd","isMergeCommit":false,"messageTitle":"Fix product website link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"ed88e5fb3ecdf079b849b512bd1c8d189c7863e9","isMergeCommit":true,"messageTitle":"Merge pull request #45 from billieboy7/DG_TargetUserAndValueProp","messageBody":"Update Target User and Value Proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"cb77aae4c170d996eede9274f85930606b47e8d3","isMergeCommit":true,"messageTitle":"Merge pull request #46 from billieboy7/Week7-PPP","messageBody":"Add Bill\u0027s skeletal PPP for Project","fileTypesAndContributionMap":{}},{"hash":"87f11097091efb6388ff854714571ab70634dd89","isMergeCommit":true,"messageTitle":"Merge pull request #47 from billieboy7/Week7_BillIMG","messageBody":"Add Bill photo","fileTypesAndContributionMap":{}},{"hash":"c907f0d75c9268af9a993cb244b2aafc8ce733e1","isMergeCommit":true,"messageTitle":"Merge pull request #48 from kwangthiag/b-DevGuide","messageBody":"Add Use Cases to Developer Guide","fileTypesAndContributionMap":{}},{"hash":"3f84d2ed84e1d385e8f772bfd28169afcf436dc9","isMergeCommit":false,"messageTitle":"Add reposense links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"08630668af750fab84a41cd1c75f589d9bfedb35","isMergeCommit":false,"messageTitle":"Update readme github badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"ac0e45677e4131354061943d64fe2f91537c90f6","isMergeCommit":false,"messageTitle":"Fix aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"2a1e828d0edbbcb25f96dc6bf1ce5761ffdddf77","isMergeCommit":false,"messageTitle":"Update user stories in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":18}}},{"hash":"3c83af82d28402e004748734722a61396dd8bd86","isMergeCommit":true,"messageTitle":"Merge pull request #50 from trgao/update-DG-user-stories","messageBody":"Update user stories in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"226650a795c40b8e5b2f4654ceb5eae92ead643b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from dinde2004/non-functional-requirements","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"2e1d75bd06e2c4196865b20269b1adb4fd08d767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8789120b5d1051b2a236b94e430c992d1a134d6c","isMergeCommit":true,"messageTitle":"Merge pull request #55 from licongshen12/branch-update-DG","messageBody":"Update DG Glossary","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"1c8d48ab7df097dd2eaaf8856a54c5ee3e8054b1","isMergeCommit":false,"messageTitle":"Add birthdate attribute to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":18},"test-code":{"insertions":14,"deletions":1}}},{"hash":"047b2336bbc07fe6af90a6b6784dc7e0d006b1db","isMergeCommit":false,"messageTitle":"Fix birthdate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":7}}},{"hash":"c794178922b0739b5143345a3c488bb788bb6e8a","isMergeCommit":false,"messageTitle":"Add gender attribute to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":20}}},{"hash":"6962e784c48df74ee9eae7db6939146efefc3e8c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":40},"test-code":{"insertions":201,"deletions":50}}},{"hash":"cc6d7aa72aae9b0c7458e9b6c94a5b6a8df000d0","isMergeCommit":false,"messageTitle":"Change name of app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"27c7a3fb693d4584c122151b05d6c698aed68d63","isMergeCommit":false,"messageTitle":"Change prefix for commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4c43ef18b2fbc46f08ad7511d2e368c172f698a0","isMergeCommit":false,"messageTitle":"Fix order of attributes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":59},"test-code":{"insertions":51,"deletions":49}}},{"hash":"1eb26ef078b57eb6582cca5b0f3453ac32a17a48","isMergeCommit":false,"messageTitle":"Change user guide url","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c2c4eec58b27ef45729c4ee82ea0125034229a83","isMergeCommit":false,"messageTitle":"Update commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":28},"test-code":{"insertions":42,"deletions":33}}},{"hash":"f0771a8d02397750c6b61cb28acffe04315a33ed","isMergeCommit":true,"messageTitle":"Merge pull request #66 from licongshen12/branch-add-appointment","messageBody":"Add Appointment class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"3afd3162497d6419247723c9096fdeea1ec45a72","isMergeCommit":false,"messageTitle":"Add appointments ui and appointment list to logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":435,"deletions":17}}},{"hash":"1c5e0c83028b177d55274d6ea8be6538e25d60ed","isMergeCommit":false,"messageTitle":"Fix tests and refactor commands and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"other":{"insertions":63,"deletions":25},"test-code":{"insertions":10,"deletions":3}}},{"hash":"72cc88f3af7de667d42eec6f1f41480acf7de38e","isMergeCommit":false,"messageTitle":"Update appointment model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":37}}},{"hash":"64f4a368a6070dba20f91cf7b4275a56ec44667f","isMergeCommit":false,"messageTitle":"Add prefixes for appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"4f1fb9b7d60700601f88070de9d4c7453070af22","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AppointmentMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a5353fd7e43a2414b67bbb3e2ab1ec558956ad0","isMergeCommit":true,"messageTitle":"Merge pull request #70 from billieboy7/AppointmentMessages","messageBody":"Add Appointment Messages","fileTypesAndContributionMap":{}},{"hash":"b6dcb4d4f3e4a78632d613bea284a117749fba57","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into appointment-cancel-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"92be17919281f6ecab5fa68dff54b72e209250f3","isMergeCommit":false,"messageTitle":"Change default person tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"98fda47189313b1c4fde5411e9134daf0f4f264f","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kwangthiag/resched","messageBody":"Fix Reschedule command syntax","fileTypesAndContributionMap":{}},{"hash":"6c784e512678818d4a3b36f2af77dadaefc091a5","isMergeCommit":false,"messageTitle":"Change birthdate format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":16},"test-code":{"insertions":11,"deletions":10}}},{"hash":"6a8fb98920d6fca17dafd2be170fc92631b89b90","isMergeCommit":true,"messageTitle":"Merge pull request #74 from trgao/change-tags-data","messageBody":"Change default person tags","fileTypesAndContributionMap":{}},{"hash":"bcefcfce6a4e3b89c78a2ddc22ec75bae295221a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into change-birthdate-format","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e02350f0b55846dbcfad87e05ec81d6c1ea75bd","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"168e219c6f12eb56b17c8741635dee262105d62d","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24}}},{"hash":"eb80080650faaeb275764680bfebae57517a641e","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1d87b1cb560ad6d0594cfbfff9c5d4d8bc73b50d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24}}},{"hash":"adac76f647d60394642f062a31b4421ceb83f9f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AddAppointment","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7bdb8baaa53d29b50738eb9c083277225dff4570","isMergeCommit":true,"messageTitle":"Merge pull request #76 from billieboy7/AddAppointment","messageBody":"Add Appointment Feature ","fileTypesAndContributionMap":{}},{"hash":"ecffb0aab2b44f13280482c1ff5176b89e250082","isMergeCommit":false,"messageTitle":"Fix appointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":50}}}]},{"date":"2023-10-18","commitResults":[{"hash":"912b5769b75513f4f1dec9af85cc407cfad0f62e","isMergeCommit":false,"messageTitle":"Fix appointments storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":73}}},{"hash":"bd55a83ec32e6f2a36670b6ebb485e7cb0630683","isMergeCommit":false,"messageTitle":"Fix date formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":24},"test-code":{"insertions":12,"deletions":13}}},{"hash":"90cc555ea8bea6629116c2ed6ec0ce895dc64561","isMergeCommit":true,"messageTitle":"Merge pull request #84 from trgao/standardise-date-format","messageBody":"Fix date formatting","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"f659dc2c91e6ba389e1f697b15bfc689df6dba74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into appointment-cancel-and-view-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4180c5e00c55b8680f9a6d2ce8959bd12b9984a0","isMergeCommit":true,"messageTitle":"Merge pull request #88 from kwangthiag/resched","messageBody":"Add toString method to RescheduleCommand class","fileTypesAndContributionMap":{}},{"hash":"534dadb7143cb22cf9ea8a49c66332b9193a24ca","isMergeCommit":false,"messageTitle":"Fix invocation target error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d290f448f728431d7340e219646907a33699c4fb","isMergeCommit":true,"messageTitle":"Merge pull request #89 from dinde2004/appointment-cancel-and-view-command","messageBody":"Add function to cancel an appointment and view all appointments","fileTypesAndContributionMap":{}},{"hash":"117a75badaa03229fd771433058bbbde6dadad04","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":19},"other":{"insertions":8,"deletions":7}}},{"hash":"025890fdedf3402cbb8320146681b0865910e73b","isMergeCommit":true,"messageTitle":"Merge pull request #93 from licongshen12/branch-ScheduleCommandTest","messageBody":"Add stubs to ScheduleCommandTest","fileTypesAndContributionMap":{}},{"hash":"436d43832c99003146b6b2b4722753f1db5af574","isMergeCommit":false,"messageTitle":"Change patient id to patient name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":55},"other":{"insertions":6,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"5407dcf0ced12e08b44c0e8bdf8ccb1b6d3b52e2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":16,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"e070c0e94e9d53dff0741f3c03125e35b658a523","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b3456d5311ae81b7a8468ae891c7ee204badb086","isMergeCommit":false,"messageTitle":"Remove id from parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":67}}},{"hash":"47aa5d610fb80d9a0c3042f0391239123cbcdf1f","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":31,"deletions":33}}},{"hash":"d0a12f5bd730fd20574f3185619972e0f0516a8f","isMergeCommit":false,"messageTitle":"Remove println","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"54e6baffe6948d1f7b4d30fe6a4351a934b1bc4d","isMergeCommit":false,"messageTitle":"Fix command descriptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":33,"deletions":33}}},{"hash":"b1e347f9b4fdc37b9d160a3df3203f53abecefc3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-21","commitResults":[{"hash":"85eebf34f68e12f0dbc83667ce26f5225e89b82c","isMergeCommit":false,"messageTitle":"Enable assertions","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2023-10-22","commitResults":[{"hash":"9ad01f3efead7bd98f330731d72d3d402d752245","isMergeCommit":true,"messageTitle":"Merge pull request #96 from billieboy7/AdditionalScheduleCommandTests","messageBody":"Additional schedule command tests","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"f4828a428dc71e516f9ae93b668ab5ded13ac570","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedAppointment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":101,"deletions":0}}},{"hash":"41d6a1bf869d883cb35bbc868a8d3f64cb845b80","isMergeCommit":false,"messageTitle":"Refactor parsing datetimes and changing datetime to string functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":32},"test-code":{"insertions":18,"deletions":17}}},{"hash":"47edd90f86e7582f2ca78f22cfaf4d34bb8d4e66","isMergeCommit":false,"messageTitle":"Add additional tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":1}}},{"hash":"771298b2963a74cde55535b10729da3dd49c834b","isMergeCommit":false,"messageTitle":"Add test for non-existent patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":17},"test-code":{"insertions":10,"deletions":3}}},{"hash":"8c7cb490fff01fa74de65b6838e2f376d0f43795","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":11},"test-code":{"insertions":6,"deletions":8}}}]},{"date":"2023-10-24","commitResults":[{"hash":"23cfbe86638595fdc3df56cd6c5fe19b8edd875a","isMergeCommit":true,"messageTitle":"Merge pull request #102 from kwangthiag/resched","messageBody":"Add tests to reschedule command and fix reschedule command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dinde2004":{"docs":46,"functional-code":129,"test-code":0},"kwangthiag":{"docs":125,"functional-code":144,"test-code":190},"billieboy7":{"docs":41,"functional-code":271,"test-code":253},"licongshen12":{"docs":72,"functional-code":206,"test-code":167,"other":4},"trgao":{"docs":106,"functional-code":1235,"test-code":474,"other":6}},"authorContributionVariance":{"dinde2004":2763.7139,"kwangthiag":2714.7349,"billieboy7":12260.995,"licongshen12":6670.832,"trgao":36043.86},"authorDisplayNameMap":{"dinde2004":"CS2103T-T08-4 DOAN..HINH","kwangthiag":"CS2103T-T08-4 TAN ..HIAG","billieboy7":"CS2103T-T08-4 STAL..UMAR","licongshen12":"CS2103T-T08-4 SHEN..CONG","trgao":"CS2103T-T08-4 GAO ..NRUN"}} diff --git a/AY2324S1-CS2103T-T10-1_tp_master/authorship.json b/AY2324S1-CS2103T-T10-1_tp_master/authorship.json index 84f3a5a0..caadb44f 100644 --- a/AY2324S1-CS2103T-T10-1_tp_master/authorship.json +++ b/AY2324S1-CS2103T-T10-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# TAManager","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T10-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T10-1/tp/actions)","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"* This is **TA(Teaching Assistant) Management app for NUS(National University of Singapore) SOC(School of Computing) professors**.\u003cbr\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" * Access TA\u0027s contact details and availability for relief classes","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" * Track TA\u0027s renumeration details","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"* The project builds on a brownfield software project called _AddressBook_ used for managing contact details.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" * For detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"* It is named `TAManager` (`TAM` for short) because it was intended for easy management of TAs.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"lshaoqin":9,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":"You can reach us at the email `pohsaykeong@stu.comp.nus.edu.sg`","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"## TAManager","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"### Poh Say Keong","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/pohsaykeong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":"[[github](https://github.com/pohsaykeong)]","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/pohsaykeong.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":"* Role: Team Lead","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Overall project coordination.","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":"### Rayner Toh","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/raynertjx.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/raynertjx)]","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/raynertjx.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":"* Role: Developer (deliverables and deadlines)","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Ensure deliverables are on time and in the right format.","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":"### Lu Shaoqin","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/lshaoqin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/lshaoqin)] ","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/lshaoqin.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":"* Role: Developer (integration)","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of the software to create a whole.","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":"### Luo Zhongyi","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/luozyi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/luozyi)]","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/luozyi.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":"* Role: Developer (testing)","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":"### Sigrid Elvina Huisen","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/itssisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/itssisi)]","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/itssisi.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"itssisi"},"content":"* Role: Developer (code quality)","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"-":28,"itssisi":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"PohSayKeong"},"content":"* SoC professor","lastModifiedDate":"2023-09-28"},{"lineNumber":261,"author":{"gitId":"PohSayKeong"},"content":"* has a need to manage a significant number of teaching assistants (TAs)","lastModifiedDate":"2023-09-28"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"PohSayKeong"},"content":"**Value proposition**: ","lastModifiedDate":"2023-09-28"},{"lineNumber":268,"author":{"gitId":"PohSayKeong"},"content":"* Fast access to TA contact details and availability","lastModifiedDate":"2023-09-28"},{"lineNumber":269,"author":{"gitId":"PohSayKeong"},"content":"* Track teaching hours and claimable hours conveniently","lastModifiedDate":"2023-09-28"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"PohSayKeong"},"content":"|----------|---------|--------------------------------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2023-09-28"},{"lineNumber":278,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2023-09-28"},{"lineNumber":279,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | add new TA to my address book | |","lastModifiedDate":"2023-09-28"},{"lineNumber":280,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | remove a TA from my address book | remove entries that I no longer need |","lastModifiedDate":"2023-09-28"},{"lineNumber":281,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | view all TAs in my address book | |","lastModifiedDate":"2023-09-28"},{"lineNumber":282,"author":{"gitId":"PohSayKeong"},"content":"| `* *` | user | add a person’s email address and telegram handle | facilitate communication with that person |","lastModifiedDate":"2023-09-28"},{"lineNumber":283,"author":{"gitId":"PohSayKeong"},"content":"| `* *` | user | update the contact information of my teaching assistants | ensure I have the latest contact information |","lastModifiedDate":"2023-09-28"},{"lineNumber":284,"author":{"gitId":"PohSayKeong"},"content":"| `*` | user | have my records saved for the next session | use the information over multiple sessions |","lastModifiedDate":"2023-09-28"},{"lineNumber":285,"author":{"gitId":"PohSayKeong"},"content":"| `*` | user | view the list of courses I\u0027m teaching and their assigned TAs | filter TAs based on the courses they can teach |","lastModifiedDate":"2023-09-28"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"PohSayKeong"},"content":"**Use case: Delete a TA**","lastModifiedDate":"2023-09-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":298,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":299,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to delete a specific TA in the list","lastModifiedDate":"2023-09-28"},{"lineNumber":300,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook deletes the TA","lastModifiedDate":"2023-09-28"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"PohSayKeong"},"content":"**Use case: Update Contact Information**","lastModifiedDate":"2023-09-28"},{"lineNumber":317,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":318,"author":{"gitId":"PohSayKeong"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":319,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":320,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":321,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":322,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to update the contact of a specific TA in the list and key in the necessary information","lastModifiedDate":"2023-09-28"},{"lineNumber":323,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook updates the contact information of that TA","lastModifiedDate":"2023-09-28"},{"lineNumber":324,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":325,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":326,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":327,"author":{"gitId":"PohSayKeong"},"content":"**Extensions**","lastModifiedDate":"2023-09-28"},{"lineNumber":328,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":329,"author":{"gitId":"PohSayKeong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-09-28"},{"lineNumber":330,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":331,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":332,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"PohSayKeong"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":334,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":335,"author":{"gitId":"PohSayKeong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":336,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":337,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":338,"author":{"gitId":"PohSayKeong"},"content":"* 3b. The given contact information is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":339,"author":{"gitId":"PohSayKeong"},"content":" * 3b1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":340,"author":{"gitId":"PohSayKeong"},"content":" ","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"PohSayKeong"},"content":"**Use case: View TAs of specific course**","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":345,"author":{"gitId":"PohSayKeong"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":346,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":347,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list courses","lastModifiedDate":"2023-09-28"},{"lineNumber":348,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of courses","lastModifiedDate":"2023-09-28"},{"lineNumber":349,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to show TAs of a specific course","lastModifiedDate":"2023-09-28"},{"lineNumber":350,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook shows a list of TAs of specific course","lastModifiedDate":"2023-09-28"},{"lineNumber":351,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":352,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":353,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":354,"author":{"gitId":"PohSayKeong"},"content":"**Extensions**","lastModifiedDate":"2023-09-28"},{"lineNumber":355,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":356,"author":{"gitId":"PohSayKeong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-09-28"},{"lineNumber":357,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":358,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":359,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":360,"author":{"gitId":"PohSayKeong"},"content":"* 3a. The given course is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":361,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":362,"author":{"gitId":"PohSayKeong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":363,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":364,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":365,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":366,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"PohSayKeong"},"content":"4. Data should persist across user sessions","lastModifiedDate":"2023-09-28"},{"lineNumber":374,"author":{"gitId":"PohSayKeong"},"content":"5. Project should be able to handle information from across academic years","lastModifiedDate":"2023-09-28"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"PohSayKeong"},"content":"* **Course**: A program students are enrolled in to work towards a degree","lastModifiedDate":"2023-09-28"},{"lineNumber":381,"author":{"gitId":"PohSayKeong"},"content":"* **Teaching Assistant (TA)**: Students who support the teaching of a course","lastModifiedDate":"2023-10-02"},{"lineNumber":382,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"PohSayKeong":73,"-":363}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"Teaching Assistant Manager (TAManager) is a desktop application for managing teaching assistants, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TAM can help you manage your teaching assistant tasks more efficiently than traditional GUI apps.","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":"## Quick Start","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"1. Ensure you have Java `11` or above installed on your computer.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"2. Download the latest `TAManager.jar` from [here](https://github.com/AY2324S1-CS2103T-T10-1/tp/releases).","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":"3. Copy the file to the folder you want to use as the home folder for your Teaching Assistant Manager.","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"4. Open a command terminal, `cd` into the folder where you placed the jar file, and use the `java -jar TAManager.jar` command to run the application.","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" A GUI similar to the one below should appear in a few seconds. Note how the app contains some sample data.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":" ![UI](images/UI.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":"5. Type the command in the command box and press Enter to execute it. For example, typing `help` and pressing Enter will open the help window.","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" Here are some example commands you can try:","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":" - `list`: Lists all teaching assistants.","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"LuoZYi"},"content":" - `add n/Snowball p/87098312 e/snowball@example.com c/Computer Science y/2`: Adds a teaching assistant named Snowball to the list.","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" - `delete 3`: Deletes the 3rd teaching assistant shown in the current list.","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" - `clear`: Deletes all teaching assistants.","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" - `exit`: Exits the app.","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":"6. Refer to the [Features](#features) section below for details on each command.","lastModifiedDate":"2023-10-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"LuoZYi"},"content":"### Adding a Teaching Assistant: `add`","lastModifiedDate":"2023-10-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"LuoZYi"},"content":"Adds a new teaching assistant to the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":76,"author":{"gitId":"LuoZYi"},"content":"![add TA](images/addTA.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":"Format: `add n/NAME p/PHONE e/EMAIL c/COURSE_OF_STUDY y/YEAR [t/TAG]… [m/MODULE_CODE]…`","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"LuoZYi"},"content":"- `NAME` should be a string.","lastModifiedDate":"2023-10-02"},{"lineNumber":81,"author":{"gitId":"LuoZYi"},"content":"- `PHONE` should be an 8-digit integer.","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"LuoZYi"},"content":"- `EMAIL` should contain \"@\".","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"LuoZYi"},"content":"- `COURSE_OF_STUDY` should be a string.","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":"- `YEAR` should be an integer.","lastModifiedDate":"2023-10-02"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":"- `TAG` should be a alphanumeric string without spaces.","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":"- `MODULE_CODE` should start with 2-3 alphabets, followed by 4 numbers, and optionally end with an alphabet.","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-02"},{"lineNumber":89,"author":{"gitId":"lshaoqin"},"content":"- `add n/Snowball p/87098312 e/snowball@example.com c/Computer Science y/2 t/year2 m/CS2103T m/CS2101`","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":93,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"lshaoqin"},"content":"Added person: Snowball; Phone: 87098312; Email: snowball@example.com; Course of study: Computer Science; ","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"lshaoqin"},"content":"Year of Study: 2 ; Tags: [year2]; Modules: [CS2103T, CS2101];","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"LuoZYi"},"content":"When the command fails:","lastModifiedDate":"2023-10-02"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"LuoZYi"},"content":"- Incorrect format (e.g., missing information): `Invalid command format!`","lastModifiedDate":"2023-10-02"},{"lineNumber":101,"author":{"gitId":"LuoZYi"},"content":"- Duplicate input (the TA is already in the address book): `This TA has been registered.`","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":"- Invalid input (e.g. invalid module code): `Mod codes should have 2-3 alphabets, followed by 4 digits,","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":"and optionally ending with an alphabet.`","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"LuoZYi"},"content":"### Removing a Teaching Assistant: `delete`","lastModifiedDate":"2023-10-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"LuoZYi"},"content":"Removes the specified teaching assistant from the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":109,"author":{"gitId":"LuoZYi"},"content":"![remove TA](images/removeTA.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-10-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"LuoZYi"},"content":"- Deletes the teaching assistant at the specified `INDEX`.","lastModifiedDate":"2023-10-02"},{"lineNumber":114,"author":{"gitId":"LuoZYi"},"content":"- The index refers to the index number shown in the displayed TA list.","lastModifiedDate":"2023-10-02"},{"lineNumber":115,"author":{"gitId":"LuoZYi"},"content":"- The index must be a positive integer (1, 2, 3, ...).","lastModifiedDate":"2023-10-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":"- `list` followed by `delete 2` deletes the 2nd teaching assistant in the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":120,"author":{"gitId":"LuoZYi"},"content":"- `find Betsy` followed by `delete 1` deletes the 1st teaching assistant in the results of the `find` command.","lastModifiedDate":"2023-10-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":124,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":"Deleted Person: Snowball; Phone: 87098312; Email: snowball@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":126,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":128,"author":{"gitId":"LuoZYi"},"content":"When the command fails:","lastModifiedDate":"2023-10-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":"- Incorrect format (missing index or index is not a positive integer): `Invalid command format!`","lastModifiedDate":"2023-10-02"},{"lineNumber":131,"author":{"gitId":"LuoZYi"},"content":"- Index does not correspond to a TA: For example, there are only 5 TAs but the user tried to delete a TA at index 6","lastModifiedDate":"2023-10-02"},{"lineNumber":132,"author":{"gitId":"LuoZYi"},"content":" ","lastModifiedDate":"2023-10-02"},{"lineNumber":133,"author":{"gitId":"LuoZYi"},"content":" `The person index provided is invalid`","lastModifiedDate":"2023-10-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"LuoZYi"},"content":"### Viewing Teaching Assistants: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"LuoZYi"},"content":"Displays a list of all teaching assistants in the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"LuoZYi"},"content":"Format: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"LuoZYi"},"content":"Example: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":144,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":145,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":146,"author":{"gitId":"LuoZYi"},"content":"Here is a list of TAs:","lastModifiedDate":"2023-10-02"},{"lineNumber":147,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":"Snowball; Phone: 87098312; Email: snowball@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":149,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":150,"author":{"gitId":"LuoZYi"},"content":"Snowflake; Phone: 83124113; Email: snowflake@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":151,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":152,"author":{"gitId":"LuoZYi"},"content":"Snowman; Phone: 83172153; Email: snowman@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":153,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"LuoZYi"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL c/COURSE_OF_STUDY y/YEAR ` \u003cbr\u003e e.g., `add n/Snowball p/87098312 e/snowball@example.com c/Computer Science y/2`","lastModifiedDate":"2023-10-02"},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LuoZYi":65,"lshaoqin":8,"-":133}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"lshaoqin"},"content":" content: \"TAManager\";","lastModifiedDate":"2023-09-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"lshaoqin":1,"-":294}},{"path":"docs/team/ppp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"raynertjx"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"raynertjx"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"raynertjx"},"content":"title: \u003cYour Name\u003e\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"raynertjx"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"raynertjx"},"content":"### Project: TAManager","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"raynertjx"},"content":"TAManager is a desktop address book application made for professors to manage their teaching assistants (TA) under their charge. It provides fast access to TAs\u0027 contact details and their availabilities for tutorials/labs. You can track teaching and claimable hours among your TAs and find relief TAs for impromptu events or unforeseen circumstances.","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"raynertjx"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"raynertjx"},"content":"* **New Feature**: *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"raynertjx"},"content":"* **Code contributed**: *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"raynertjx"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"raynertjx"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"raynertjx"},"content":"* **Documentation for Developer Guide**:","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"raynertjx"},"content":"* **Documentation for User Guide**:","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"raynertjx"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"raynertjx"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"raynertjx"},"content":"*to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"raynertjx"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"raynertjx":35}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":" .append(person.getTelegram())","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" .append(\"; Free Time: \")","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" .append(person.getFreeTime())","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" builder.append(\"; Mods: \");","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" person.getMods().forEach(builder::append);","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" builder.append(\"; Work Hour: \")","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" .append(person.getHour());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":3,"PohSayKeong":2,"lshaoqin":2,"-":49,"itssisi":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a teaching assistant to the address book. \"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" + \"[\" + PREFIX_FROM + \"FROM \"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"TO] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_MOD + \"MOD]... \"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_HOUR + \"HOUR \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" + PREFIX_TELEGRAM + \"@johnd \"","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_FROM + \"10:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"12:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" + PREFIX_TAG + \"fulltime \"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_MOD + \"CS1231S \"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_HOUR + \"10\";","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New teaching assistant added: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This teaching assistant already exists in the address book\";","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":6,"raynertjx":3,"PohSayKeong":6,"lshaoqin":2,"-":75,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"raynertjx"},"content":" + \": Deletes the teaching assistant identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Teaching Assistant: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raynertjx":2,"-":67}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the teaching assistant \"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"raynertjx"},"content":" + \"identified \"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"raynertjx"},"content":" + \"by the index number used in the displayed teaching assistant list. \"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" + \"[\" + PREFIX_FROM + \"FROM \"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"TO] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_MOD + \"MOD]...\"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_HOUR + \"HOUR\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Teaching Assistant: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This teaching assistant already exists in the address book.\";","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":113,"author":{"gitId":"itssisi"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" FreeTime updatedFreeTime \u003d editPersonDescriptor.getFreeTime().orElse(personToEdit.getFreeTime());","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e updatedMods \u003d editPersonDescriptor.getMods().orElse(personToEdit.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" Hour updatedHour \u003d editPersonDescriptor.getHour().orElse(personToEdit.getHour());","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"PohSayKeong"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedTelegram, updatedTags, updatedFreeTime,","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"LuoZYi"},"content":" updatedMods, updatedHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"PohSayKeong"},"content":" * Stores the details to edit the person with. Each non-empty field value will","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" * replace the","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"itssisi"},"content":" private Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"lshaoqin"},"content":" private Set\u003cMod\u003e mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" private Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"itssisi"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"itssisi"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":175,"author":{"gitId":"PohSayKeong"},"content":" setFreeTime(toCopy.freeTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"lshaoqin"},"content":" setMods(toCopy.mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":177,"author":{"gitId":"LuoZYi"},"content":" setHour(toCopy.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"LuoZYi"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, telegram, tags, mods, freeTime, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"itssisi"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":212,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"itssisi"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":216,"author":{"gitId":"itssisi"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"PohSayKeong"},"content":" * Returns an unmodifiable tag set, which throws","lastModifiedDate":"2023-10-12"},{"lineNumber":229,"author":{"gitId":"PohSayKeong"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"PohSayKeong"},"content":" public void setFreeTime(FreeTime freeTime) {","lastModifiedDate":"2023-10-12"},{"lineNumber":238,"author":{"gitId":"PohSayKeong"},"content":" if (freeTime !\u003d FreeTime.EMPTY_FREE_TIME) {","lastModifiedDate":"2023-10-12"},{"lineNumber":239,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":240,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":241,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":242,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":243,"author":{"gitId":"PohSayKeong"},"content":" public Optional\u003cFreeTime\u003e getFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":244,"author":{"gitId":"PohSayKeong"},"content":" return Optional.ofNullable(freeTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":245,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":246,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":247,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":248,"author":{"gitId":"lshaoqin"},"content":" * Sets {@code mods} to this object\u0027s {@code mods}.","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"lshaoqin"},"content":" * A defensive copy of {@code mods} is used internally.","lastModifiedDate":"2023-10-10"},{"lineNumber":250,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":251,"author":{"gitId":"lshaoqin"},"content":" public void setMods(Set\u003cMod\u003e mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":252,"author":{"gitId":"lshaoqin"},"content":" this.mods \u003d (mods !\u003d null) ? new HashSet\u003c\u003e(mods) : null;","lastModifiedDate":"2023-10-10"},{"lineNumber":253,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":254,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":255,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":256,"author":{"gitId":"PohSayKeong"},"content":" * Returns an unmodifiable mod set, which throws","lastModifiedDate":"2023-10-12"},{"lineNumber":257,"author":{"gitId":"PohSayKeong"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":258,"author":{"gitId":"lshaoqin"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":259,"author":{"gitId":"lshaoqin"},"content":" * Returns {@code Optional#empty()} if {@code mods} is null.","lastModifiedDate":"2023-10-10"},{"lineNumber":260,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":261,"author":{"gitId":"lshaoqin"},"content":" public Optional\u003cSet\u003cMod\u003e\u003e getMods() {","lastModifiedDate":"2023-10-10"},{"lineNumber":262,"author":{"gitId":"lshaoqin"},"content":" return (mods !\u003d null) ? Optional.of(Collections.unmodifiableSet(mods)) : Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":263,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":264,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":265,"author":{"gitId":"LuoZYi"},"content":" public void setHour(Hour hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"LuoZYi"},"content":" public Optional\u003cHour\u003e getHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"LuoZYi"},"content":" return Optional.ofNullable(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":271,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":272,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"itssisi"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":289,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-12"},{"lineNumber":290,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 Objects.equals(freeTime, otherEditPersonDescriptor.freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":291,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 Objects.equals(mods, otherEditPersonDescriptor.mods)","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 Objects.equals(hour, otherEditPersonDescriptor.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"itssisi"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"PohSayKeong"},"content":" .add(\"free time\", freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":304,"author":{"gitId":"lshaoqin"},"content":" .add(\"mods\", mods)","lastModifiedDate":"2023-10-10"},{"lineNumber":305,"author":{"gitId":"LuoZYi"},"content":" .add(\"work hour\", hour)","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"LuoZYi":20,"raynertjx":5,"PohSayKeong":29,"lshaoqin":22,"-":219,"itssisi":14}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all teaching assistants whose names contain \"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"raynertjx"},"content":" + \"any \"","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"raynertjx"},"content":" + \"of \"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"raynertjx":3,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all teaching assistants\";","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raynertjx":1,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" PREFIX_FROM, PREFIX_TO, PREFIX_TAG, PREFIX_MOD, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_HOUR)","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" PREFIX_FROM, PREFIX_TO, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":" FreeTime freeTime \u003d ParserUtil.parseFreeTime(argMultimap.getValue(PREFIX_FROM).orElseGet(() -\u003e null),","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.getValue((PREFIX_TO)).orElseGet(() -\u003e null));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e modList \u003d ParserUtil.parseMods(argMultimap.getAllValues(PREFIX_MOD));","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" Hour hour \u003d ParserUtil.parseHour(argMultimap.getValue(PREFIX_HOUR).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" Person person \u003d new Person(name, phone, email, telegram, tagList, freeTime, modList, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":" * in the given","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"LuoZYi":7,"PohSayKeong":9,"lshaoqin":3,"-":52,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tele/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public static final Prefix PREFIX_MOD \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" public static final Prefix PREFIX_HOUR \u003d new Prefix(\"h/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LuoZYi":1,"PohSayKeong":3,"lshaoqin":1,"-":15,"itssisi":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" PREFIX_TAG, PREFIX_MOD, PREFIX_FROM, PREFIX_TO, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" Set\u003cTag\u003e tags \u003d parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).orElse(null);","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" editPersonDescriptor.setTags(tags);","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"PohSayKeong"},"content":" if (argMultimap.getValue(PREFIX_FROM).isPresent() \u0026\u0026 argMultimap.getValue(PREFIX_TO).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" editPersonDescriptor.setFreeTime(ParserUtil.parseFreeTime(argMultimap.getValue(PREFIX_FROM).get(),","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.getValue(PREFIX_TO).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e mods \u003d parseModsForEdit(argMultimap.getAllValues(PREFIX_MOD)).orElse(null);","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" editPersonDescriptor.setMods(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"LuoZYi"},"content":" if (argMultimap.getValue(PREFIX_HOUR).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"LuoZYi"},"content":" editPersonDescriptor.setHour(ParserUtil.parseHour(argMultimap.getValue(PREFIX_HOUR).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" * Parses {@code Collection\u003cString\u003e mods} into a {@code Set\u003cMod\u003e} if {@code mods} is non-empty.","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" * If {@code mods} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" * {@code Set\u003cMod\u003e} containing zero mods.","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":" private Optional\u003cSet\u003cMod\u003e\u003e parseModsForEdit(Collection\u003cString\u003e mods) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" assert mods !\u003d null;","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":" if (mods.isEmpty()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"lshaoqin"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" Collection\u003cString\u003e modSet \u003d mods.size() \u003d\u003d 1 \u0026\u0026 mods.contains(\"\") ? Collections.emptySet() : mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" return Optional.of(ParserUtil.parseMods(modSet));","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"LuoZYi":5,"PohSayKeong":6,"lshaoqin":22,"-":81,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"itssisi"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"itssisi"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"itssisi"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"itssisi"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"itssisi"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"itssisi"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"itssisi"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" return Tag.of(trimmedTag);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":130,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"PohSayKeong"},"content":" * Parses {@code String from} and {@code String to} into a {@code FreeTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"PohSayKeong"},"content":" public static FreeTime parseFreeTime(String from, String to) throws DateTimeParseException, ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"PohSayKeong"},"content":" return FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"LuoZYi"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" LocalTime start \u003d LocalTime.parse(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PohSayKeong"},"content":" LocalTime end \u003d LocalTime.parse(to);","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" if (!FreeTime.isValidFreeTime(start, end)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"PohSayKeong"},"content":" throw new ParseException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" return new FreeTime(start, end);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"LuoZYi"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"LuoZYi"},"content":" throw new ParseException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"lshaoqin"},"content":" * Parses a {@code String mod} into a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"lshaoqin"},"content":" public static Mod parseMod(String mod) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(mod);","lastModifiedDate":"2023-10-10"},{"lineNumber":156,"author":{"gitId":"lshaoqin"},"content":" String trimmedMod \u003d mod.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"lshaoqin"},"content":" if (!Mod.isValidModName(trimmedMod)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"lshaoqin"},"content":" throw new ParseException(Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"lshaoqin"},"content":" return Mod.of(trimmedMod);","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":162,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"lshaoqin"},"content":" * Parses a {@code String mod} into a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":165,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" * @throws ParseException if the given {@code mod} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":168,"author":{"gitId":"lshaoqin"},"content":" public static Set\u003cMod\u003e parseMods(Collection\u003cString\u003e mods) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"lshaoqin"},"content":" final Set\u003cMod\u003e modSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"lshaoqin"},"content":" for (String modName : mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"lshaoqin"},"content":" modSet.add(parseMod(modName));","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"lshaoqin"},"content":" return modSet;","lastModifiedDate":"2023-10-10"},{"lineNumber":175,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"LuoZYi"},"content":" * Parses a {@code String hour} into a {@code hour}.","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"LuoZYi"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"LuoZYi"},"content":" * @throws ParseException if the given {@code hour} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"LuoZYi"},"content":" public static Hour parseHour(String hour) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"LuoZYi"},"content":" requireNonNull(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"LuoZYi"},"content":" String trimmedHour \u003d hour.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"LuoZYi"},"content":" if (!Hour.isValidHour(trimmedHour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"LuoZYi"},"content":" throw new ParseException(Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"LuoZYi"},"content":" return new Hour(trimmedHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LuoZYi":20,"PohSayKeong":19,"lshaoqin":27,"-":114,"itssisi":10}},{"path":"src/main/java/seedu/address/model/person/FreeTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PohSayKeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"PohSayKeong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"PohSayKeong"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":" * Represents a Person\u0027s free time of the day in the TAM.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFreeTime(LocalTime, LocalTime)}","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"public class FreeTime {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PohSayKeong"},"content":" public static final FreeTime EMPTY_FREE_TIME \u003d new FreeTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" \"TA\u0027s free time should have a start and end time in HH:mm format\";","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":" public final LocalTime from;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":" public final LocalTime to;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * Constructs a {@code FreeTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"PohSayKeong"},"content":" * @param from Start time.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"PohSayKeong"},"content":" * @param to End time.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" public FreeTime(LocalTime from, LocalTime to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"PohSayKeong"},"content":" checkArgument(isValidFreeTime(from, to), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d from;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d to;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" * Empty FreeTime","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"PohSayKeong"},"content":" * Returns true if given start and end time is valid.","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public static boolean isValidFreeTime(LocalTime from, LocalTime to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" return to.isAfter(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":" * Returns string representation of from time.","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" * @return From time in HH:mm format.","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" public String getFrom() {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" return null;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"PohSayKeong"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":" return from.format(dtf);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"PohSayKeong"},"content":" * Returns string representation of to time.","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"PohSayKeong"},"content":" * @return To time in HH:mm format.","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"PohSayKeong"},"content":" public String getTo() {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"PohSayKeong"},"content":" if (to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" return null;","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"PohSayKeong"},"content":" return to.format(dtf);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"PohSayKeong"},"content":" if (this.equals(FreeTime.EMPTY_FREE_TIME)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"PohSayKeong"},"content":" return \" \";","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"PohSayKeong"},"content":" return String.format(\"%s-%s\", from, to);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"PohSayKeong"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"PohSayKeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"PohSayKeong"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"PohSayKeong"},"content":" if (this \u003d\u003d EMPTY_FREE_TIME) {","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"PohSayKeong"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" if (!(other instanceof seedu.address.model.person.FreeTime)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"PohSayKeong"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"PohSayKeong"},"content":" seedu.address.model.person.FreeTime otherFreeTime \u003d (seedu.address.model.person.FreeTime) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"PohSayKeong"},"content":" return from.equals(otherFreeTime.from) \u0026\u0026 to.equals(otherFreeTime.to);","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"PohSayKeong"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"PohSayKeong":100}},{"path":"src/main/java/seedu/address/model/person/Hour.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LuoZYi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"LuoZYi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHour(String)}","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"public class Hour {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":" \"Hour should only be positive integers and should be less than 9999\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]\\\\d{0,3}$\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":" public final String value;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":" * @param hour A valid hour.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" public Hour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":" requireNonNull(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":" checkArgument(isValidHour(hour), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":" this.value \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"LuoZYi"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" public static boolean isValidHour(String test) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" return value;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"LuoZYi"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" if (!(other instanceof Hour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" Hour otherHour \u003d (Hour) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" return value.equals(otherHour.value);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"LuoZYi":62}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" private final Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" private final FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" private final Set\u003cMod\u003e mods \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" private final Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" public Person(Name name, Phone phone, Email email, Telegram telegram, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" FreeTime freeTime, Set\u003cMod\u003e mods, Hour hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" requireAllNonNull(name, phone, email, telegram, tags, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d freeTime \u003d\u003d null ? FreeTime.EMPTY_FREE_TIME : freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" this.mods.addAll(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" return telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" public FreeTime getFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" return freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" * Returns an immutable mod set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" public Set\u003cMod\u003e getMods() {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" return Collections.unmodifiableSet(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" public Hour getHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" return hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 freeTime.equals(otherPerson.freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 mods.equals(otherPerson.mods)","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 hour.equals(otherPerson.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" return Objects.hash(name, phone, email, telegram, tags, mods, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"itssisi"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" .add(\"free time\", freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lshaoqin"},"content":" .add(\"mods\", mods)","lastModifiedDate":"2023-10-10"},{"lineNumber":143,"author":{"gitId":"LuoZYi"},"content":" .add(\"hours\", hour)","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":12,"PohSayKeong":10,"lshaoqin":12,"-":106,"itssisi":6}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"itssisi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"itssisi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"itssisi"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"public class Telegram {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram handle should be between 5-32 characters, \"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":" + \"and it should start with @\";","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":" * The first character of the telegram handle should be @,","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":" * blank string should not be a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":" public static final String VALIDATION_REGEX \u003d \".*\\\\B@(?\u003d\\\\w{5,32}\\\\b)[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*.*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":" public final String value;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"itssisi"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" * Constructs an {@code Telegram}.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" value \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"itssisi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" return value;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"itssisi"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"itssisi"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"itssisi":66}},{"path":"src/main/java/seedu/address/model/tag/Label.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" * Represents a Label in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" * Guarantees: immutable;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public abstract class Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public final String name;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Label(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" * Returns true if a given string matches the name of this label.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public boolean matchName(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" return this.name.equals(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" return name.hashCode();","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" return \u0027[\u0027 + name + \u0027]\u0027;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":33}},{"path":"src/main/java/seedu/address/model/tag/Mod.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" * Represents a Mod in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"public class Mod extends Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Mod codes should start with 2-3 alphabets, \"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" + \"followed by 4 numbers, and optionally end with an alphabet.\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" // 2-3 alphabets, followed by 4 digits, and optionally ending with an alphabet","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z]{2,3}\\\\d{4}[A-Za-z]?$\";","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" * Constructs a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" * @param name A mod name.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public Mod(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" super(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" * Factory method to construct a {@code Mod}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" * @param name A valid mod name.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public static Mod of(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" checkArgument(isValidModName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return new Mod(name.toUpperCase()); // Mods can only have uppercase letters","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" * Returns true if a given string is a valid mod name.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" public static boolean isValidModName(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" if (!(other instanceof Mod)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" Mod otherMod \u003d (Mod) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" return name.equals(otherMod.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":56}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"public class Tag extends Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" * @param name A tag name.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public Tag(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" super(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" * Factory method to construct a {@code Tag}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" * @param name A valid tag name.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public static Tag of(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" checkArgument(isValidTagName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return new Tag(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" return name.equals(otherTag.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lshaoqin":16,"-":40}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * @formatter:off","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[]{","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@alexyeoh\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"11:30\"), LocalTime.parse(\"12:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"8\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@berrrrrnice\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"12:30\"), LocalTime.parse(\"13:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"2\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@heyimcharlotte\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":" null,","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"8\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@davidli123\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"14:30\"), LocalTime.parse(\"15:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"10\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@irfannn\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" null,","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS1231S\"), new Hour(\"20\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@rollieroy\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"11:30\"), LocalTime.parse(\"12:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS1231S\"), new Hour(\"5\"))","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" * Returns a mod set containing the list of strings given.","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" public static Set\u003cMod\u003e getModSet(String... strings) {","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" .map(Mod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"LuoZYi":9,"PohSayKeong":12,"lshaoqin":11,"-":46,"itssisi":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMod.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" * Jackson-friendly version of {@link Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"public class JsonAdaptedMod {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" private final String modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" * Constructs a {@code JsonAdaptedMod} with the given {@code modName}.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" @JsonCreator","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" public JsonAdaptedMod(String modName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" this.modName \u003d modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" * Converts a given {@code Mod} into this class for Jackson use.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" public JsonAdaptedMod(Mod source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" modName \u003d source.name;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" @JsonValue","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" public String getModName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" * Converts this Jackson-friendly adapted mod object into the model\u0027s {@code Mod} object.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted mod.","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" public Mod toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" if (!Mod.isValidModName(modName)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" throw new IllegalValueException(Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" return Mod.of(modName);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":46}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" private final String telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":" private final String from;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" private final String to;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" private final List\u003cJsonAdaptedMod\u003e mods \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" private final String hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"from\") String from,","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" @JsonProperty(\"to\") String to,","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" @JsonProperty(\"mods\") List\u003cJsonAdaptedMod\u003e mods,","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" @JsonProperty(\"hour\") String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d from;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d to;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" if (mods !\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" this.mods.addAll(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"itssisi"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"PohSayKeong"},"content":" from \u003d source.getFreeTime().getFrom();","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"PohSayKeong"},"content":" to \u003d source.getFreeTime().getTo();","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" mods.addAll(source.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" .map(JsonAdaptedMod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"LuoZYi"},"content":" hour \u003d source.getHour().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"PohSayKeong"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"PohSayKeong"},"content":" * {@code Person} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" * the adapted person.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":" final List\u003cMod\u003e personMods \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" for (JsonAdaptedMod mod : mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" personMods.add(mod.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"itssisi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"itssisi"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"itssisi"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"itssisi"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"itssisi"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" FreeTime modelFreeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PohSayKeong"},"content":" if (from !\u003d null \u0026\u0026 to !\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" LocalTime start \u003d LocalTime.parse(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"PohSayKeong"},"content":" LocalTime end \u003d LocalTime.parse(to);","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" if (!FreeTime.isValidFreeTime(start, end)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" throw new IllegalValueException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PohSayKeong"},"content":" modelFreeTime \u003d new FreeTime(start, end);","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"lshaoqin"},"content":" final Set\u003cMod\u003e modelMods \u003d new HashSet\u003c\u003e(personMods);","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"LuoZYi"},"content":" if (hour \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"LuoZYi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Hour.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"LuoZYi"},"content":" if (!Hour.isValidHour(hour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"LuoZYi"},"content":" throw new IllegalValueException(Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"LuoZYi"},"content":" final Hour modelHour \u003d new Hour(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"LuoZYi"},"content":" return new Person(modelName, modelPhone, modelEmail, modelTelegram, modelTags,","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" modelFreeTime, modelMods, modelHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LuoZYi":16,"PohSayKeong":26,"lshaoqin":14,"-":96,"itssisi":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" tagName \u003d source.name;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" return Tag.of(tagName);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"lshaoqin":2,"-":46}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * keywords in JavaFX.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" * issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" private Label telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" private Label freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" private Label hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" * display.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" phone.setText(\"Phone: \" + person.getPhone().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" telegram.setText(\"Telegram: \" + person.getTelegram().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":" email.setText(\"Email: \" + person.getEmail().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.name))","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.name)));","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"LuoZYi"},"content":" freeTime.setText(\"Free Time: \" + person.getFreeTime().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"LuoZYi"},"content":" hour.setText(\"Work Hour: \" + person.getHour().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" person.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" .sorted(Comparator.comparing(mod -\u003e mod.name))","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" .forEach(mod -\u003e {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d new Label(mod.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" label.setStyle(\"-fx-background-color: #FF8C00\");","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" });","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LuoZYi":7,"PohSayKeong":8,"lshaoqin":9,"-":50,"itssisi":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" \u003cFlowPane fx:id\u003d\"mods\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" \u003cLabel fx:id\u003d\"freeTime\" styleClass\u003d\"cell_small_label\" text\u003d\"Free From: \\$freeTime\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" \u003cLabel fx:id\u003d\"hour\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$hour\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LuoZYi":1,"PohSayKeong":1,"lshaoqin":1,"-":34,"itssisi":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" private final Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"lshaoqin"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withMods().build();","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LuoZYi":2,"lshaoqin":1,"-":171,"itssisi":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amyyy\";","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bobbyyz\";","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public static final String VALID_FROM_BOB \u003d \"12:00\";","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" public static final String VALID_TO_BOB \u003d \"13:00\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" public static final String VALID_MOD_CS2103T \u003d \"CS2103T\";","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" public static final String VALID_MOD_CS1231 \u003d \"CS1231\";","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_EMPTY_HOUR \u003d \"0\";","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_HOUR_FIVE \u003d \"5\";","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_HOUR_SIXTY \u003d \"60\";","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":" public static final String FROM_DESC_BOB \u003d \" \" + PREFIX_FROM + VALID_FROM_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"PohSayKeong"},"content":" public static final String TO_DESC_BOB \u003d \" \" + PREFIX_TO + VALID_TO_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" public static final String MOD_DESC_CS2103T \u003d \" \" + PREFIX_MOD + VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" public static final String MOD_DESC_CS1231 \u003d \" \" + PREFIX_MOD + VALID_MOD_CS1231;","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_FIVE \u003d \" \" + PREFIX_HOUR + VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_SIXTY \u003d \" \" + PREFIX_HOUR + VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_EMPTY \u003d \" \" + PREFIX_HOUR + VALID_EMPTY_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM; // empty string not allowed for addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" public static final String INVALID_MOD_DESC \u003d \" \" + PREFIX_MOD + \"ABCD2100\"; // Four character prefixes not allowed","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"LuoZYi"},"content":" public static final String INVALID_HOUR_DESC \u003d \" \" + PREFIX_HOUR + \"20000\"; // Hour is out of range","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"LuoZYi"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"itssisi"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"LuoZYi"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult}","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":" * \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"PohSayKeong"},"content":" * Convenience wrapper to","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" * {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"PohSayKeong"},"content":" * - the address book, filtered person list and selected person in","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"PohSayKeong"},"content":" * {@code actualModel} remain unchanged","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" * {@code targetIndex} in the","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"itssisi"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Collections.singletonList(splitName[0])));","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"LuoZYi":11,"PohSayKeong":15,"lshaoqin":8,"-":114,"itssisi":9}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardCommand.equals(new Object()));","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"lshaoqin":3,"-":183}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPTY_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":" assertEquals(DESC_AMY, descriptorWithSameValues);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertEquals(DESC_AMY, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, DESC_BOB);","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" // different free time -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"LuoZYi"},"content":" // different hours -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withHour(VALID_EMPTY_HOUR).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"itssisi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"itssisi"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"PohSayKeong"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", free time\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" + editPersonDescriptor.getFreeTime().orElse(null) + \", mods\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" + editPersonDescriptor.getMods().orElse(null) + \", work hour\u003d\"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" + editPersonDescriptor.getHour().orElse(null) + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LuoZYi":17,"PohSayKeong":2,"-":54,"itssisi":15}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FROM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MOD_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TO_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).withMods(VALID_MOD_CS1231)","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" + TELEGRAM_DESC_BOB + FROM_DESC_BOB + TO_DESC_BOB + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"LuoZYi"},"content":" + MOD_DESC_CS1231 + HOUR_DESC_FIVE, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" // multiple tags and mods - all accepted","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":80,"author":{"gitId":"LuoZYi"},"content":" .withMods(VALID_MOD_CS1231, VALID_MOD_CS2103T).withHour(VALID_HOUR_SIXTY)","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB + FROM_DESC_BOB + TO_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + MOD_DESC_CS2103T + HOUR_DESC_SIXTY,","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"LuoZYi"},"content":" // multiple hour","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, HOUR_DESC_FIVE + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"itssisi"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" + HOUR_DESC_FIVE + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"LuoZYi"},"content":" PREFIX_PHONE, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, INVALID_HOUR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_HOUR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"PohSayKeong"},"content":" // zero tags and no free time","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"PohSayKeong"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFreeTime(null, null).withMods().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"LuoZYi"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_AMY + HOUR_DESC_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":203,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":207,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-10"},{"lineNumber":215,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":221,"author":{"gitId":"lshaoqin"},"content":" // invalid mod","lastModifiedDate":"2023-10-10"},{"lineNumber":222,"author":{"gitId":"lshaoqin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":223,"author":{"gitId":"LuoZYi"},"content":" + INVALID_MOD_DESC + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"LuoZYi"},"content":" + MOD_DESC_CS1231 + INVALID_HOUR_DESC, Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"LuoZYi"},"content":" + HOUR_DESC_FIVE, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":235,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HOUR_DESC_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"LuoZYi":53,"PohSayKeong":4,"lshaoqin":5,"-":157,"itssisi":19}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" private static final String MOD_EMPTY \u003d \" \" + PREFIX_MOD;","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"itssisi"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, \"1\" + INVALID_HOUR_DESC, Hour.MESSAGE_CONSTRAINTS); // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TELEGRAM_AMY + VALID_PHONE_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" + VALID_HOUR_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"LuoZYi"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"itssisi"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"itssisi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":179,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":180,"author":{"gitId":"lshaoqin"},"content":" // mods","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"lshaoqin"},"content":" userInput \u003d targetIndex.getOneBased() + MOD_DESC_CS1231;","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"lshaoqin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMods(VALID_MOD_CS1231).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"lshaoqin"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"lshaoqin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"LuoZYi"},"content":" // hour","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"LuoZYi"},"content":" userInput \u003d targetIndex.getOneBased() + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"LuoZYi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"LuoZYi"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"LuoZYi"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":200,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":210,"author":{"gitId":"itssisi"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + HOUR_DESC_SIXTY + HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":216,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"LuoZYi"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"LuoZYi"},"content":" + INVALID_EMAIL_DESC + INVALID_HOUR_DESC + INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":224,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":230,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":238,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":239,"author":{"gitId":"lshaoqin"},"content":" public void parse_resetMods_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":240,"author":{"gitId":"lshaoqin"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2023-10-12"},{"lineNumber":241,"author":{"gitId":"lshaoqin"},"content":" String userInput \u003d targetIndex.getOneBased() + MOD_EMPTY;","lastModifiedDate":"2023-10-12"},{"lineNumber":242,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":243,"author":{"gitId":"lshaoqin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withMods().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":244,"author":{"gitId":"lshaoqin"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-12"},{"lineNumber":245,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":246,"author":{"gitId":"lshaoqin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":247,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"LuoZYi":32,"lshaoqin":20,"-":187,"itssisi":9}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" private static final String INVALID_HOUR \u003d \"303539\";","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" private static final String VALID_TELEGRAM \u003d \"@telehello\";","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" private static final String VALID_HOUR \u003d \"24\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"itssisi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"itssisi"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"itssisi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2023-10-10"},{"lineNumber":127,"author":{"gitId":"itssisi"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" Tag expectedTag \u003d Tag.of(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"lshaoqin"},"content":" Tag expectedTag \u003d Tag.of(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"lshaoqin"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(Tag.of(VALID_TAG_1), Tag.of(VALID_TAG_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseHour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"LuoZYi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseHour(INVALID_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"LuoZYi"},"content":" Hour expectedHour \u003d new Hour(VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"LuoZYi"},"content":" assertEquals(expectedHour, ParserUtil.parseHour(VALID_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"LuoZYi"},"content":" String hourWithWhitespace \u003d WHITESPACE + VALID_HOUR + WHITESPACE;","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" Hour expectedHour \u003d new Hour(VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"LuoZYi"},"content":" assertEquals(expectedHour, ParserUtil.parseHour(hourWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"LuoZYi":28,"lshaoqin":3,"-":180,"itssisi":13}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"lshaoqin"},"content":" final AddressBook standardAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"lshaoqin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"lshaoqin"},"content":" AddressBook copyAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"lshaoqin"},"content":" assertEquals(standardAddressBook, copyAddressBook);","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" assertEquals(standardAddressBook, standardAddressBook);","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(new Object()));","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"lshaoqin"},"content":" // different persons -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"lshaoqin"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" differentAddressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(differentAddressBook));","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"lshaoqin":26,"-":105,"itssisi":3}},{"path":"src/test/java/seedu/address/model/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public void testGetSamplePersons() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" assertEquals(6, samplePersons.length); // Assuming there are 6 sample persons in the array","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public void testGetSampleAddressBook() {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" ReadOnlyAddressBook addressBook \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" assertEquals(6, addressBook.getPersonList().size()); // Assuming there are 6 persons in the address book","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":22}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" UserPrefs userPrefsCopy \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" assertTrue(userPrefs.equals(userPrefsCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" assertTrue(userPrefs.equals(userPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" // different gui settings -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs.setGuiSettings(new GuiSettings(1, 1, 1, 1));","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(differentUserPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" // different address book file path -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(differentUserPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"lshaoqin":33,"-":21}},{"path":"src/test/java/seedu/address/model/person/FreeTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PohSayKeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"PohSayKeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"public class FreeTimeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(NullPointerException.class, () -\u003e new FreeTime(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" public void constructor_invalidFreeTime_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" LocalTime curr \u003d LocalTime.now();","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FreeTime(curr, curr));","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" public void isValidFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"PohSayKeong"},"content":" // null from and to","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(NullPointerException.class, () -\u003e FreeTime.isValidFreeTime(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" LocalTime from \u003d LocalTime.parse(\"12:20\");","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" LocalTime to \u003d LocalTime.parse(\"23:44\");","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":" LocalTime closeFrom \u003d LocalTime.parse(\"12:21\");","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" // invalid free time","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(FreeTime.isValidFreeTime(from, from)); // same from and to","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(FreeTime.isValidFreeTime(to, from)); // to before from","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" // valid free time","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(FreeTime.isValidFreeTime(from, to)); // to after from","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(FreeTime.isValidFreeTime(from, closeFrom)); // very short","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" LocalTime from \u003d LocalTime.parse(\"12:20\");","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" LocalTime to \u003d LocalTime.parse(\"23:44\");","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" LocalTime closeFrom \u003d LocalTime.parse(\"12:21\");","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" FreeTime freeTime \u003d new FreeTime(from, to);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(freeTime.equals(new FreeTime(LocalTime.parse(\"12:20\"), LocalTime.parse(\"23:44\"))));","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(freeTime.equals(freeTime));","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(5.0f));","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"PohSayKeong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(new FreeTime(from, closeFrom)));","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"PohSayKeong":64}},{"path":"src/test/java/seedu/address/model/person/HourTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LuoZYi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"public class HourTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e new Hour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" public void constructor_invalidHour_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":" String invalidHour \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Hour(invalidHour));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":" public void isValidHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" // null working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e Hour.isValidHour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"LuoZYi"},"content":" // invalid working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"32805\")); // working hour too long","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"-4\")); // negative working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"39o\")); // invalid working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" // valid telegram handle","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" assertTrue(Hour.isValidHour(\"38\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"LuoZYi"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" Hour hour \u003d new Hour(\"8848\");","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"LuoZYi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" assertEquals(hour, new Hour(\"8848\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" assertEquals(hour, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(null, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(5.0f, hour, \"0.0\");","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"LuoZYi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(hour, new Hour(\"884\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"LuoZYi":59}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"itssisi"},"content":" predicate \u003d new NameContainsKeywordsPredicate(List.of(\"Carol\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" .withEmail(\"alice@email.com\").withTelegram(\"@aliceheyhey\").build()));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":78,"itssisi":8}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).withMods(VALID_MOD_CS1231)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"itssisi"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" assertNotEquals(new Object(), ALICE);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"itssisi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"LuoZYi"},"content":" // different free time -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"LuoZYi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" // different mods -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMods(VALID_MOD_CS1231).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"LuoZYi"},"content":" // different hour -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"LuoZYi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"itssisi"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"PohSayKeong"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" + \", free time\u003d\" + ALICE.getFreeTime() + \", mods\u003d\" + ALICE.getMods()","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"LuoZYi"},"content":" + \", hours\u003d\" + ALICE.getHour() + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"LuoZYi":14,"PohSayKeong":1,"lshaoqin":12,"-":88,"itssisi":15}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"itssisi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"itssisi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"public class TelegramTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":" public void isValidTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" // null telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":" // invalid telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"@heymumble_jumbo123blahblahhellohellotestme\")); // long address","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"@s\")); // one character","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" // valid telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":" assertTrue(Telegram.isValidTelegram(\"@heyanything\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" Telegram telegram \u003d new Telegram(\"@helloitstele\");","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" assertEquals(telegram, new Telegram(\"@helloitstele\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" assertEquals(telegram, telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5.0f, telegram, \"0.0\");","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":" assertNotEquals(telegram, new Telegram(\"@todayisnice\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"itssisi":58}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":172,"itssisi":3}},{"path":"src/test/java/seedu/address/model/tag/LabelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"public class LabelTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" public void matchName_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d Tag.of(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" assert label.matchName(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" public void matchName_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d Tag.of(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" assert !label.matchName(\"label2\");","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":17}},{"path":"src/test/java/seedu/address/model/tag/ModTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public class ModTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public void equalsToItself_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assert mod.equals(mod);","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherModWithSameName_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" Mod mod1 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" Mod mod2 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" assert mod1.equals(mod2);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherModWithDifferentName_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" Mod mod1 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" Mod mod2 \u003d Mod.of(\"CS2101\");","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" assert !mod1.equals(mod2);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherTag_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" Tag tag \u003d Tag.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" assert !mod.equals(tag);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" public void equalsToNull_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" assert !mod.equals(null);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Mod.of(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" public void constructor_invalidModName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" String invalidModName \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Mod.of(invalidModName));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" public void isValidModName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" // null mod name","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Mod.isValidModName(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":56}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.of(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Tag.of(invalidTagName));","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"lshaoqin":2,"-":24}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" private static final String INVALID_FROM \u003d \"19:55\";","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":" private static final String INVALID_TO \u003d \"10:21\";","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" private static final String INVALID_MOD \u003d \"CS12231S\";","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" private static final String INVALID_HOUR \u003d \"1000000\";","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" private static final String VALID_FROM \u003d \"10:21\";","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" private static final String VALID_TO \u003d \"19:55\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" private static final List\u003cJsonAdaptedMod\u003e VALID_MODS \u003d BENSON.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" .map(JsonAdaptedMod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" private static final String VALID_HOUR \u003d \"100\";","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"itssisi"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"itssisi"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"itssisi"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" invalidTags, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"lshaoqin"},"content":" public void toModelType_invalidMods_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"lshaoqin"},"content":" List\u003cJsonAdaptedMod\u003e invalidMods \u003d new ArrayList\u003c\u003e(VALID_MODS);","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"lshaoqin"},"content":" invalidMods.add(new JsonAdaptedMod(INVALID_MOD));","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"lshaoqin"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"LuoZYi"},"content":" VALID_FROM, VALID_TO, invalidMods, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PohSayKeong"},"content":" public void toModelType_invalidFreeTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, INVALID_FROM, INVALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" String expectedMessage \u003d FreeTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"PohSayKeong"},"content":" public void toModelType_nullFreeTime_doesNotThrowException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, null, null, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"PohSayKeong"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"LuoZYi"},"content":" public void toModelType_invalidHour_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"LuoZYi"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"LuoZYi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, INVALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"LuoZYi"},"content":" String expectedMessage \u003d Hour.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" public void toModelType_nullHour_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"LuoZYi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"LuoZYi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Hour.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LuoZYi":31,"PohSayKeong":31,"lshaoqin":12,"-":95,"itssisi":7}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" private final EditPersonDescriptor descriptor;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(person.getFreeTime());","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" descriptor.setTags(person.getTags().size() \u003d\u003d 0 ? null : person.getTags());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" descriptor.setMods(person.getMods().size() \u003d\u003d 0 ? null : person.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"itssisi"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" public EditPersonDescriptorBuilder withTelegram(String address) {","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" descriptor.setTelegram(new Telegram(address));","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" * Sets the {@code FreeTime} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" public EditPersonDescriptorBuilder withFreeTime(String from, String to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(FreeTime.EMPTY_FREE_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(new FreeTime(LocalTime.parse(from), LocalTime.parse(to)));","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" * Parses the {@code mods} into a {@code Set\u003cMod\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" * that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" public EditPersonDescriptorBuilder withMods(String... mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e modSet \u003d Stream.of(mods).map(Mod::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":" descriptor.setMods(modSet);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"LuoZYi"},"content":" * Parses the {@code hour} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"LuoZYi"},"content":" * that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" public EditPersonDescriptorBuilder withHour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" descriptor.setHour(new Hour(hour));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"LuoZYi"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LuoZYi":9,"PohSayKeong":15,"lshaoqin":13,"-":80,"itssisi":6}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@amybee\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":" public static final String DEFAULT_HOUR \u003d \"8\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" private Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" private Set\u003cMod\u003e mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" private Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" freeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" mods \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" hour \u003d new Hour(DEFAULT_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" freeTime \u003d personToCopy.getFreeTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" mods \u003d new HashSet\u003c\u003e(personToCopy.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" hour \u003d personToCopy.getHour();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" * Parses the {@code mods} into a {@code Set\u003cMod\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" public PersonBuilder withMods(String ... mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":" this.mods \u003d SampleDataUtil.getModSet(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"itssisi"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"itssisi"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"PohSayKeong"},"content":" * Sets the {@code FreeTime} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"PohSayKeong"},"content":" public PersonBuilder withFreeTime(String from, String to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d new FreeTime(LocalTime.parse(from), LocalTime.parse(to));","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"PohSayKeong"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"LuoZYi"},"content":" * Sets the {@code Hour} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"LuoZYi"},"content":" public PersonBuilder withHour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d new Hour(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"LuoZYi"},"content":" return new Person(name, phone, email, telegram, tags, freeTime, mods, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"LuoZYi":13,"PohSayKeong":17,"lshaoqin":11,"-":87,"itssisi":8}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" if (!person.getFreeTime().equals(FreeTime.EMPTY_FREE_TIME)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" sb.append(PREFIX_FROM + person.getFreeTime().getFrom() + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" sb.append(PREFIX_TO + person.getFreeTime().getTo() + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" s -\u003e sb.append(PREFIX_TAG + s.name + \" \")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" person.getMods().stream().forEach(","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" s -\u003e sb.append(PREFIX_MOD + s.name + \" \")","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" sb.append(PREFIX_HOUR + person.getHour().value + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" descriptor.getTelegram().ifPresent(address -\u003e sb.append(PREFIX_TELEGRAM).append(address.value).append(\" \"));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" descriptor.getFreeTime().ifPresent(freeTime -\u003e sb.append(PREFIX_FROM).append(freeTime.getFrom()).append(\" \")","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" .append(PREFIX_TO).append(freeTime.getTo()).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.name).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" if (descriptor.getMods().isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e mods \u003d descriptor.getMods().get();","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" mods.forEach(s -\u003e sb.append(PREFIX_MOD).append(s.name).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"LuoZYi"},"content":" descriptor.getHour().ifPresent(hour -\u003e sb.append(PREFIX_HOUR).append(hour.value).append(\" \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"LuoZYi":4,"PohSayKeong":10,"lshaoqin":9,"-":55,"itssisi":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" .withTelegram(\"@aliceheyhey\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":" .withPhone(\"94351253\").withHour(\"8\")","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" .build();","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" .withTelegram(\"@bensonnn123\")","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":" .withTags(\"owesMoney\", \"friends\").withFreeTime(\"21:15\", \"22:30\").withMods(\"CS1231\", \"CS2103T\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"14\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"heinz@example.com\").withTelegram(\"@carlkurz\").withHour(\"24\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" .withEmail(\"cornelia@example.com\").withTelegram(\"@danielmeier\")","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" .withTags(\"friends\").withFreeTime(\"10:45\", \"11:30\").withHour(\"38\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"werner@example.com\").withTelegram(\"@hiitselle\").withHour(\"63\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"lydia@example.com\").withTelegram(\"@imfionaa\").withFreeTime(\"21:10\", \"23:15\")","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"39\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"anna@example.com\").withTelegram(\"@georgiey\").withFreeTime(\"07:00\", \"09:00\")","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"46\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"stefan@example.com\").withTelegram(\"@hooniehoonhoon\").withHour(\"14\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"hans@example.com\").withTelegram(\"@idamueller\").withHour(\"27\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" .withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" .withMods(VALID_MOD_CS1231, VALID_MOD_CS2103T).withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" .withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"LuoZYi"},"content":" .withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" private TypicalPersons() {","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" } // prevents instantiation","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"LuoZYi":22,"PohSayKeong":3,"lshaoqin":2,"-":58,"itssisi":3}},{"path":"src/test/java/seedu/address/ui/SortingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"public class SortingTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" public void sortTags_correct() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" // Create a list of Tag objects","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" List\u003cTag\u003e tags \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Zebra\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bear\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bee\")","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" // Sort the list based on the \u0027name\u0027 attribute","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" tags.sort(Comparator.comparing(tag -\u003e tag.name));","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" // Define the expected order","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" List\u003cTag\u003e expectedOrder \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bear\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bee\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Zebra\")","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" // Assert that the list is sorted as expected","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" assertEquals(expectedOrder, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" public void sortMods_correct() {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" // Create a list of Mod objects","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" List\u003cMod\u003e mods \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS2103T\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1101S\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1231\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" // Sort the list based on the \u0027name\u0027 attribute","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" mods.sort(Comparator.comparing(mod -\u003e mod.name));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" // Define the expected order","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" List\u003cMod\u003e expectedOrder \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1101S\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1231\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS2103T\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" // Assert that the list is sorted as expected","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" assertEquals(expectedOrder, mods);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":60}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# TAManager","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T10-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T10-1/tp/actions)","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"* This is **TA(Teaching Assistant) Management app for NUS(National University of Singapore) SOC(School of Computing) professors**.\u003cbr\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" * Access TA\u0027s contact details and availability for relief classes","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" * Track TA\u0027s renumeration details","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"* The project builds on a brownfield software project called _AddressBook_ used for managing contact details.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" * For detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"* It is named `TAManager` (`TAM` for short) because it was intended for easy management of TAs.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"lshaoqin":9,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":"You can reach us at the email `pohsaykeong@stu.comp.nus.edu.sg`","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"## TAManager","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"### Poh Say Keong","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/pohsaykeong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":"[[github](https://github.com/pohsaykeong)]","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/pohsaykeong.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":"* Role: Team Lead","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Overall project coordination.","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":"### Rayner Toh","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/raynertjx.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/raynertjx)]","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/raynertjx.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":"* Role: Developer (deliverables and deadlines)","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Ensure deliverables are on time and in the right format.","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":"### Lu Shaoqin","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/lshaoqin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/lshaoqin)] ","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/lshaoqin.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":"* Role: Developer (integration)","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of the software to create a whole.","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":"### Luo Zhongyi","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/luozyi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/luozyi)]","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/luozyi.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":"* Role: Developer (testing)","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":"### Sigrid Elvina Huisen","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"\u003cimg src\u003d\"images/itssisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":"[[github](http://github.com/itssisi)]","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":"[[portfolio](team/itssisi.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"itssisi"},"content":"* Role: Developer (code quality)","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"-":28,"itssisi":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"PohSayKeong"},"content":"* SoC professor","lastModifiedDate":"2023-09-28"},{"lineNumber":261,"author":{"gitId":"PohSayKeong"},"content":"* has a need to manage a significant number of teaching assistants (TAs)","lastModifiedDate":"2023-09-28"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"PohSayKeong"},"content":"**Value proposition**: ","lastModifiedDate":"2023-09-28"},{"lineNumber":268,"author":{"gitId":"PohSayKeong"},"content":"* Fast access to TA contact details and availability","lastModifiedDate":"2023-09-28"},{"lineNumber":269,"author":{"gitId":"PohSayKeong"},"content":"* Track teaching hours and claimable hours conveniently","lastModifiedDate":"2023-09-28"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"PohSayKeong"},"content":"|----------|---------|--------------------------------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2023-09-28"},{"lineNumber":278,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2023-09-28"},{"lineNumber":279,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | add new TA to my address book | |","lastModifiedDate":"2023-09-28"},{"lineNumber":280,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | remove a TA from my address book | remove entries that I no longer need |","lastModifiedDate":"2023-09-28"},{"lineNumber":281,"author":{"gitId":"PohSayKeong"},"content":"| `* * *` | user | view all TAs in my address book | |","lastModifiedDate":"2023-09-28"},{"lineNumber":282,"author":{"gitId":"PohSayKeong"},"content":"| `* *` | user | add a person’s email address and telegram handle | facilitate communication with that person |","lastModifiedDate":"2023-09-28"},{"lineNumber":283,"author":{"gitId":"PohSayKeong"},"content":"| `* *` | user | update the contact information of my teaching assistants | ensure I have the latest contact information |","lastModifiedDate":"2023-09-28"},{"lineNumber":284,"author":{"gitId":"PohSayKeong"},"content":"| `*` | user | have my records saved for the next session | use the information over multiple sessions |","lastModifiedDate":"2023-09-28"},{"lineNumber":285,"author":{"gitId":"PohSayKeong"},"content":"| `*` | user | view the list of courses I\u0027m teaching and their assigned TAs | filter TAs based on the courses they can teach |","lastModifiedDate":"2023-09-28"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"PohSayKeong"},"content":"**Use case: Delete a TA**","lastModifiedDate":"2023-09-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":298,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":299,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to delete a specific TA in the list","lastModifiedDate":"2023-09-28"},{"lineNumber":300,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook deletes the TA","lastModifiedDate":"2023-09-28"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"PohSayKeong"},"content":"**Use case: Update Contact Information**","lastModifiedDate":"2023-09-28"},{"lineNumber":317,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":318,"author":{"gitId":"PohSayKeong"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":319,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":320,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":321,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of TAs","lastModifiedDate":"2023-09-28"},{"lineNumber":322,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to update the contact of a specific TA in the list and key in the necessary information","lastModifiedDate":"2023-09-28"},{"lineNumber":323,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook updates the contact information of that TA","lastModifiedDate":"2023-09-28"},{"lineNumber":324,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":325,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":326,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":327,"author":{"gitId":"PohSayKeong"},"content":"**Extensions**","lastModifiedDate":"2023-09-28"},{"lineNumber":328,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":329,"author":{"gitId":"PohSayKeong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-09-28"},{"lineNumber":330,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":331,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":332,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"PohSayKeong"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":334,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":335,"author":{"gitId":"PohSayKeong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":336,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":337,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":338,"author":{"gitId":"PohSayKeong"},"content":"* 3b. The given contact information is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":339,"author":{"gitId":"PohSayKeong"},"content":" * 3b1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":340,"author":{"gitId":"PohSayKeong"},"content":" ","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"PohSayKeong"},"content":"**Use case: View TAs of specific course**","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":345,"author":{"gitId":"PohSayKeong"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":346,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":347,"author":{"gitId":"PohSayKeong"},"content":"1. User requests to list courses","lastModifiedDate":"2023-09-28"},{"lineNumber":348,"author":{"gitId":"PohSayKeong"},"content":"2. AddressBook shows a list of courses","lastModifiedDate":"2023-09-28"},{"lineNumber":349,"author":{"gitId":"PohSayKeong"},"content":"3. User requests to show TAs of a specific course","lastModifiedDate":"2023-09-28"},{"lineNumber":350,"author":{"gitId":"PohSayKeong"},"content":"4. AddressBook shows a list of TAs of specific course","lastModifiedDate":"2023-09-28"},{"lineNumber":351,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":352,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":353,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":354,"author":{"gitId":"PohSayKeong"},"content":"**Extensions**","lastModifiedDate":"2023-09-28"},{"lineNumber":355,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":356,"author":{"gitId":"PohSayKeong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-09-28"},{"lineNumber":357,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":358,"author":{"gitId":"PohSayKeong"},"content":" Use case ends.","lastModifiedDate":"2023-09-28"},{"lineNumber":359,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":360,"author":{"gitId":"PohSayKeong"},"content":"* 3a. The given course is invalid.","lastModifiedDate":"2023-09-28"},{"lineNumber":361,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":362,"author":{"gitId":"PohSayKeong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":363,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":364,"author":{"gitId":"PohSayKeong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-28"},{"lineNumber":365,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":366,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"PohSayKeong"},"content":"4. Data should persist across user sessions","lastModifiedDate":"2023-09-28"},{"lineNumber":374,"author":{"gitId":"PohSayKeong"},"content":"5. Project should be able to handle information from across academic years","lastModifiedDate":"2023-09-28"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"PohSayKeong"},"content":"* **Course**: A program students are enrolled in to work towards a degree","lastModifiedDate":"2023-09-28"},{"lineNumber":381,"author":{"gitId":"PohSayKeong"},"content":"* **Teaching Assistant (TA)**: Students who support the teaching of a course","lastModifiedDate":"2023-10-02"},{"lineNumber":382,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"PohSayKeong":73,"-":363}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"Teaching Assistant Manager (TAManager) is a desktop application for managing teaching assistants, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TAM can help you manage your teaching assistant tasks more efficiently than traditional GUI apps.","lastModifiedDate":"2023-10-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"---","lastModifiedDate":"2023-10-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":"## Quick Start","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"1. Ensure you have Java `11` or above installed on your computer.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"2. Download the latest `TAManager.jar` from [here](https://github.com/AY2324S1-CS2103T-T10-1/tp/releases).","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":"3. Copy the file to the folder you want to use as the home folder for your Teaching Assistant Manager.","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"4. Open a command terminal, `cd` into the folder where you placed the jar file, and use the `java -jar TAManager.jar` command to run the application.","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" A GUI similar to the one below should appear in a few seconds. Note how the app contains some sample data.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"PohSayKeong"},"content":" ![UI](images/Ui.png)","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":"5. Type the command in the command box and press Enter to execute it. For example, typing `help` and pressing Enter will open the help window.","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" Here are some example commands you can try:","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":" - `list`: Lists all teaching assistants.","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" - `add n/Snowball p/98765432 e/snowball@example.com tele/@snowball from/10:00 to/12:00 t/fulltime m/CS1231S h/10`: Adds a teaching assistant named Snowball to the list.","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" - `delete 3`: Deletes the 3rd teaching assistant shown in the current list.","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" - `clear`: Deletes all teaching assistants.","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" - `exit`: Exits the app.","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":"6. Refer to the [Features](#features) section below for details on each command.","lastModifiedDate":"2023-10-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"LuoZYi"},"content":"### Adding a Teaching Assistant: `add`","lastModifiedDate":"2023-10-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"LuoZYi"},"content":"Adds a new teaching assistant to the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":76,"author":{"gitId":"LuoZYi"},"content":"![add TA](images/addTA.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"PohSayKeong"},"content":"Format: `add n/NAME p/PHONE e/EMAIL tele/TELEGRAM [from/FROM to/TO] [t/TAG]... [m/MOD]... h/HOUR`","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"LuoZYi"},"content":"- `NAME` should be a string.","lastModifiedDate":"2023-10-02"},{"lineNumber":81,"author":{"gitId":"LuoZYi"},"content":"- `PHONE` should be an 8-digit integer.","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"LuoZYi"},"content":"- `EMAIL` should contain \"@\".","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"LuoZYi"},"content":"- `COURSE_OF_STUDY` should be a string.","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":"- `YEAR` should be an integer.","lastModifiedDate":"2023-10-02"},{"lineNumber":85,"author":{"gitId":"PohSayKeong"},"content":"- `FROM` should be a time in \"HH:SS\" format","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"PohSayKeong"},"content":"- `TO` should be a time in \"HH:SS\" format","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":"- `TAG` should be a alphanumeric string without spaces.","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":"- `MODULE_CODE` should start with 2-3 alphabets, followed by 4 numbers, and optionally end with an alphabet.","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"PohSayKeong"},"content":"- `HOUR` should be an integer","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"PohSayKeong"},"content":"- `add n/Snowball p/98765432 e/snowball@example.com tele/@snowball from/10:00 to/12:00 t/fulltime m/CS1231S h/10`","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":96,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":97,"author":{"gitId":"PohSayKeong"},"content":"New teaching assistant added: Snowball; Phone: 98765432; Email: snowball@example.com; Telegram: @snowball;","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":"Free Time: 10:00-12:00; Tags: [fulltime]; Mods: [CS1231S]; Work Hour: 10","lastModifiedDate":"2023-10-24"},{"lineNumber":99,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"LuoZYi"},"content":"When the command fails:","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":103,"author":{"gitId":"LuoZYi"},"content":"- Incorrect format (e.g., missing information): `Invalid command format!`","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"LuoZYi"},"content":"- Duplicate input (the TA is already in the address book): `This TA has been registered.`","lastModifiedDate":"2023-10-02"},{"lineNumber":105,"author":{"gitId":"PohSayKeong"},"content":"- Invalid invalid module code: `Mod codes should have 2-3 alphabets, followed by 4 digits,","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":"and optionally ending with an alphabet.`","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"PohSayKeong"},"content":"- Invalid free time: `TA\u0027s free time should have a start and end time in HH:mm format`","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"PohSayKeong"},"content":"- Invalid work hour: `Hour should only be positive integers and should be less than 9999`","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"LuoZYi"},"content":"### Removing a Teaching Assistant: `delete`","lastModifiedDate":"2023-10-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"LuoZYi"},"content":"Removes the specified teaching assistant from the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":114,"author":{"gitId":"LuoZYi"},"content":"![remove TA](images/removeTA.png)","lastModifiedDate":"2023-10-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-10-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"LuoZYi"},"content":"- Deletes the teaching assistant at the specified `INDEX`.","lastModifiedDate":"2023-10-02"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":"- The index refers to the index number shown in the displayed TA list.","lastModifiedDate":"2023-10-02"},{"lineNumber":120,"author":{"gitId":"LuoZYi"},"content":"- The index must be a positive integer (1, 2, 3, ...).","lastModifiedDate":"2023-10-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":124,"author":{"gitId":"LuoZYi"},"content":"- `list` followed by `delete 2` deletes the 2nd teaching assistant in the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":"- `find Betsy` followed by `delete 1` deletes the 1st teaching assistant in the results of the `find` command.","lastModifiedDate":"2023-10-02"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":129,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":130,"author":{"gitId":"PohSayKeong"},"content":"Deleted Teaching Assistant: Snowball; Phone: 98765432; Email: snowball@example.com; Telegram: @snowball; Free Time: 10:00-12:00; Tags: [fulltime]; Mods: [CS1231S]; Work Hour: 10","lastModifiedDate":"2023-10-24"},{"lineNumber":131,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":133,"author":{"gitId":"LuoZYi"},"content":"When the command fails:","lastModifiedDate":"2023-10-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":135,"author":{"gitId":"LuoZYi"},"content":"- Incorrect format (missing index or index is not a positive integer): `Invalid command format!`","lastModifiedDate":"2023-10-02"},{"lineNumber":136,"author":{"gitId":"LuoZYi"},"content":"- Index does not correspond to a TA: For example, there are only 5 TAs but the user tried to delete a TA at index 6","lastModifiedDate":"2023-10-02"},{"lineNumber":137,"author":{"gitId":"LuoZYi"},"content":" ","lastModifiedDate":"2023-10-02"},{"lineNumber":138,"author":{"gitId":"LuoZYi"},"content":" `The person index provided is invalid`","lastModifiedDate":"2023-10-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"LuoZYi"},"content":"### Viewing Teaching Assistants: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"LuoZYi"},"content":"Displays a list of all teaching assistants in the address book.","lastModifiedDate":"2023-10-02"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"LuoZYi"},"content":"Format: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"LuoZYi"},"content":"Example: `list`","lastModifiedDate":"2023-10-02"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":"When the command succeeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":149,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":150,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":151,"author":{"gitId":"LuoZYi"},"content":"Here is a list of TAs:","lastModifiedDate":"2023-10-02"},{"lineNumber":152,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":153,"author":{"gitId":"LuoZYi"},"content":"Snowball; Phone: 87098312; Email: snowball@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":154,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":155,"author":{"gitId":"LuoZYi"},"content":"Snowflake; Phone: 83124113; Email: snowflake@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":156,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":157,"author":{"gitId":"LuoZYi"},"content":"Snowman; Phone: 83172153; Email: snowman@example.com; Course of study: Computer Science; Year of Study: 2;","lastModifiedDate":"2023-10-02"},{"lineNumber":158,"author":{"gitId":"LuoZYi"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"PohSayKeong"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous TAManager home folder.","lastModifiedDate":"2023-10-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"PohSayKeong"},"content":"**Add** | `add n/NAME p/PHONE e/EMAIL tele/TELEGRAM [from/FROM to/TO] [t/TAG]... [m/MOD]... h/HOUR` \u003cbr\u003e e.g., `add n/Snowball p/98765432 e/snowball@example.com tele/@snowball from/10:00 to/12:00 t/fulltime m/CS1231S h/10`","lastModifiedDate":"2023-10-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LuoZYi":62,"PohSayKeong":15,"lshaoqin":3,"-":127}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"lshaoqin"},"content":" content: \"TAManager\";","lastModifiedDate":"2023-09-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"lshaoqin":1,"-":294}},{"path":"docs/team/ppp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"raynertjx"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"raynertjx"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"raynertjx"},"content":"title: \u003cYour Name\u003e\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"raynertjx"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"raynertjx"},"content":"### Project: TAManager","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"raynertjx"},"content":"TAManager is a desktop address book application made for professors to manage their teaching assistants (TA) under their charge. It provides fast access to TAs\u0027 contact details and their availabilities for tutorials/labs. You can track teaching and claimable hours among your TAs and find relief TAs for impromptu events or unforeseen circumstances.","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"raynertjx"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"raynertjx"},"content":"* **New Feature**: *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"raynertjx"},"content":"* **Code contributed**: *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"raynertjx"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"raynertjx"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"raynertjx"},"content":"* **Documentation for Developer Guide**:","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"raynertjx"},"content":"* **Documentation for User Guide**:","lastModifiedDate":"2023-10-02"},{"lineNumber":27,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"raynertjx"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"raynertjx"},"content":" *to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"raynertjx"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"raynertjx"},"content":"*to be added soon*","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"raynertjx"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"raynertjx"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"raynertjx":35}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":" .append(person.getTelegram())","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" .append(\"; Free Time: \")","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" .append(person.getFreeTime())","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" builder.append(\"; Mods: \");","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" person.getMods().forEach(builder::append);","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" builder.append(\"; Work Hour: \")","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" .append(person.getHour());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":3,"PohSayKeong":2,"lshaoqin":2,"-":49,"itssisi":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a teaching assistant to the address book. \"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" + \"[\" + PREFIX_FROM + \"FROM \"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"TO] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_MOD + \"MOD]... \"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_HOUR + \"HOUR \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" + PREFIX_TELEGRAM + \"@johnd \"","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_FROM + \"10:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"12:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" + PREFIX_TAG + \"fulltime \"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_MOD + \"CS1231S \"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" + PREFIX_HOUR + \"10\";","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New teaching assistant added: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This teaching assistant already exists in the address book\";","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":6,"raynertjx":3,"PohSayKeong":6,"lshaoqin":2,"-":75,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"raynertjx"},"content":" + \": Deletes the teaching assistant identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Teaching Assistant: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raynertjx":2,"-":67}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the teaching assistant \"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"raynertjx"},"content":" + \"identified \"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"raynertjx"},"content":" + \"by the index number used in the displayed teaching assistant list. \"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" + \"[\" + PREFIX_FROM + \"FROM \"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" + PREFIX_TO + \"TO] \"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_MOD + \"MOD]...\"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" + \"[\" + PREFIX_HOUR + \"HOUR\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Teaching Assistant: %1$s\";","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This teaching assistant already exists in the address book.\";","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":113,"author":{"gitId":"itssisi"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" FreeTime updatedFreeTime \u003d editPersonDescriptor.getFreeTime().orElse(personToEdit.getFreeTime());","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e updatedMods \u003d editPersonDescriptor.getMods().orElse(personToEdit.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" Hour updatedHour \u003d editPersonDescriptor.getHour().orElse(personToEdit.getHour());","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"PohSayKeong"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedTelegram, updatedTags, updatedFreeTime,","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"LuoZYi"},"content":" updatedMods, updatedHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"PohSayKeong"},"content":" * Stores the details to edit the person with. Each non-empty field value will","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" * replace the","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"itssisi"},"content":" private Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"lshaoqin"},"content":" private Set\u003cMod\u003e mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" private Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"itssisi"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"itssisi"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":175,"author":{"gitId":"PohSayKeong"},"content":" setFreeTime(toCopy.freeTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"lshaoqin"},"content":" setMods(toCopy.mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":177,"author":{"gitId":"LuoZYi"},"content":" setHour(toCopy.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"LuoZYi"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, telegram, tags, mods, freeTime, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"itssisi"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":212,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"itssisi"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":216,"author":{"gitId":"itssisi"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"PohSayKeong"},"content":" * Returns an unmodifiable tag set, which throws","lastModifiedDate":"2023-10-12"},{"lineNumber":229,"author":{"gitId":"PohSayKeong"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"PohSayKeong"},"content":" public void setFreeTime(FreeTime freeTime) {","lastModifiedDate":"2023-10-12"},{"lineNumber":238,"author":{"gitId":"PohSayKeong"},"content":" if (freeTime !\u003d FreeTime.EMPTY_FREE_TIME) {","lastModifiedDate":"2023-10-12"},{"lineNumber":239,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":240,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":241,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":242,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":243,"author":{"gitId":"PohSayKeong"},"content":" public Optional\u003cFreeTime\u003e getFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":244,"author":{"gitId":"PohSayKeong"},"content":" return Optional.ofNullable(freeTime);","lastModifiedDate":"2023-10-12"},{"lineNumber":245,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":246,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":247,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":248,"author":{"gitId":"lshaoqin"},"content":" * Sets {@code mods} to this object\u0027s {@code mods}.","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"lshaoqin"},"content":" * A defensive copy of {@code mods} is used internally.","lastModifiedDate":"2023-10-10"},{"lineNumber":250,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":251,"author":{"gitId":"lshaoqin"},"content":" public void setMods(Set\u003cMod\u003e mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":252,"author":{"gitId":"lshaoqin"},"content":" this.mods \u003d (mods !\u003d null) ? new HashSet\u003c\u003e(mods) : null;","lastModifiedDate":"2023-10-10"},{"lineNumber":253,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":254,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":255,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":256,"author":{"gitId":"PohSayKeong"},"content":" * Returns an unmodifiable mod set, which throws","lastModifiedDate":"2023-10-12"},{"lineNumber":257,"author":{"gitId":"PohSayKeong"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":258,"author":{"gitId":"lshaoqin"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":259,"author":{"gitId":"lshaoqin"},"content":" * Returns {@code Optional#empty()} if {@code mods} is null.","lastModifiedDate":"2023-10-10"},{"lineNumber":260,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":261,"author":{"gitId":"lshaoqin"},"content":" public Optional\u003cSet\u003cMod\u003e\u003e getMods() {","lastModifiedDate":"2023-10-10"},{"lineNumber":262,"author":{"gitId":"lshaoqin"},"content":" return (mods !\u003d null) ? Optional.of(Collections.unmodifiableSet(mods)) : Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":263,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":264,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":265,"author":{"gitId":"LuoZYi"},"content":" public void setHour(Hour hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"LuoZYi"},"content":" public Optional\u003cHour\u003e getHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"LuoZYi"},"content":" return Optional.ofNullable(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":271,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":272,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"itssisi"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":289,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-12"},{"lineNumber":290,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 Objects.equals(freeTime, otherEditPersonDescriptor.freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":291,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 Objects.equals(mods, otherEditPersonDescriptor.mods)","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 Objects.equals(hour, otherEditPersonDescriptor.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"itssisi"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"PohSayKeong"},"content":" .add(\"free time\", freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":304,"author":{"gitId":"lshaoqin"},"content":" .add(\"mods\", mods)","lastModifiedDate":"2023-10-10"},{"lineNumber":305,"author":{"gitId":"LuoZYi"},"content":" .add(\"work hour\", hour)","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"LuoZYi":20,"raynertjx":5,"PohSayKeong":29,"lshaoqin":22,"-":219,"itssisi":14}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all teaching assistants whose names contain \"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"raynertjx"},"content":" + \"any \"","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"raynertjx"},"content":" + \"of \"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"raynertjx":3,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"raynertjx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all teaching assistants\";","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raynertjx":1,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" PREFIX_FROM, PREFIX_TO, PREFIX_TAG, PREFIX_MOD, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_HOUR)","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" PREFIX_FROM, PREFIX_TO, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":" FreeTime freeTime \u003d ParserUtil.parseFreeTime(argMultimap.getValue(PREFIX_FROM).orElseGet(() -\u003e null),","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.getValue((PREFIX_TO)).orElseGet(() -\u003e null));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e modList \u003d ParserUtil.parseMods(argMultimap.getAllValues(PREFIX_MOD));","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" Hour hour \u003d ParserUtil.parseHour(argMultimap.getValue(PREFIX_HOUR).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" Person person \u003d new Person(name, phone, email, telegram, tagList, freeTime, modList, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":" * in the given","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"LuoZYi":7,"PohSayKeong":9,"lshaoqin":3,"-":52,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tele/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public static final Prefix PREFIX_MOD \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" public static final Prefix PREFIX_HOUR \u003d new Prefix(\"h/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LuoZYi":1,"PohSayKeong":3,"lshaoqin":1,"-":15,"itssisi":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM,","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" PREFIX_TAG, PREFIX_MOD, PREFIX_FROM, PREFIX_TO, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" Set\u003cTag\u003e tags \u003d parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).orElse(null);","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" editPersonDescriptor.setTags(tags);","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"PohSayKeong"},"content":" if (argMultimap.getValue(PREFIX_FROM).isPresent() \u0026\u0026 argMultimap.getValue(PREFIX_TO).isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" editPersonDescriptor.setFreeTime(ParserUtil.parseFreeTime(argMultimap.getValue(PREFIX_FROM).get(),","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" argMultimap.getValue(PREFIX_TO).get()));","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e mods \u003d parseModsForEdit(argMultimap.getAllValues(PREFIX_MOD)).orElse(null);","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" editPersonDescriptor.setMods(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"LuoZYi"},"content":" if (argMultimap.getValue(PREFIX_HOUR).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"LuoZYi"},"content":" editPersonDescriptor.setHour(ParserUtil.parseHour(argMultimap.getValue(PREFIX_HOUR).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" * Parses {@code Collection\u003cString\u003e mods} into a {@code Set\u003cMod\u003e} if {@code mods} is non-empty.","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" * If {@code mods} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" * {@code Set\u003cMod\u003e} containing zero mods.","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":" private Optional\u003cSet\u003cMod\u003e\u003e parseModsForEdit(Collection\u003cString\u003e mods) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" assert mods !\u003d null;","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":" if (mods.isEmpty()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"lshaoqin"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" Collection\u003cString\u003e modSet \u003d mods.size() \u003d\u003d 1 \u0026\u0026 mods.contains(\"\") ? Collections.emptySet() : mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" return Optional.of(ParserUtil.parseMods(modSet));","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"LuoZYi":5,"PohSayKeong":6,"lshaoqin":22,"-":81,"itssisi":4}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"itssisi"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"itssisi"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"itssisi"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"itssisi"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"itssisi"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"itssisi"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"itssisi"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" return Tag.of(trimmedTag);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":130,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"PohSayKeong"},"content":" * Parses {@code String from} and {@code String to} into a {@code FreeTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"PohSayKeong"},"content":" public static FreeTime parseFreeTime(String from, String to) throws DateTimeParseException, ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"PohSayKeong"},"content":" return FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"LuoZYi"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" LocalTime start \u003d LocalTime.parse(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PohSayKeong"},"content":" LocalTime end \u003d LocalTime.parse(to);","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" if (!FreeTime.isValidFreeTime(start, end)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"PohSayKeong"},"content":" throw new ParseException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" return new FreeTime(start, end);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"LuoZYi"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"LuoZYi"},"content":" throw new ParseException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"lshaoqin"},"content":" * Parses a {@code String mod} into a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"lshaoqin"},"content":" public static Mod parseMod(String mod) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(mod);","lastModifiedDate":"2023-10-10"},{"lineNumber":156,"author":{"gitId":"lshaoqin"},"content":" String trimmedMod \u003d mod.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"lshaoqin"},"content":" if (!Mod.isValidModName(trimmedMod)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"lshaoqin"},"content":" throw new ParseException(Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"lshaoqin"},"content":" return Mod.of(trimmedMod);","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":162,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"lshaoqin"},"content":" * Parses a {@code String mod} into a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":165,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" * @throws ParseException if the given {@code mod} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":168,"author":{"gitId":"lshaoqin"},"content":" public static Set\u003cMod\u003e parseMods(Collection\u003cString\u003e mods) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"lshaoqin"},"content":" final Set\u003cMod\u003e modSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"lshaoqin"},"content":" for (String modName : mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"lshaoqin"},"content":" modSet.add(parseMod(modName));","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"lshaoqin"},"content":" return modSet;","lastModifiedDate":"2023-10-10"},{"lineNumber":175,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"LuoZYi"},"content":" * Parses a {@code String hour} into a {@code hour}.","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"LuoZYi"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"LuoZYi"},"content":" * @throws ParseException if the given {@code hour} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"LuoZYi"},"content":" public static Hour parseHour(String hour) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"LuoZYi"},"content":" requireNonNull(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"LuoZYi"},"content":" String trimmedHour \u003d hour.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"LuoZYi"},"content":" if (!Hour.isValidHour(trimmedHour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"LuoZYi"},"content":" throw new ParseException(Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"LuoZYi"},"content":" return new Hour(trimmedHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LuoZYi":20,"PohSayKeong":19,"lshaoqin":27,"-":114,"itssisi":10}},{"path":"src/main/java/seedu/address/model/person/FreeTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"PohSayKeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"PohSayKeong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"PohSayKeong"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":" * Represents a Person\u0027s free time of the day in the TAM.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFreeTime(LocalTime, LocalTime)}","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"public class FreeTime {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PohSayKeong"},"content":" public static final FreeTime EMPTY_FREE_TIME \u003d new FreeTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" \"TA\u0027s free time should have a start and end time in HH:mm format\";","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":" public final LocalTime from;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":" public final LocalTime to;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * Constructs a {@code FreeTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"PohSayKeong"},"content":" * @param from Start time.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"PohSayKeong"},"content":" * @param to End time.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" public FreeTime(LocalTime from, LocalTime to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"PohSayKeong"},"content":" checkArgument(isValidFreeTime(from, to), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d from;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d to;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" * Empty FreeTime","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"PohSayKeong"},"content":" * Returns true if given start and end time is valid.","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public static boolean isValidFreeTime(LocalTime from, LocalTime to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" return to.isAfter(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":" * Returns string representation of from time.","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" * @return From time in HH:mm format.","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" public String getFrom() {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" return null;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"PohSayKeong"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":" return from.format(dtf);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"PohSayKeong"},"content":" * Returns string representation of to time.","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"PohSayKeong"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"PohSayKeong"},"content":" * @return To time in HH:mm format.","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"PohSayKeong"},"content":" public String getTo() {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"PohSayKeong"},"content":" if (to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" return null;","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"PohSayKeong"},"content":" return to.format(dtf);","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"PohSayKeong"},"content":" if (this.equals(FreeTime.EMPTY_FREE_TIME)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"PohSayKeong"},"content":" return \" \";","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"PohSayKeong"},"content":" return String.format(\"%s-%s\", from, to);","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"PohSayKeong"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"PohSayKeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"PohSayKeong"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"PohSayKeong"},"content":" if (this \u003d\u003d EMPTY_FREE_TIME) {","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"PohSayKeong"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" if (!(other instanceof seedu.address.model.person.FreeTime)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"PohSayKeong"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"PohSayKeong"},"content":" seedu.address.model.person.FreeTime otherFreeTime \u003d (seedu.address.model.person.FreeTime) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"PohSayKeong"},"content":" return from.equals(otherFreeTime.from) \u0026\u0026 to.equals(otherFreeTime.to);","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"PohSayKeong"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"PohSayKeong":100}},{"path":"src/main/java/seedu/address/model/person/Hour.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LuoZYi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"LuoZYi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHour(String)}","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"public class Hour {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":" \"Hour should only be positive integers and should be less than 9999\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]\\\\d{0,3}$\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":" public final String value;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":" * @param hour A valid hour.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" public Hour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":" requireNonNull(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":" checkArgument(isValidHour(hour), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":" this.value \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"LuoZYi"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" public static boolean isValidHour(String test) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" return value;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"LuoZYi"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" if (!(other instanceof Hour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" Hour otherHour \u003d (Hour) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" return value.equals(otherHour.value);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"LuoZYi"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"LuoZYi":62}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" private final Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" private final FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" private final Set\u003cMod\u003e mods \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" private final Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" public Person(Name name, Phone phone, Email email, Telegram telegram, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" FreeTime freeTime, Set\u003cMod\u003e mods, Hour hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" requireAllNonNull(name, phone, email, telegram, tags, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d freeTime \u003d\u003d null ? FreeTime.EMPTY_FREE_TIME : freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" this.mods.addAll(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" return telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" public FreeTime getFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"PohSayKeong"},"content":" return freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" * Returns an immutable mod set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" public Set\u003cMod\u003e getMods() {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" return Collections.unmodifiableSet(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" public Hour getHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" return hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"PohSayKeong"},"content":" \u0026\u0026 freeTime.equals(otherPerson.freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 mods.equals(otherPerson.mods)","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"LuoZYi"},"content":" \u0026\u0026 hour.equals(otherPerson.hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" return Objects.hash(name, phone, email, telegram, tags, mods, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"itssisi"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" .add(\"free time\", freeTime)","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"lshaoqin"},"content":" .add(\"mods\", mods)","lastModifiedDate":"2023-10-10"},{"lineNumber":143,"author":{"gitId":"LuoZYi"},"content":" .add(\"hours\", hour)","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LuoZYi":12,"PohSayKeong":10,"lshaoqin":12,"-":106,"itssisi":6}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"itssisi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"itssisi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"itssisi"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"public class Telegram {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram handle should be between 5-32 characters, \"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":" + \"and it should start with @\";","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":" * The first character of the telegram handle should be @,","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":" * blank string should not be a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":" public static final String VALIDATION_REGEX \u003d \".*\\\\B@(?\u003d\\\\w{5,32}\\\\b)[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*.*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":" public final String value;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"itssisi"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" * Constructs an {@code Telegram}.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":" requireNonNull(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" value \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"itssisi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" return value;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"itssisi"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"itssisi"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"itssisi":66}},{"path":"src/main/java/seedu/address/model/tag/Label.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" * Represents a Label in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" * Guarantees: immutable;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public abstract class Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public final String name;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Label(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" * Returns true if a given string matches the name of this label.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public boolean matchName(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" return this.name.equals(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" return name.hashCode();","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" return \u0027[\u0027 + name + \u0027]\u0027;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":33}},{"path":"src/main/java/seedu/address/model/tag/Mod.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" * Represents a Mod in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"public class Mod extends Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Mod codes should start with 2-3 alphabets, \"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" + \"followed by 4 numbers, and optionally end with an alphabet.\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" // 2-3 alphabets, followed by 4 digits, and optionally ending with an alphabet","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z]{2,3}\\\\d{4}[A-Za-z]?$\";","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" * Constructs a {@code Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" * @param name A mod name.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public Mod(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" super(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" * Factory method to construct a {@code Mod}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" * @param name A valid mod name.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public static Mod of(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" checkArgument(isValidModName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return new Mod(name.toUpperCase()); // Mods can only have uppercase letters","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" * Returns true if a given string is a valid mod name.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" public static boolean isValidModName(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" if (!(other instanceof Mod)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" Mod otherMod \u003d (Mod) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" return name.equals(otherMod.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":56}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"public class Tag extends Label {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" * @param name A tag name.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public Tag(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" super(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" * Factory method to construct a {@code Tag}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" * @param name A valid tag name.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public static Tag of(String name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" checkArgument(isValidTagName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return new Tag(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" return name.equals(otherTag.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lshaoqin":16,"-":40}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * @formatter:off","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[]{","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@alexyeoh\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"11:30\"), LocalTime.parse(\"12:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"8\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@berrrrrnice\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"12:30\"), LocalTime.parse(\"13:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"2\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@heyimcharlotte\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":" null,","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"8\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@davidli123\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"14:30\"), LocalTime.parse(\"15:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS2103T\"), new Hour(\"10\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@irfannn\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" null,","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS1231S\"), new Hour(\"20\")),","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" new Telegram(\"@rollieroy\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":" new FreeTime(LocalTime.parse(\"11:30\"), LocalTime.parse(\"12:30\")),","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":" getModSet(\"CS1231S\"), new Hour(\"5\"))","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" * Returns a mod set containing the list of strings given.","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" public static Set\u003cMod\u003e getModSet(String... strings) {","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" .map(Mod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"LuoZYi":9,"PohSayKeong":12,"lshaoqin":11,"-":46,"itssisi":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMod.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" * Jackson-friendly version of {@link Mod}.","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"public class JsonAdaptedMod {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" private final String modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" * Constructs a {@code JsonAdaptedMod} with the given {@code modName}.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" @JsonCreator","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" public JsonAdaptedMod(String modName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" this.modName \u003d modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" * Converts a given {@code Mod} into this class for Jackson use.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" public JsonAdaptedMod(Mod source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" modName \u003d source.name;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" @JsonValue","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" public String getModName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" return modName;","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" * Converts this Jackson-friendly adapted mod object into the model\u0027s {@code Mod} object.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted mod.","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" public Mod toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" if (!Mod.isValidModName(modName)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" throw new IllegalValueException(Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" return Mod.of(modName);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":46}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" private final String telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":" private final String from;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" private final String to;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" private final List\u003cJsonAdaptedMod\u003e mods \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" private final String hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"from\") String from,","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" @JsonProperty(\"to\") String to,","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" @JsonProperty(\"mods\") List\u003cJsonAdaptedMod\u003e mods,","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" @JsonProperty(\"hour\") String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" this.from \u003d from;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" this.to \u003d to;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" if (mods !\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" this.mods.addAll(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"itssisi"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"PohSayKeong"},"content":" from \u003d source.getFreeTime().getFrom();","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"PohSayKeong"},"content":" to \u003d source.getFreeTime().getTo();","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" mods.addAll(source.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" .map(JsonAdaptedMod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"LuoZYi"},"content":" hour \u003d source.getHour().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"PohSayKeong"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"PohSayKeong"},"content":" * {@code Person} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" * the adapted person.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":" final List\u003cMod\u003e personMods \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" for (JsonAdaptedMod mod : mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" personMods.add(mod.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"itssisi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"itssisi"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"itssisi"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"itssisi"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"itssisi"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" FreeTime modelFreeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"PohSayKeong"},"content":" if (from !\u003d null \u0026\u0026 to !\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":" LocalTime start \u003d LocalTime.parse(from);","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"PohSayKeong"},"content":" LocalTime end \u003d LocalTime.parse(to);","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" if (!FreeTime.isValidFreeTime(start, end)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" throw new IllegalValueException(FreeTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PohSayKeong"},"content":" modelFreeTime \u003d new FreeTime(start, end);","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"lshaoqin"},"content":" final Set\u003cMod\u003e modelMods \u003d new HashSet\u003c\u003e(personMods);","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"LuoZYi"},"content":" if (hour \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"LuoZYi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Hour.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"LuoZYi"},"content":" if (!Hour.isValidHour(hour)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"LuoZYi"},"content":" throw new IllegalValueException(Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"LuoZYi"},"content":" final Hour modelHour \u003d new Hour(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"LuoZYi"},"content":" return new Person(modelName, modelPhone, modelEmail, modelTelegram, modelTags,","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" modelFreeTime, modelMods, modelHour);","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LuoZYi":16,"PohSayKeong":26,"lshaoqin":14,"-":96,"itssisi":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" tagName \u003d source.name;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" return Tag.of(tagName);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"lshaoqin":2,"-":46}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" * keywords in JavaFX.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" * issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" private Label telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" private Label freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" private Label hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" * display.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" phone.setText(\"Phone: \" + person.getPhone().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" telegram.setText(\"Telegram: \" + person.getTelegram().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":" email.setText(\"Email: \" + person.getEmail().value);","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.name))","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.name)));","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"LuoZYi"},"content":" freeTime.setText(\"Free Time: \" + person.getFreeTime().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"LuoZYi"},"content":" hour.setText(\"Work Hour: \" + person.getHour().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" person.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" .sorted(Comparator.comparing(mod -\u003e mod.name))","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" .forEach(mod -\u003e {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d new Label(mod.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" label.setStyle(\"-fx-background-color: #FF8C00\");","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" });","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LuoZYi":7,"PohSayKeong":8,"lshaoqin":9,"-":50,"itssisi":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" \u003cFlowPane fx:id\u003d\"mods\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" \u003cLabel fx:id\u003d\"freeTime\" styleClass\u003d\"cell_small_label\" text\u003d\"Free From: \\$freeTime\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" \u003cLabel fx:id\u003d\"hour\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$hour\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LuoZYi":1,"PohSayKeong":1,"lshaoqin":1,"-":34,"itssisi":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" private final Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"lshaoqin"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withMods().build();","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LuoZYi":2,"lshaoqin":1,"-":171,"itssisi":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amyyy\";","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bobbyyz\";","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public static final String VALID_FROM_BOB \u003d \"12:00\";","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" public static final String VALID_TO_BOB \u003d \"13:00\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" public static final String VALID_MOD_CS2103T \u003d \"CS2103T\";","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" public static final String VALID_MOD_CS1231 \u003d \"CS1231\";","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_EMPTY_HOUR \u003d \"0\";","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_HOUR_FIVE \u003d \"5\";","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" public static final String VALID_HOUR_SIXTY \u003d \"60\";","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"itssisi"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":" public static final String FROM_DESC_BOB \u003d \" \" + PREFIX_FROM + VALID_FROM_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"PohSayKeong"},"content":" public static final String TO_DESC_BOB \u003d \" \" + PREFIX_TO + VALID_TO_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" public static final String MOD_DESC_CS2103T \u003d \" \" + PREFIX_MOD + VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" public static final String MOD_DESC_CS1231 \u003d \" \" + PREFIX_MOD + VALID_MOD_CS1231;","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_FIVE \u003d \" \" + PREFIX_HOUR + VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_SIXTY \u003d \" \" + PREFIX_HOUR + VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"LuoZYi"},"content":" public static final String HOUR_DESC_EMPTY \u003d \" \" + PREFIX_HOUR + VALID_EMPTY_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM; // empty string not allowed for addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" public static final String INVALID_MOD_DESC \u003d \" \" + PREFIX_MOD + \"ABCD2100\"; // Four character prefixes not allowed","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"LuoZYi"},"content":" public static final String INVALID_HOUR_DESC \u003d \" \" + PREFIX_HOUR + \"20000\"; // Hour is out of range","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"LuoZYi"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"itssisi"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"LuoZYi"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult}","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":" * \u003cbr\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"PohSayKeong"},"content":" * Convenience wrapper to","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" * {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"PohSayKeong"},"content":" * - the address book, filtered person list and selected person in","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"PohSayKeong"},"content":" * {@code actualModel} remain unchanged","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"PohSayKeong"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" * {@code targetIndex} in the","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"itssisi"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Collections.singletonList(splitName[0])));","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"LuoZYi":11,"PohSayKeong":15,"lshaoqin":8,"-":114,"itssisi":9}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardCommand.equals(new Object()));","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"lshaoqin":3,"-":183}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPTY_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":" assertEquals(DESC_AMY, descriptorWithSameValues);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertEquals(DESC_AMY, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5, DESC_AMY);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, DESC_BOB);","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"itssisi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" // different free time -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"LuoZYi"},"content":" // different hours -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withHour(VALID_EMPTY_HOUR).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"itssisi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"itssisi"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"PohSayKeong"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", free time\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" + editPersonDescriptor.getFreeTime().orElse(null) + \", mods\u003d\"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" + editPersonDescriptor.getMods().orElse(null) + \", work hour\u003d\"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" + editPersonDescriptor.getHour().orElse(null) + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LuoZYi":17,"PohSayKeong":2,"-":54,"itssisi":15}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FROM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MOD_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TO_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"itssisi"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"LuoZYi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).withMods(VALID_MOD_CS1231)","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"PohSayKeong"},"content":" + TELEGRAM_DESC_BOB + FROM_DESC_BOB + TO_DESC_BOB + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"LuoZYi"},"content":" + MOD_DESC_CS1231 + HOUR_DESC_FIVE, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" // multiple tags and mods - all accepted","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":80,"author":{"gitId":"LuoZYi"},"content":" .withMods(VALID_MOD_CS1231, VALID_MOD_CS2103T).withHour(VALID_HOUR_SIXTY)","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"PohSayKeong"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB + FROM_DESC_BOB + TO_DESC_BOB","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + MOD_DESC_CS2103T + HOUR_DESC_SIXTY,","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"LuoZYi"},"content":" // multiple hour","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, HOUR_DESC_FIVE + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"itssisi"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" + HOUR_DESC_FIVE + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"LuoZYi"},"content":" PREFIX_PHONE, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, INVALID_HOUR_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"itssisi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_HOUR_DESC,","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"PohSayKeong"},"content":" // zero tags and no free time","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"PohSayKeong"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFreeTime(null, null).withMods().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"LuoZYi"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_AMY + HOUR_DESC_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":203,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":207,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-10"},{"lineNumber":215,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":221,"author":{"gitId":"lshaoqin"},"content":" // invalid mod","lastModifiedDate":"2023-10-10"},{"lineNumber":222,"author":{"gitId":"lshaoqin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-10"},{"lineNumber":223,"author":{"gitId":"LuoZYi"},"content":" + INVALID_MOD_DESC + MOD_DESC_CS1231 + HOUR_DESC_FIVE, Mod.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"LuoZYi"},"content":" // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"LuoZYi"},"content":" + MOD_DESC_CS1231 + INVALID_HOUR_DESC, Hour.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"LuoZYi"},"content":" + HOUR_DESC_FIVE, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":235,"author":{"gitId":"LuoZYi"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HOUR_DESC_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"LuoZYi":53,"PohSayKeong":4,"lshaoqin":5,"-":157,"itssisi":19}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MOD_DESC_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" private static final String MOD_EMPTY \u003d \" \" + PREFIX_MOD;","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"itssisi"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"itssisi"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, \"1\" + INVALID_HOUR_DESC, Hour.MESSAGE_CONSTRAINTS); // invalid hour","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TELEGRAM_AMY + VALID_PHONE_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" + VALID_HOUR_FIVE,","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"LuoZYi"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"itssisi"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"itssisi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":179,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":180,"author":{"gitId":"lshaoqin"},"content":" // mods","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"lshaoqin"},"content":" userInput \u003d targetIndex.getOneBased() + MOD_DESC_CS1231;","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"lshaoqin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMods(VALID_MOD_CS1231).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"lshaoqin"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"lshaoqin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"LuoZYi"},"content":" // hour","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"LuoZYi"},"content":" userInput \u003d targetIndex.getOneBased() + HOUR_DESC_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"LuoZYi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"LuoZYi"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"LuoZYi"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":200,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":210,"author":{"gitId":"itssisi"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-10"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"LuoZYi"},"content":" + TAG_DESC_HUSBAND + HOUR_DESC_SIXTY + HOUR_DESC_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":216,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"LuoZYi"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"LuoZYi"},"content":" + INVALID_EMAIL_DESC + INVALID_HOUR_DESC + INVALID_HOUR_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":224,"author":{"gitId":"LuoZYi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":230,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":238,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":239,"author":{"gitId":"lshaoqin"},"content":" public void parse_resetMods_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":240,"author":{"gitId":"lshaoqin"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2023-10-12"},{"lineNumber":241,"author":{"gitId":"lshaoqin"},"content":" String userInput \u003d targetIndex.getOneBased() + MOD_EMPTY;","lastModifiedDate":"2023-10-12"},{"lineNumber":242,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":243,"author":{"gitId":"lshaoqin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withMods().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":244,"author":{"gitId":"lshaoqin"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-12"},{"lineNumber":245,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":246,"author":{"gitId":"lshaoqin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":247,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"LuoZYi":32,"lshaoqin":20,"-":187,"itssisi":9}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" private static final String INVALID_HOUR \u003d \"303539\";","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" private static final String VALID_TELEGRAM \u003d \"@telehello\";","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" private static final String VALID_HOUR \u003d \"24\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"itssisi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"itssisi"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"itssisi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2023-10-10"},{"lineNumber":127,"author":{"gitId":"itssisi"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":128,"author":{"gitId":"itssisi"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"lshaoqin"},"content":" Tag expectedTag \u003d Tag.of(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"lshaoqin"},"content":" Tag expectedTag \u003d Tag.of(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"lshaoqin"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(Tag.of(VALID_TAG_1), Tag.of(VALID_TAG_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseHour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"LuoZYi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseHour(INVALID_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"LuoZYi"},"content":" Hour expectedHour \u003d new Hour(VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"LuoZYi"},"content":" assertEquals(expectedHour, ParserUtil.parseHour(VALID_HOUR));","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"LuoZYi"},"content":" public void parseHour_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"LuoZYi"},"content":" String hourWithWhitespace \u003d WHITESPACE + VALID_HOUR + WHITESPACE;","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"LuoZYi"},"content":" Hour expectedHour \u003d new Hour(VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"LuoZYi"},"content":" assertEquals(expectedHour, ParserUtil.parseHour(hourWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"LuoZYi":28,"lshaoqin":3,"-":180,"itssisi":13}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"lshaoqin"},"content":" final AddressBook standardAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"lshaoqin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"lshaoqin"},"content":" AddressBook copyAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"lshaoqin"},"content":" assertEquals(standardAddressBook, copyAddressBook);","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" assertEquals(standardAddressBook, standardAddressBook);","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(new Object()));","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"lshaoqin"},"content":" // different persons -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"lshaoqin"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" differentAddressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" assertFalse(standardAddressBook.equals(differentAddressBook));","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"lshaoqin":26,"-":105,"itssisi":3}},{"path":"src/test/java/seedu/address/model/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public void testGetSamplePersons() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" assertEquals(6, samplePersons.length); // Assuming there are 6 sample persons in the array","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public void testGetSampleAddressBook() {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" ReadOnlyAddressBook addressBook \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" assertEquals(6, addressBook.getPersonList().size()); // Assuming there are 6 persons in the address book","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":22}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" UserPrefs userPrefsCopy \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" assertTrue(userPrefs.equals(userPrefsCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" assertTrue(userPrefs.equals(userPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(5));","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" // different gui settings -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs.setGuiSettings(new GuiSettings(1, 1, 1, 1));","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(differentUserPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" // different address book file path -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" assertFalse(userPrefs.equals(differentUserPrefs));","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"lshaoqin":33,"-":21}},{"path":"src/test/java/seedu/address/model/person/FreeTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"PohSayKeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"PohSayKeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"PohSayKeong"},"content":"public class FreeTimeTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"PohSayKeong"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(NullPointerException.class, () -\u003e new FreeTime(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"PohSayKeong"},"content":" public void constructor_invalidFreeTime_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"PohSayKeong"},"content":" LocalTime curr \u003d LocalTime.now();","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FreeTime(curr, curr));","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"PohSayKeong"},"content":" public void isValidFreeTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"PohSayKeong"},"content":" // null from and to","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(NullPointerException.class, () -\u003e FreeTime.isValidFreeTime(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"PohSayKeong"},"content":" LocalTime from \u003d LocalTime.parse(\"12:20\");","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" LocalTime to \u003d LocalTime.parse(\"23:44\");","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":" LocalTime closeFrom \u003d LocalTime.parse(\"12:21\");","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" // invalid free time","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(FreeTime.isValidFreeTime(from, from)); // same from and to","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(FreeTime.isValidFreeTime(to, from)); // to before from","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"PohSayKeong"},"content":" // valid free time","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(FreeTime.isValidFreeTime(from, to)); // to after from","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(FreeTime.isValidFreeTime(from, closeFrom)); // very short","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" LocalTime from \u003d LocalTime.parse(\"12:20\");","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" LocalTime to \u003d LocalTime.parse(\"23:44\");","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" LocalTime closeFrom \u003d LocalTime.parse(\"12:21\");","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" FreeTime freeTime \u003d new FreeTime(from, to);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"PohSayKeong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(freeTime.equals(new FreeTime(LocalTime.parse(\"12:20\"), LocalTime.parse(\"23:44\"))));","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"PohSayKeong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"PohSayKeong"},"content":" assertTrue(freeTime.equals(freeTime));","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"PohSayKeong"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"PohSayKeong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(5.0f));","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"PohSayKeong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"PohSayKeong"},"content":" assertFalse(freeTime.equals(new FreeTime(from, closeFrom)));","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"PohSayKeong"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"PohSayKeong":64}},{"path":"src/test/java/seedu/address/model/person/HourTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LuoZYi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"public class HourTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"LuoZYi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e new Hour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"LuoZYi"},"content":" public void constructor_invalidHour_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"LuoZYi"},"content":" String invalidHour \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Hour(invalidHour));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"LuoZYi"},"content":" public void isValidHour() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"LuoZYi"},"content":" // null working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":" assertThrows(NullPointerException.class, () -\u003e Hour.isValidHour(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"LuoZYi"},"content":" // invalid working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"32805\")); // working hour too long","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"-4\")); // negative working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":" assertFalse(Hour.isValidHour(\"39o\")); // invalid working hour","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"LuoZYi"},"content":" // valid telegram handle","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"LuoZYi"},"content":" assertTrue(Hour.isValidHour(\"38\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"LuoZYi"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" Hour hour \u003d new Hour(\"8848\");","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"LuoZYi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" assertEquals(hour, new Hour(\"8848\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" assertEquals(hour, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(null, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(5.0f, hour, \"0.0\");","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"LuoZYi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(hour, new Hour(\"884\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"LuoZYi":59}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"itssisi"},"content":" predicate \u003d new NameContainsKeywordsPredicate(List.of(\"Carol\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" .withEmail(\"alice@email.com\").withTelegram(\"@aliceheyhey\").build()));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":78,"itssisi":8}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).withMods(VALID_MOD_CS1231)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":" .withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"itssisi"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"itssisi"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" // different object -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" assertNotEquals(new Object(), ALICE);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"itssisi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"LuoZYi"},"content":" // different free time -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"LuoZYi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"itssisi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" // different mods -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMods(VALID_MOD_CS1231).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"LuoZYi"},"content":" // different hour -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"LuoZYi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"itssisi"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"PohSayKeong"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" + \", free time\u003d\" + ALICE.getFreeTime() + \", mods\u003d\" + ALICE.getMods()","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"LuoZYi"},"content":" + \", hours\u003d\" + ALICE.getHour() + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"LuoZYi":14,"PohSayKeong":1,"lshaoqin":12,"-":88,"itssisi":15}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"itssisi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"itssisi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"itssisi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"itssisi"},"content":"public class TelegramTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"itssisi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"itssisi"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"itssisi"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"itssisi"},"content":" public void isValidTelegram() {","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" // null telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"itssisi"},"content":" // invalid telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"@heymumble_jumbo123blahblahhellohellotestme\")); // long address","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" assertFalse(Telegram.isValidTelegram(\"@s\")); // one character","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"itssisi"},"content":" // valid telegram handle","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"itssisi"},"content":" assertTrue(Telegram.isValidTelegram(\"@heyanything\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"itssisi"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"itssisi"},"content":" Telegram telegram \u003d new Telegram(\"@helloitstele\");","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"itssisi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" assertEquals(telegram, new Telegram(\"@helloitstele\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"itssisi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"itssisi"},"content":" assertEquals(telegram, telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"itssisi"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"itssisi"},"content":" assertNotEquals(null, telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"itssisi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"itssisi"},"content":" assertNotEquals(5.0f, telegram, \"0.0\");","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"itssisi"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"itssisi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"itssisi"},"content":" assertNotEquals(telegram, new Telegram(\"@todayisnice\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"itssisi"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"itssisi":58}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"itssisi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":172,"itssisi":3}},{"path":"src/test/java/seedu/address/model/tag/LabelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"public class LabelTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" public void matchName_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d Tag.of(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" assert label.matchName(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" public void matchName_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" Label label \u003d Tag.of(\"label\");","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" assert !label.matchName(\"label2\");","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":17}},{"path":"src/test/java/seedu/address/model/tag/ModTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public class ModTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public void equalsToItself_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assert mod.equals(mod);","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherModWithSameName_true() {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" Mod mod1 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" Mod mod2 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" assert mod1.equals(mod2);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherModWithDifferentName_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" Mod mod1 \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" Mod mod2 \u003d Mod.of(\"CS2101\");","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" assert !mod1.equals(mod2);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public void equalsToOtherTag_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" Tag tag \u003d Tag.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" assert !mod.equals(tag);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" public void equalsToNull_false() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" Mod mod \u003d Mod.of(\"CS2103T\");","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" assert !mod.equals(null);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Mod.of(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" public void constructor_invalidModName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" String invalidModName \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Mod.of(invalidModName));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" public void isValidModName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" // null mod name","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Mod.isValidModName(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"lshaoqin":56}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.of(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Tag.of(invalidTagName));","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"lshaoqin":2,"-":24}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"itssisi"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"PohSayKeong"},"content":" private static final String INVALID_FROM \u003d \"19:55\";","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"PohSayKeong"},"content":" private static final String INVALID_TO \u003d \"10:21\";","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" private static final String INVALID_MOD \u003d \"CS12231S\";","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" private static final String INVALID_HOUR \u003d \"1000000\";","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"itssisi"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" private static final String VALID_FROM \u003d \"10:21\";","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" private static final String VALID_TO \u003d \"19:55\";","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" private static final List\u003cJsonAdaptedMod\u003e VALID_MODS \u003d BENSON.getMods().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" .map(JsonAdaptedMod::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" private static final String VALID_HOUR \u003d \"100\";","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"itssisi"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"itssisi"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"itssisi"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"itssisi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" invalidTags, VALID_FROM, VALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"lshaoqin"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"lshaoqin"},"content":" public void toModelType_invalidMods_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"lshaoqin"},"content":" List\u003cJsonAdaptedMod\u003e invalidMods \u003d new ArrayList\u003c\u003e(VALID_MODS);","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"lshaoqin"},"content":" invalidMods.add(new JsonAdaptedMod(INVALID_MOD));","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"lshaoqin"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"LuoZYi"},"content":" VALID_FROM, VALID_TO, invalidMods, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"PohSayKeong"},"content":" public void toModelType_invalidFreeTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"PohSayKeong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, INVALID_FROM, INVALID_TO, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"PohSayKeong"},"content":" String expectedMessage \u003d FreeTime.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"PohSayKeong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"PohSayKeong"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"PohSayKeong"},"content":" public void toModelType_nullFreeTime_doesNotThrowException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"PohSayKeong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, null, null, VALID_MODS, VALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"PohSayKeong"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"LuoZYi"},"content":" public void toModelType_invalidHour_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"LuoZYi"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"LuoZYi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, INVALID_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"LuoZYi"},"content":" String expectedMessage \u003d Hour.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"LuoZYi"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"LuoZYi"},"content":" public void toModelType_nullHour_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"LuoZYi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TELEGRAM,","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"LuoZYi"},"content":" VALID_TAGS, VALID_FROM, VALID_TO, VALID_MODS, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"LuoZYi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Hour.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"LuoZYi"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LuoZYi":31,"PohSayKeong":31,"lshaoqin":12,"-":95,"itssisi":7}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"itssisi"},"content":" private final EditPersonDescriptor descriptor;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(person.getFreeTime());","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" descriptor.setTags(person.getTags().size() \u003d\u003d 0 ? null : person.getTags());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" descriptor.setMods(person.getMods().size() \u003d\u003d 0 ? null : person.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"itssisi"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"itssisi"},"content":" public EditPersonDescriptorBuilder withTelegram(String address) {","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"itssisi"},"content":" descriptor.setTelegram(new Telegram(address));","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"PohSayKeong"},"content":" * Sets the {@code FreeTime} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"PohSayKeong"},"content":" public EditPersonDescriptorBuilder withFreeTime(String from, String to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(FreeTime.EMPTY_FREE_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"PohSayKeong"},"content":" descriptor.setFreeTime(new FreeTime(LocalTime.parse(from), LocalTime.parse(to)));","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"PohSayKeong"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" * Parses the {@code mods} into a {@code Set\u003cMod\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" * that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" public EditPersonDescriptorBuilder withMods(String... mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e modSet \u003d Stream.of(mods).map(Mod::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":" descriptor.setMods(modSet);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"LuoZYi"},"content":" * Parses the {@code hour} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"LuoZYi"},"content":" * that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"LuoZYi"},"content":" public EditPersonDescriptorBuilder withHour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"LuoZYi"},"content":" descriptor.setHour(new Hour(hour));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"LuoZYi"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LuoZYi":9,"PohSayKeong":15,"lshaoqin":13,"-":80,"itssisi":6}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"PohSayKeong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import seedu.address.model.person.Hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"itssisi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"itssisi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@amybee\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"LuoZYi"},"content":" public static final String DEFAULT_HOUR \u003d \"8\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"itssisi"},"content":" private Telegram telegram;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"PohSayKeong"},"content":" private FreeTime freeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" private Set\u003cMod\u003e mods;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"LuoZYi"},"content":" private Hour hour;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"itssisi"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" freeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" mods \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"LuoZYi"},"content":" hour \u003d new Hour(DEFAULT_HOUR);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"itssisi"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"PohSayKeong"},"content":" freeTime \u003d personToCopy.getFreeTime();","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" mods \u003d new HashSet\u003c\u003e(personToCopy.getMods());","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"LuoZYi"},"content":" hour \u003d personToCopy.getHour();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" * Parses the {@code mods} into a {@code Set\u003cMod\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" public PersonBuilder withMods(String ... mods) {","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":" this.mods \u003d SampleDataUtil.getModSet(mods);","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"itssisi"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"itssisi"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"itssisi"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"PohSayKeong"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"PohSayKeong"},"content":" * Sets the {@code FreeTime} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"PohSayKeong"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"PohSayKeong"},"content":" public PersonBuilder withFreeTime(String from, String to) {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"PohSayKeong"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d FreeTime.EMPTY_FREE_TIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"PohSayKeong"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"PohSayKeong"},"content":" this.freeTime \u003d new FreeTime(LocalTime.parse(from), LocalTime.parse(to));","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"PohSayKeong"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"LuoZYi"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"LuoZYi"},"content":" * Sets the {@code Hour} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"LuoZYi"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"LuoZYi"},"content":" public PersonBuilder withHour(String hour) {","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"LuoZYi"},"content":" this.hour \u003d new Hour(hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"LuoZYi"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"LuoZYi"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"LuoZYi"},"content":" return new Person(name, phone, email, telegram, tags, freeTime, mods, hour);","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"LuoZYi":13,"PohSayKeong":17,"lshaoqin":11,"-":87,"itssisi":8}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUR;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MOD;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"itssisi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"PohSayKeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"PohSayKeong"},"content":"import seedu.address.model.person.FreeTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"itssisi"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"LuoZYi"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" if (!person.getFreeTime().equals(FreeTime.EMPTY_FREE_TIME)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"PohSayKeong"},"content":" sb.append(PREFIX_FROM + person.getFreeTime().getFrom() + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"PohSayKeong"},"content":" sb.append(PREFIX_TO + person.getFreeTime().getTo() + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"PohSayKeong"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" s -\u003e sb.append(PREFIX_TAG + s.name + \" \")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" person.getMods().stream().forEach(","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" s -\u003e sb.append(PREFIX_MOD + s.name + \" \")","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"LuoZYi"},"content":" sb.append(PREFIX_HOUR + person.getHour().value + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" descriptor.getTelegram().ifPresent(address -\u003e sb.append(PREFIX_TELEGRAM).append(address.value).append(\" \"));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"PohSayKeong"},"content":" descriptor.getFreeTime().ifPresent(freeTime -\u003e sb.append(PREFIX_FROM).append(freeTime.getFrom()).append(\" \")","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"PohSayKeong"},"content":" .append(PREFIX_TO).append(freeTime.getTo()).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"PohSayKeong"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.name).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" if (descriptor.getMods().isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" Set\u003cMod\u003e mods \u003d descriptor.getMods().get();","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" mods.forEach(s -\u003e sb.append(PREFIX_MOD).append(s.name).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"LuoZYi"},"content":" descriptor.getHour().ifPresent(hour -\u003e sb.append(PREFIX_HOUR).append(hour.value).append(\" \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"LuoZYi":4,"PohSayKeong":10,"lshaoqin":9,"-":55,"itssisi":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FROM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_FIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOUR_SIXTY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS1231;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MOD_CS2103T;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"LuoZYi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TO_BOB;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"itssisi"},"content":" .withTelegram(\"@aliceheyhey\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"LuoZYi"},"content":" .withPhone(\"94351253\").withHour(\"8\")","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" .build();","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"itssisi"},"content":" .withTelegram(\"@bensonnn123\")","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"LuoZYi"},"content":" .withTags(\"owesMoney\", \"friends\").withFreeTime(\"21:15\", \"22:30\").withMods(\"CS1231\", \"CS2103T\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"14\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"heinz@example.com\").withTelegram(\"@carlkurz\").withHour(\"24\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"PohSayKeong"},"content":" .withEmail(\"cornelia@example.com\").withTelegram(\"@danielmeier\")","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"LuoZYi"},"content":" .withTags(\"friends\").withFreeTime(\"10:45\", \"11:30\").withHour(\"38\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"werner@example.com\").withTelegram(\"@hiitselle\").withHour(\"63\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"lydia@example.com\").withTelegram(\"@imfionaa\").withFreeTime(\"21:10\", \"23:15\")","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"39\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"anna@example.com\").withTelegram(\"@georgiey\").withFreeTime(\"07:00\", \"09:00\")","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"LuoZYi"},"content":" .withHour(\"46\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"stefan@example.com\").withTelegram(\"@hooniehoonhoon\").withHour(\"14\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"LuoZYi"},"content":" .withEmail(\"hans@example.com\").withTelegram(\"@idamueller\").withHour(\"27\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" .withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"LuoZYi"},"content":" .withMods(VALID_MOD_CS1231, VALID_MOD_CS2103T).withHour(VALID_HOUR_FIVE).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"itssisi"},"content":" .withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"LuoZYi"},"content":" .withFreeTime(VALID_FROM_BOB, VALID_TO_BOB).withHour(VALID_HOUR_SIXTY).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"PohSayKeong"},"content":" private TypicalPersons() {","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"PohSayKeong"},"content":" } // prevents instantiation","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"LuoZYi":22,"PohSayKeong":3,"lshaoqin":2,"-":58,"itssisi":3}},{"path":"src/test/java/seedu/address/ui/SortingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Mod;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"public class SortingTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" public void sortTags_correct() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" // Create a list of Tag objects","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" List\u003cTag\u003e tags \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Zebra\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bear\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bee\")","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" // Sort the list based on the \u0027name\u0027 attribute","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" tags.sort(Comparator.comparing(tag -\u003e tag.name));","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" // Define the expected order","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" List\u003cTag\u003e expectedOrder \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bear\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Bee\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" new Tag(\"Zebra\")","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" // Assert that the list is sorted as expected","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" assertEquals(expectedOrder, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" public void sortMods_correct() {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" // Create a list of Mod objects","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" List\u003cMod\u003e mods \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS2103T\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1101S\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1231\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" // Sort the list based on the \u0027name\u0027 attribute","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" mods.sort(Comparator.comparing(mod -\u003e mod.name));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" // Define the expected order","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" List\u003cMod\u003e expectedOrder \u003d Arrays.asList(","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1101S\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS1231\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" new Mod(\"CS2103T\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" // Assert that the list is sorted as expected","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" assertEquals(expectedOrder, mods);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"lshaoqin":60}}] diff --git a/AY2324S1-CS2103T-T10-1_tp_master/commits.json b/AY2324S1-CS2103T-T10-1_tp_master/commits.json index e992a657..a225e712 100644 --- a/AY2324S1-CS2103T-T10-1_tp_master/commits.json +++ b/AY2324S1-CS2103T-T10-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LuoZYi":[{"date":"2023-10-02","commitResults":[{"hash":"96199e5c4e92fe52107f4bec6d64066657781ea9","isMergeCommit":false,"messageTitle":"update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":73}}},{"hash":"8c8266fa01ed16d3d30cc1e54c9c7a2f51c29f60","isMergeCommit":false,"messageTitle":"modify userGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":2}}},{"hash":"76ae17f6c432e4c05df58c515b53f421e21b819e","isMergeCommit":false,"messageTitle":"modify userGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":4}}}]},{"date":"2023-10-04","commitResults":[{"hash":"9d64c42efde9af41c55753a18c3b194221b7e2fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T10-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"5cc36cf0262bc762ec1322124b67fbb2a9479cd5","isMergeCommit":true,"messageTitle":"Merge pull request #30 from raynertjx/feature/rename-to-TA/#16-17-19","messageBody":"Change GUI commands to include teaching assistant","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"38ce7577aea8320d089914a0a6dac5fb9dccd2ba","isMergeCommit":false,"messageTitle":"fix issue of not showing error message when time is not parsed correctly and add free time test case in EditPersonDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2023-10-18","commitResults":[{"hash":"84ef41de3879a1ea32d8c1140c294eba877defbb","isMergeCommit":false,"messageTitle":"add hour field to person and update relevant code and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":34},"test-code":{"insertions":237,"deletions":86}}},{"hash":"94e31c1a54ac0f03e23a021596ecde67536047a6","isMergeCommit":false,"messageTitle":"follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":10},"test-code":{"insertions":6,"deletions":6}}},{"hash":"7c9bfe2299fb91bb626006d27906289cc08bf2e3","isMergeCommit":false,"messageTitle":"update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}},{"hash":"f4ede7e097e37e6b821f18240df58c480784ae28","isMergeCommit":false,"messageTitle":"update check style for test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":90,"deletions":41}}},{"hash":"b40f68049c99ddf6a861b448c3dfc2132d8d58de","isMergeCommit":false,"messageTitle":"update checkstyle in test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":8}}},{"hash":"7f08378b1a22074f5cc6c8e26b7faa7a22a2b140","isMergeCommit":false,"messageTitle":"change GUI output as suggested","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7d69ce1d19bcf3cac720534d031942f16642d622","isMergeCommit":false,"messageTitle":"fix tests for hour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":39,"deletions":46}}},{"hash":"2955187d19ba87c6186f0c04a40e8914d4765d6a","isMergeCommit":false,"messageTitle":"fix checkstyles for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":5}}},{"hash":"488d442b07a28e84bc17f4b1837306f536da1e33","isMergeCommit":false,"messageTitle":"fix static checkstyles for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"29cf246f2a7b14d4867788b50eba68d4310733da","isMergeCommit":false,"messageTitle":"fix AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9b9896daa517906731e0ce8690074caf51d81b1b","isMergeCommit":false,"messageTitle":"fix AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"accc452aaa3f965d811c93677fb0727fd49fd1d7","isMergeCommit":false,"messageTitle":"Fix logic manager test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"8ae22f4da3b194730fd46e23e0b57e21dd09ec68","isMergeCommit":false,"messageTitle":"resolve conflict and add new test case for free time field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"02d342ff5a29b5c9cf1e9a3b60ac2de102a50763","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2b","messageBody":"","fileTypesAndContributionMap":{}}]}],"raynertjx":[{"date":"2023-09-27","commitResults":[{"hash":"61a51edfd8de3e8193ba6fd5e175ef61272e4b98","isMergeCommit":false,"messageTitle":"Edit skeletal PPP to only include headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":46}}}]},{"date":"2023-10-02","commitResults":[{"hash":"ae3f2697b4273e454d023274cb89f70f857af0d0","isMergeCommit":true,"messageTitle":"Merge pull request #13 from itssisi/docs/AboutUs/#2","messageBody":"Add AboutUs","fileTypesAndContributionMap":{}},{"hash":"70ed9b4f527fd9e31789f5c0ac8f011186d2516d","isMergeCommit":false,"messageTitle":"Add separate headings for DG and UG documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2023-10-10","commitResults":[{"hash":"a24a93a0522eb94cde57c7b37a2c0bfc282c6e9b","isMergeCommit":false,"messageTitle":"Change GUI commands to include teaching assistant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":11}}}]},{"date":"2023-10-16","commitResults":[{"hash":"22363342da2c106a31d7a4d5ddb264781ca6eb4d","isMergeCommit":true,"messageTitle":"Merge pull request #31 from PohSayKeong/feature/availability/#18","messageBody":"Update availability of TAs","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"6cf4a3cf8bcf7693adda99230d41da50cb398129","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LuoZYi/branch-v1.2b","messageBody":"Add hour field","fileTypesAndContributionMap":{}}]}],"PohSayKeong":[{"date":"2023-09-28","commitResults":[{"hash":"2dadddbe1aea7ed7175f1bdc7aa8d769f2d71c31","isMergeCommit":false,"messageTitle":"Update the DG with user stories, glossary, NFRs, use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":15}}},{"hash":"f849e2e888a1ed5dc3b46d49fcb3b0b894b85800","isMergeCommit":true,"messageTitle":"Merge pull request #10 from lshaoqin/docs/update-README/#3","messageBody":"Update readme and ui demo","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"c7f1d00e7e2af5f91627cdf126c76fc7c115e335","isMergeCommit":false,"messageTitle":"Clarify TA abbreviation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"d6009e43c438b0bcb668a064e9e1269f34051d31","isMergeCommit":true,"messageTitle":"Merge pull request #23 from lshaoqin/docs/update-README/#3","messageBody":"Fix incorrect CI badge and AB3 references","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"66c4a8bb50804f27e4bd4d8d3343a8834c0dc8c8","isMergeCommit":false,"messageTitle":"Add the ability to include TA\u0027s availability","messageBody":"Currently the professor does not know the TA\u0027s availability.\n\nThis needs to be changed so that the profressor can assign a replacement if needed.\n\nProfessor can add TA\u0027s availability by specifying when the TA is free during the day.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":41},"test-code":{"insertions":182,"deletions":28}}},{"hash":"8bbc1c459134cd6c270982f78deba7d1ec68a74d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:PohSayKeong/tp into feature/availability/#18","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"a1d9cb8fcad673272d92248fcfa288c647964579","isMergeCommit":false,"messageTitle":"Tokenize free time in EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-16","commitResults":[{"hash":"1c2dbc6a483cf83cb1f53fbf5e2244ef654d94ff","isMergeCommit":true,"messageTitle":"Merge pull request #32 from lshaoqin/feature/courses/#22","messageBody":"Update testcases for mods","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"417eed4f58aaba74dc54758f05840635299c1be8","isMergeCommit":true,"messageTitle":"Merge pull request #37 from lshaoqin/more-tests","messageBody":"Add more tests to improve code coverage","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"d717fdf146804cc95a2e9e989a64522d380a5c8c","isMergeCommit":true,"messageTitle":"Merge pull request #36 from lshaoqin/enchancement/mod-lsp/#34","messageBody":"extend Tag and Mod from Label","tags":["v1.2.1"],"fileTypesAndContributionMap":{}}]}],"lshaoqin":[{"date":"2023-09-26","commitResults":[{"hash":"0434bc74f5a5520479f17dee2bf58536e5304900","isMergeCommit":false,"messageTitle":"update readme and ui image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"ab5b93fedd7d305a93dd446570908c521d2d93f4","isMergeCommit":false,"messageTitle":"update CI badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-09-28","commitResults":[{"hash":"428fbefb52cf71e0478c22d6502bc115e50a2a79","isMergeCommit":false,"messageTitle":"update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2cdec2752c6dfa7f93251f64a0a4e9730fe8a190","isMergeCommit":false,"messageTitle":"add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-02","commitResults":[{"hash":"4b8a70da4bb31ff94f9b662b9931e612d20bd107","isMergeCommit":true,"messageTitle":"Merge pull request #8 from raynertjx/docs/add-skeletal-ppp/#5","messageBody":"Add skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"271f468b341ff21d87559ec42f4ecd849751a068","isMergeCommit":false,"messageTitle":"fix java CI badge path","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c48d9e6a83193bb973828522464866050cdf1fe","isMergeCommit":false,"messageTitle":"fix java CI badge path","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"65124267dd9a004a0cac0d3c4b723d093ff6367b","isMergeCommit":true,"messageTitle":"Merge pull request #9 from PohSayKeong/docs/update-dg/#6","messageBody":"Update the DG with user stories, glossary, NFRs, use cases","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"b21e7d62ac91a1702818befbdddbc660bae5dff3","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-10","commitResults":[{"hash":"cf9660d4f579fc23cf9ec51a28eb702641e61087","isMergeCommit":true,"messageTitle":"Merge pull request #27 from itssisi/feature/update-telegram/#21","messageBody":"Replace address with Telegram handle","fileTypesAndContributionMap":{}},{"hash":"a0ad3b2c77860aca19fb293118f350e6fc1d7dba","isMergeCommit":false,"messageTitle":"Add ability to set mods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":231,"deletions":23},"test-code":{"insertions":128,"deletions":38}}},{"hash":"c3b45ddb4108ff3bc6665ced30c39909d6c03628","isMergeCommit":false,"messageTitle":"update user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":8,"deletions":3}}}]},{"date":"2023-10-12","commitResults":[{"hash":"f6351d8ce5ab61346e6bcf5b34d45ac58d5b2115","isMergeCommit":false,"messageTitle":"Update testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"f25328221b1d7aed6da3835df3099d2bf14fd52b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-T10-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f82ba13d17db22d91b060e5888c052d99a6a07e0","isMergeCommit":false,"messageTitle":"Edit testcases for Person class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"0fe4f275093ed58fc599ad49b95886e2b0f566ce","isMergeCommit":false,"messageTitle":"extend Tag and Mod from Label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":37},"test-code":{"insertions":11,"deletions":11}}},{"hash":"6e40d0bd48a91fba29a0940c5a8dc281d480e8f0","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13},"test-code":{"insertions":109,"deletions":0}}},{"hash":"e80516548b83e8918198b763112b55b786d056e4","isMergeCommit":false,"messageTitle":"add more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":2}}},{"hash":"9fb4b34940cbbf3521b83d3de6797f6353b3037e","isMergeCommit":false,"messageTitle":"Add SampleDataUtil tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2023-10-17","commitResults":[{"hash":"da3e43dd8bc6b5ea6e863a9cc43cb69d9a54a3fc","isMergeCommit":false,"messageTitle":"add more tests to the Person class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"81c960fc9a7c3445e3cdf22fdb62ab008d0b2d63","isMergeCommit":false,"messageTitle":"add tests for UserPrefs and AddressBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"6f91d1970a4f82fa3382cafdd0d55d28c0998ecb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into enchancement/mod-lsp/#34","messageBody":"","fileTypesAndContributionMap":{}}]}],"itssisi":[{"date":"2023-09-30","commitResults":[{"hash":"db5735cb4ddb39e02607798f1b7a11b0152f8460","isMergeCommit":false,"messageTitle":"Add AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":31}}}]},{"date":"2023-10-04","commitResults":[{"hash":"dc1633b78220b0fcf0d0c4a2e26fbe84f647e125","isMergeCommit":true,"messageTitle":"Merge pull request #14 from LuoZYi/master","messageBody":"Update the UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"08d023c0ca1068e71b2a9f33846192f6b0b5d1f3","isMergeCommit":false,"messageTitle":"Replace address with Telegram handle","messageBody":"The addressbook currently contains address field.\n\nAddress field is no longer needed and has to be replaced by Telegram field because Telegram is needed as part of TA contacts.\n\nAs such, address field is changed to become Telegram handle field. Doing so will help the TA manager to contact TA via Telegram easily.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":136},"test-code":{"insertions":182,"deletions":182}}},{"hash":"279def4700668bc7856ecaa984b459652a40056e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":27}}},{"hash":"0bf8c09906f30dd1c340b2e98f38a0adb9594758","isMergeCommit":false,"messageTitle":"Update Telegram handle test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":59,"deletions":58}}},{"hash":"523068d6841be34e28d82e0e0201194863f8b151","isMergeCommit":false,"messageTitle":"Fix checkstyle in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":30}}},{"hash":"86f0fe2f465a23d657537a997d75fac01487b03d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from lshaoqin/feature/courses/#22","messageBody":"Add feature to update and view the mods that TAs are teaching","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LuoZYi":{"docs":65,"functional-code":169,"test-code":295},"raynertjx":{"docs":35,"functional-code":14,"test-code":0},"PohSayKeong":{"docs":73,"functional-code":231,"test-code":162},"lshaoqin":{"docs":17,"functional-code":279,"test-code":315,"other":1},"itssisi":{"docs":32,"functional-code":130,"test-code":181}},"authorContributionVariance":{"LuoZYi":23878.936,"raynertjx":213.37213,"PohSayKeong":8445.604,"lshaoqin":9306.216,"itssisi":26252.643},"authorDisplayNameMap":{"LuoZYi":"CS2103T-T10-1 LUO ..NGYI","raynertjx":"CS2103T-T10-1 RAYN..IANG","PohSayKeong":"CS2103T-T10-1 POH ..EONG","lshaoqin":"CS2103T-T10-1 LU S..OQIN","itssisi":"CS2103T-T10-1 SIGR..ISEN"}} +{"authorDailyContributionsMap":{"LuoZYi":[{"date":"2023-10-02","commitResults":[{"hash":"96199e5c4e92fe52107f4bec6d64066657781ea9","isMergeCommit":false,"messageTitle":"update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":73}}},{"hash":"8c8266fa01ed16d3d30cc1e54c9c7a2f51c29f60","isMergeCommit":false,"messageTitle":"modify userGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":2}}},{"hash":"76ae17f6c432e4c05df58c515b53f421e21b819e","isMergeCommit":false,"messageTitle":"modify userGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":4}}}]},{"date":"2023-10-04","commitResults":[{"hash":"9d64c42efde9af41c55753a18c3b194221b7e2fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T10-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"5cc36cf0262bc762ec1322124b67fbb2a9479cd5","isMergeCommit":true,"messageTitle":"Merge pull request #30 from raynertjx/feature/rename-to-TA/#16-17-19","messageBody":"Change GUI commands to include teaching assistant","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"38ce7577aea8320d089914a0a6dac5fb9dccd2ba","isMergeCommit":false,"messageTitle":"fix issue of not showing error message when time is not parsed correctly and add free time test case in EditPersonDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2023-10-18","commitResults":[{"hash":"84ef41de3879a1ea32d8c1140c294eba877defbb","isMergeCommit":false,"messageTitle":"add hour field to person and update relevant code and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":34},"test-code":{"insertions":237,"deletions":86}}},{"hash":"94e31c1a54ac0f03e23a021596ecde67536047a6","isMergeCommit":false,"messageTitle":"follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":10},"test-code":{"insertions":6,"deletions":6}}},{"hash":"7c9bfe2299fb91bb626006d27906289cc08bf2e3","isMergeCommit":false,"messageTitle":"update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}},{"hash":"f4ede7e097e37e6b821f18240df58c480784ae28","isMergeCommit":false,"messageTitle":"update check style for test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":90,"deletions":41}}},{"hash":"b40f68049c99ddf6a861b448c3dfc2132d8d58de","isMergeCommit":false,"messageTitle":"update checkstyle in test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":8}}},{"hash":"7f08378b1a22074f5cc6c8e26b7faa7a22a2b140","isMergeCommit":false,"messageTitle":"change GUI output as suggested","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7d69ce1d19bcf3cac720534d031942f16642d622","isMergeCommit":false,"messageTitle":"fix tests for hour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":39,"deletions":46}}},{"hash":"2955187d19ba87c6186f0c04a40e8914d4765d6a","isMergeCommit":false,"messageTitle":"fix checkstyles for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":5}}},{"hash":"488d442b07a28e84bc17f4b1837306f536da1e33","isMergeCommit":false,"messageTitle":"fix static checkstyles for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"29cf246f2a7b14d4867788b50eba68d4310733da","isMergeCommit":false,"messageTitle":"fix AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9b9896daa517906731e0ce8690074caf51d81b1b","isMergeCommit":false,"messageTitle":"fix AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"accc452aaa3f965d811c93677fb0727fd49fd1d7","isMergeCommit":false,"messageTitle":"Fix logic manager test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"8ae22f4da3b194730fd46e23e0b57e21dd09ec68","isMergeCommit":false,"messageTitle":"resolve conflict and add new test case for free time field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"02d342ff5a29b5c9cf1e9a3b60ac2de102a50763","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2b","messageBody":"","fileTypesAndContributionMap":{}}]}],"raynertjx":[{"date":"2023-09-27","commitResults":[{"hash":"61a51edfd8de3e8193ba6fd5e175ef61272e4b98","isMergeCommit":false,"messageTitle":"Edit skeletal PPP to only include headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":46}}}]},{"date":"2023-10-02","commitResults":[{"hash":"ae3f2697b4273e454d023274cb89f70f857af0d0","isMergeCommit":true,"messageTitle":"Merge pull request #13 from itssisi/docs/AboutUs/#2","messageBody":"Add AboutUs","fileTypesAndContributionMap":{}},{"hash":"70ed9b4f527fd9e31789f5c0ac8f011186d2516d","isMergeCommit":false,"messageTitle":"Add separate headings for DG and UG documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2023-10-10","commitResults":[{"hash":"a24a93a0522eb94cde57c7b37a2c0bfc282c6e9b","isMergeCommit":false,"messageTitle":"Change GUI commands to include teaching assistant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":11}}}]},{"date":"2023-10-16","commitResults":[{"hash":"22363342da2c106a31d7a4d5ddb264781ca6eb4d","isMergeCommit":true,"messageTitle":"Merge pull request #31 from PohSayKeong/feature/availability/#18","messageBody":"Update availability of TAs","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"6cf4a3cf8bcf7693adda99230d41da50cb398129","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LuoZYi/branch-v1.2b","messageBody":"Add hour field","fileTypesAndContributionMap":{}}]}],"PohSayKeong":[{"date":"2023-09-28","commitResults":[{"hash":"2dadddbe1aea7ed7175f1bdc7aa8d769f2d71c31","isMergeCommit":false,"messageTitle":"Update the DG with user stories, glossary, NFRs, use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":15}}},{"hash":"f849e2e888a1ed5dc3b46d49fcb3b0b894b85800","isMergeCommit":true,"messageTitle":"Merge pull request #10 from lshaoqin/docs/update-README/#3","messageBody":"Update readme and ui demo","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"c7f1d00e7e2af5f91627cdf126c76fc7c115e335","isMergeCommit":false,"messageTitle":"Clarify TA abbreviation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"d6009e43c438b0bcb668a064e9e1269f34051d31","isMergeCommit":true,"messageTitle":"Merge pull request #23 from lshaoqin/docs/update-README/#3","messageBody":"Fix incorrect CI badge and AB3 references","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"66c4a8bb50804f27e4bd4d8d3343a8834c0dc8c8","isMergeCommit":false,"messageTitle":"Add the ability to include TA\u0027s availability","messageBody":"Currently the professor does not know the TA\u0027s availability.\n\nThis needs to be changed so that the profressor can assign a replacement if needed.\n\nProfessor can add TA\u0027s availability by specifying when the TA is free during the day.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":41},"test-code":{"insertions":182,"deletions":28}}},{"hash":"8bbc1c459134cd6c270982f78deba7d1ec68a74d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:PohSayKeong/tp into feature/availability/#18","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"a1d9cb8fcad673272d92248fcfa288c647964579","isMergeCommit":false,"messageTitle":"Tokenize free time in EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-16","commitResults":[{"hash":"1c2dbc6a483cf83cb1f53fbf5e2244ef654d94ff","isMergeCommit":true,"messageTitle":"Merge pull request #32 from lshaoqin/feature/courses/#22","messageBody":"Update testcases for mods","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"417eed4f58aaba74dc54758f05840635299c1be8","isMergeCommit":true,"messageTitle":"Merge pull request #37 from lshaoqin/more-tests","messageBody":"Add more tests to improve code coverage","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"d717fdf146804cc95a2e9e989a64522d380a5c8c","isMergeCommit":true,"messageTitle":"Merge pull request #36 from lshaoqin/enchancement/mod-lsp/#34","messageBody":"extend Tag and Mod from Label","tags":["v1.2.1"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"3e3369f844586ad7a4da2b6da9f583d31b4f8a98","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Updates UG up to v1.2","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":14}}}]}],"lshaoqin":[{"date":"2023-09-26","commitResults":[{"hash":"0434bc74f5a5520479f17dee2bf58536e5304900","isMergeCommit":false,"messageTitle":"update readme and ui image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"ab5b93fedd7d305a93dd446570908c521d2d93f4","isMergeCommit":false,"messageTitle":"update CI badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-09-28","commitResults":[{"hash":"428fbefb52cf71e0478c22d6502bc115e50a2a79","isMergeCommit":false,"messageTitle":"update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2cdec2752c6dfa7f93251f64a0a4e9730fe8a190","isMergeCommit":false,"messageTitle":"add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-02","commitResults":[{"hash":"4b8a70da4bb31ff94f9b662b9931e612d20bd107","isMergeCommit":true,"messageTitle":"Merge pull request #8 from raynertjx/docs/add-skeletal-ppp/#5","messageBody":"Add skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"271f468b341ff21d87559ec42f4ecd849751a068","isMergeCommit":false,"messageTitle":"fix java CI badge path","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c48d9e6a83193bb973828522464866050cdf1fe","isMergeCommit":false,"messageTitle":"fix java CI badge path","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"65124267dd9a004a0cac0d3c4b723d093ff6367b","isMergeCommit":true,"messageTitle":"Merge pull request #9 from PohSayKeong/docs/update-dg/#6","messageBody":"Update the DG with user stories, glossary, NFRs, use cases","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"b21e7d62ac91a1702818befbdddbc660bae5dff3","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-10","commitResults":[{"hash":"cf9660d4f579fc23cf9ec51a28eb702641e61087","isMergeCommit":true,"messageTitle":"Merge pull request #27 from itssisi/feature/update-telegram/#21","messageBody":"Replace address with Telegram handle","fileTypesAndContributionMap":{}},{"hash":"a0ad3b2c77860aca19fb293118f350e6fc1d7dba","isMergeCommit":false,"messageTitle":"Add ability to set mods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":231,"deletions":23},"test-code":{"insertions":128,"deletions":38}}},{"hash":"c3b45ddb4108ff3bc6665ced30c39909d6c03628","isMergeCommit":false,"messageTitle":"update user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":8,"deletions":3}}}]},{"date":"2023-10-12","commitResults":[{"hash":"f6351d8ce5ab61346e6bcf5b34d45ac58d5b2115","isMergeCommit":false,"messageTitle":"Update testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"f25328221b1d7aed6da3835df3099d2bf14fd52b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-T10-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f82ba13d17db22d91b060e5888c052d99a6a07e0","isMergeCommit":false,"messageTitle":"Edit testcases for Person class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"0fe4f275093ed58fc599ad49b95886e2b0f566ce","isMergeCommit":false,"messageTitle":"extend Tag and Mod from Label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":37},"test-code":{"insertions":11,"deletions":11}}},{"hash":"6e40d0bd48a91fba29a0940c5a8dc281d480e8f0","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13},"test-code":{"insertions":109,"deletions":0}}},{"hash":"e80516548b83e8918198b763112b55b786d056e4","isMergeCommit":false,"messageTitle":"add more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":2}}},{"hash":"9fb4b34940cbbf3521b83d3de6797f6353b3037e","isMergeCommit":false,"messageTitle":"Add SampleDataUtil tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2023-10-17","commitResults":[{"hash":"da3e43dd8bc6b5ea6e863a9cc43cb69d9a54a3fc","isMergeCommit":false,"messageTitle":"add more tests to the Person class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"81c960fc9a7c3445e3cdf22fdb62ab008d0b2d63","isMergeCommit":false,"messageTitle":"add tests for UserPrefs and AddressBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"6f91d1970a4f82fa3382cafdd0d55d28c0998ecb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into enchancement/mod-lsp/#34","messageBody":"","fileTypesAndContributionMap":{}}]}],"itssisi":[{"date":"2023-09-30","commitResults":[{"hash":"db5735cb4ddb39e02607798f1b7a11b0152f8460","isMergeCommit":false,"messageTitle":"Add AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":31}}}]},{"date":"2023-10-04","commitResults":[{"hash":"dc1633b78220b0fcf0d0c4a2e26fbe84f647e125","isMergeCommit":true,"messageTitle":"Merge pull request #14 from LuoZYi/master","messageBody":"Update the UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"08d023c0ca1068e71b2a9f33846192f6b0b5d1f3","isMergeCommit":false,"messageTitle":"Replace address with Telegram handle","messageBody":"The addressbook currently contains address field.\n\nAddress field is no longer needed and has to be replaced by Telegram field because Telegram is needed as part of TA contacts.\n\nAs such, address field is changed to become Telegram handle field. Doing so will help the TA manager to contact TA via Telegram easily.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":136},"test-code":{"insertions":182,"deletions":182}}},{"hash":"279def4700668bc7856ecaa984b459652a40056e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":27}}},{"hash":"0bf8c09906f30dd1c340b2e98f38a0adb9594758","isMergeCommit":false,"messageTitle":"Update Telegram handle test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":59,"deletions":58}}},{"hash":"523068d6841be34e28d82e0e0201194863f8b151","isMergeCommit":false,"messageTitle":"Fix checkstyle in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":30}}},{"hash":"86f0fe2f465a23d657537a997d75fac01487b03d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from lshaoqin/feature/courses/#22","messageBody":"Add feature to update and view the mods that TAs are teaching","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"196b528761682a3639e2baef4f75209e5df5d164","isMergeCommit":true,"messageTitle":"Merge pull request #44 from AY2324S1-CS2103T-T10-1/docs/update-ug-1.2","messageBody":"Update UG up to 1.2","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LuoZYi":{"docs":62,"functional-code":169,"test-code":295},"raynertjx":{"docs":35,"functional-code":14,"test-code":0},"PohSayKeong":{"docs":88,"functional-code":231,"test-code":162},"lshaoqin":{"docs":12,"functional-code":279,"test-code":315,"other":1},"itssisi":{"docs":32,"functional-code":130,"test-code":181}},"authorContributionVariance":{"LuoZYi":21118.375,"raynertjx":188.98636,"PohSayKeong":7459.2734,"lshaoqin":8276.051,"itssisi":23185.062},"authorDisplayNameMap":{"LuoZYi":"CS2103T-T10-1 LUO ..NGYI","raynertjx":"CS2103T-T10-1 RAYN..IANG","PohSayKeong":"CS2103T-T10-1 POH ..EONG","lshaoqin":"CS2103T-T10-1 LU S..OQIN","itssisi":"CS2103T-T10-1 SIGR..ISEN"}} diff --git a/AY2324S1-CS2103T-T12-1_tp_master/authorship.json b/AY2324S1-CS2103T-T12-1_tp_master/authorship.json index ed5eb456..ec4c6a86 100644 --- a/AY2324S1-CS2103T-T12-1_tp_master/authorship.json +++ b/AY2324S1-CS2103T-T12-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T12-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T12-1/tp/actions)","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"# NPC_TRACK","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"The only application you need if you\u0027re a teaching assistant - free of charge.","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"It will leave you wondering how you lived without this application all this while.","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"et-irl":5,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"### choonyan02","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/choonyan02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"[[github](https://github.com/choonyan02)]","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/choonyan02.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"* Role: Developer","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"### et-irl","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/et-irl.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/et-irl)]","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/et-irl.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":"* Role: Developer","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"### lsyurea","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/lsyurea.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/lsyurea)] [[portfolio](team/lsyurea.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"### proto-aiken-13","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/proto-aiken-13.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/proto-aiken-13)]","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/proto-aiken-13.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":"### vanessamae23","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/vanessamae23.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/vanessamae23)]","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/vanessamae23.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"et-irl":26,"-":31}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"shut down.","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":86,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"Vanessamae23"},"content":"()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2023-10-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-10-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2023-10-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2023-10-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"Choonyan02"},"content":"* teaching assistant at NUS","lastModifiedDate":"2023-10-03"},{"lineNumber":264,"author":{"gitId":"Choonyan02"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2023-10-03"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"Choonyan02"},"content":"**Value proposition**: our app offers teaching assistants an efficient solution to student management. It provides quick","lastModifiedDate":"2023-10-03"},{"lineNumber":271,"author":{"gitId":"Choonyan02"},"content":"access to student details, course organisation, and secure data handling. Communication logs, customization, and","lastModifiedDate":"2023-10-03"},{"lineNumber":272,"author":{"gitId":"Choonyan02"},"content":"integration with university systems enhance personalized support. Cross-platform access ensures flexibility, supporting","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"Choonyan02"},"content":"various teaching activities seamlessly.","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"Choonyan02"},"content":"|----------|--------------|------------------------------|-------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | add students to a class | |","lastModifiedDate":"2023-10-03"},{"lineNumber":284,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | delete students from a class | remove students who are not part of the class anymore |","lastModifiedDate":"2023-10-03"},{"lineNumber":285,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | find students by keyword | reduce time taken to locate student details |","lastModifiedDate":"2023-10-03"},{"lineNumber":286,"author":{"gitId":"Choonyan02"},"content":"| `* *` | TA | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"Choonyan02"},"content":"| `**` | TA | list all students in a class | have an overview of all the students in a class |","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"Choonyan02"},"content":"| `*` | TA | exit the app | close the program |","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"et-irl"},"content":"**Use case: Add a person**","lastModifiedDate":"2023-10-03"},{"lineNumber":297,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":298,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":299,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":300,"author":{"gitId":"et-irl"},"content":"1. User requests to add a person.","lastModifiedDate":"2023-10-03"},{"lineNumber":301,"author":{"gitId":"lsyurea"},"content":"2. User provides the name and optional details.","lastModifiedDate":"2023-10-24"},{"lineNumber":302,"author":{"gitId":"lsyurea"},"content":"3. AddressBook creates a new person entry with the provided optional details.","lastModifiedDate":"2023-10-24"},{"lineNumber":303,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":304,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":305,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":306,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":307,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":308,"author":{"gitId":"lsyurea"},"content":"* 3a. User does not provide the name.","lastModifiedDate":"2023-10-24"},{"lineNumber":309,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":310,"author":{"gitId":"et-irl"},"content":" * 3a1. AddressBook displays an error message and prompts the user to provide missing details.","lastModifiedDate":"2023-10-03"},{"lineNumber":311,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":312,"author":{"gitId":"et-irl"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":313,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":314,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"lsyurea"},"content":"**Use case : Edit a person**","lastModifiedDate":"2023-10-24"},{"lineNumber":338,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":339,"author":{"gitId":"lsyurea"},"content":"**MSS**","lastModifiedDate":"2023-10-24"},{"lineNumber":340,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":341,"author":{"gitId":"lsyurea"},"content":"1. User requests to Edit persons","lastModifiedDate":"2023-10-24"},{"lineNumber":342,"author":{"gitId":"lsyurea"},"content":"2. AddressBook shows the edited person","lastModifiedDate":"2023-10-24"},{"lineNumber":343,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":344,"author":{"gitId":"lsyurea"},"content":" Use case ends.","lastModifiedDate":"2023-10-24"},{"lineNumber":345,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":346,"author":{"gitId":"et-irl"},"content":"**Use case: Find a person**","lastModifiedDate":"2023-10-03"},{"lineNumber":347,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":348,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":349,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":350,"author":{"gitId":"et-irl"},"content":"1. User requests to find a person.","lastModifiedDate":"2023-10-03"},{"lineNumber":351,"author":{"gitId":"et-irl"},"content":"2. User provides the full or partial search keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":352,"author":{"gitId":"et-irl"},"content":"3. AddressBook searches for persons matching the keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":353,"author":{"gitId":"et-irl"},"content":"4. AddressBook displays a list of matching persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":354,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":355,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":356,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":357,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":358,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":359,"author":{"gitId":"et-irl"},"content":"* 5a. No persons match the search keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":360,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":361,"author":{"gitId":"et-irl"},"content":" * 5a1. AddressBook displays a message indicating no matching persons were found.","lastModifiedDate":"2023-10-03"},{"lineNumber":362,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":363,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":364,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":365,"author":{"gitId":"et-irl"},"content":"**Use case: List all persons**","lastModifiedDate":"2023-10-03"},{"lineNumber":366,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":367,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":368,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":369,"author":{"gitId":"et-irl"},"content":"1. User requests to list all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":370,"author":{"gitId":"et-irl"},"content":"2. AddressBook retrieves the list of all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":371,"author":{"gitId":"et-irl"},"content":"3. AddressBook displays a list of all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":372,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":373,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":375,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":376,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":377,"author":{"gitId":"Vanessamae23"},"content":"* 2a. There are no persons in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":378,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":379,"author":{"gitId":"Vanessamae23"},"content":" * 2a1. AddressBook displays a message indicating that the address book is empty.","lastModifiedDate":"2023-10-13"},{"lineNumber":380,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":381,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"lsyurea"},"content":"4. Any teaching assistant from any faculty should know how to use it.","lastModifiedDate":"2023-10-03"},{"lineNumber":389,"author":{"gitId":"lsyurea"},"content":"5. Data of the students should not be easily accessible.","lastModifiedDate":"2023-10-03"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"lsyurea"},"content":"* **CLI**: Command Line Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":398,"author":{"gitId":"lsyurea"},"content":"* **GUI**: Graphical User Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":399,"author":{"gitId":"lsyurea"},"content":"* **UI**: User Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":400,"author":{"gitId":"lsyurea"},"content":"* **TA**: Teaching Assistant","lastModifiedDate":"2023-10-03"},{"lineNumber":401,"author":{"gitId":"lsyurea"},"content":"* **MSS**: Main Success Scenario","lastModifiedDate":"2023-10-03"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"lsyurea":19,"et-irl":49,"Choonyan02":13,"Vanessamae23":8,"-":365}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"# Welcome to `Npc_track`","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"## Tracking the details of your students is on the cusp of your fingertips!","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` is a desktop application curtailed for the humble teaching assistants of SoC via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, `npc_track` can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"Here’s an overview of how `npc_track` can help you streamline your student management process:","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"- Store, delete and edit information about your students!","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"- Track the progress of your students","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"- ...","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"On top of these functionalities, we believe that student management should be extremely efficient. `npc_track` is optimized for use via the familiar command line interface (CLI) for linux / fans of terminal applications as well as the benefits of an appealing user interface for TA’s more inclined to them!","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` is for all TA’s, and is adaptable for their management and organisational styles!","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"## Table of Contents","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"- [Features](#features)","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" - [Viewing Help](#help) `help`","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" - [Listing All Students](#list) `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" - [Adding a Student](#add) `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" - [Deleting a Student](#delete) `delete`","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" - [Exiting the Program](#exit)","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"- [FAQ](#FAQ)","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"- [Known Issues](#issues)","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"- [Command Summary](#summary)","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"## How can this guide help me?","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"**First time user?** Welcome and thank you for using our app! Check out the installation guide here!","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"Once you’re done setting up, check out the [features](#features) of `npc_track` to manage the dossier of your students!","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"If you are an intermediary user and are confused or unclear of some of our features, check out the [FAQ](#FAQ) as well!","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"Encountered some bugs or unexpected events when using the app? Maybe [Known Issues](#issues) will give you some guidance on what the known bugs (and their status) are!","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"A seasoned user (but you still need help on memorizing commands)? Drop by in [Command summary](#summary)!","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"features\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"help\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"### Adding a student: `add`","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":"Adds a student to the student book.","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/TELEGRAM_HANDLE [t/TAG]… [c/COMMENT]…​`","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":"A student can have any number of tags (including 0)","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":"A student can have any number of comments (including 0)","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/johnTelegram, block 123, #01-01`","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/newTelegram p/1234567 t/criminal c/On the loose as we speak!`","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"### Listing all students : `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"list\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"et-irl"},"content":"Shows a list of all students.","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"edit\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":"Edits an existing student.","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"et-irl"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG]… [c/COMMENT]…`","lastModifiedDate":"2023-10-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be ","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":" `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"et-irl"},"content":"* `edit 3 t/ c/Loves cake` Clears all existing tags of the 3rd person and replaces their tags with \"Loves cake\".","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"Choonyan02"},"content":"### Attendance","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"Choonyan02"},"content":"For attendance, you can enter the following commands:","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":"* markAtd","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":"* unmarkAtd","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":"### Mark Attendance : `markAtd`","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":"\u003ca name\u003d\"markAtd\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"Choonyan02"},"content":"Marks the attendance of a student for that tutorial.","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Choonyan02"},"content":"Format: `markAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"Choonyan02"},"content":"* `markAtd 1 t/1`","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"Choonyan02"},"content":"* `markAtd 2 t/12`","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"Choonyan02"},"content":"### Unmark Attendance : `unmarkAtd`","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"Choonyan02"},"content":"\u003ca name\u003d\"unmarkAtd\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"Choonyan02"},"content":"Unmark the attendance of a student for that tutorial.","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"Choonyan02"},"content":"Format: `unmarkAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"Choonyan02"},"content":"Examples:","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"Choonyan02"},"content":"* `unmarkAtd 1 t/1`","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Choonyan02"},"content":"* `unmarkAtd 2 t/12`","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"et-irl"},"content":"### Distribute assignments: `assign`","lastModifiedDate":"2023-10-23"},{"lineNumber":158,"author":{"gitId":"et-irl"},"content":"\u003ca name\u003d\"assign\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":159,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":160,"author":{"gitId":"et-irl"},"content":"Create an assignment and assign it to all students.","lastModifiedDate":"2023-10-23"},{"lineNumber":161,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":162,"author":{"gitId":"et-irl"},"content":"Format: `assign n/ASSIGNMENT_NAME m/MAX_SCORE`","lastModifiedDate":"2023-10-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-23"},{"lineNumber":165,"author":{"gitId":"et-irl"},"content":"- `assign n/Tutorial1 m/100`","lastModifiedDate":"2023-10-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"Vanessamae23"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2023-10-05"},{"lineNumber":168,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"delete\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":"Deletes the specified person from the student book.","lastModifiedDate":"2023-10-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"exit\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":"StudentBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":187,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` data are saved automatically as a JSON file. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":190,"author":{"gitId":"Vanessamae23"},"content":"If your changes to the data file makes its format invalid, StudentBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"FAQ\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"Vanessamae23"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous StudentBook home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":207,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"issues\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"summary\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"Vanessamae23"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/TELEGRAM_HANDLE [t/TAG]… [c/COMMENT]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/jamesTele t/friend t/colleague c/Owes a cookie`","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"et-irl"},"content":"**Clear** | `clear​`","lastModifiedDate":"2023-10-11"},{"lineNumber":220,"author":{"gitId":"et-irl"},"content":"**Delete** | `delete INDEX​` \u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2023-10-11"},{"lineNumber":221,"author":{"gitId":"et-irl"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG]… [c/COMMENT]…​` \u003cbr\u003e e.g., `n/New Name t/`","lastModifiedDate":"2023-10-11"},{"lineNumber":222,"author":{"gitId":"et-irl"},"content":"**Exit** | `exit​`","lastModifiedDate":"2023-10-11"},{"lineNumber":223,"author":{"gitId":"et-irl"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]​` e.g., `find James Jake`","lastModifiedDate":"2023-10-11"},{"lineNumber":224,"author":{"gitId":"et-irl"},"content":"**Help** | `help​`","lastModifiedDate":"2023-10-11"},{"lineNumber":225,"author":{"gitId":"et-irl"},"content":"**List** | `list​`","lastModifiedDate":"2023-10-11"},{"lineNumber":226,"author":{"gitId":"Choonyan02"},"content":"**Mark Attendance** | `markAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":227,"author":{"gitId":"et-irl"},"content":"**Unmark Attendance** | `unmarkAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-23"},{"lineNumber":228,"author":{"gitId":"et-irl"},"content":"**Distribute Assignments** | `assign n/ASSIGNMENT_NAME m/MAX_SCORE`","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":22,"Choonyan02":21,"Vanessamae23":55,"-":130}},{"path":"docs/team/et-irl.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: et\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: Npc_Track","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Npc_Track is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"### Code Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"- [Link to My Code Contributions on tP Code Dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003det-irl\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"- Added a Comment Field associated with every person.","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"- Renamed the package associated with tags and comments to `fields`, for better code readability and maintainability.","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"- Updated the `add` command to reflect the new command accepting a comment.","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":"- Updated the `edit` command to reflect the new command accepting a comment.","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":"- Added the `assign` command to give all students an assignment.","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":"- Highlighted the MSS and use cases of command commands such as `add` and `list`.","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":"- Brainstormed and came up with user stories and steered the project in a clear direction.","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"- Reviewed and spotted PRs with issues such as misnamed commit messages.","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":"- Ensured that the documentation associated with a PR is updated correctly.","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":"- Brought morale to the team.","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"et-irl":32,"-":12}},{"path":"docs/team/lsyurea.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Siyuan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"### Project: npc_track","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"npc_track is a desktop app for managing student contacts, optimized for use via a Command Line Interface (CLI)","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"### Code contribution","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":"- [Link to my contribution on tp dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dlsyurea\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"- Updated test coverage of all the classes, including attendance taking, add command, delete command, edit command,","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":"find command, list command, mark command such that it goes to 78%.","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"- Making the commands optional, so that the user can choose","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" to use the commands or not.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":"- Group students by classes.","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"- Make commands optional.","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":"- Modify help command to show the relevant commands.","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":"- Good moral support.","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"lsyurea":37,"-":8}},{"path":"docs/team/proto-aiken-13.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"proto-aiken-13"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"proto-aiken-13"},"content":"layout: page","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"proto-aiken-13"},"content":"title: Miguel\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"proto-aiken-13"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"proto-aiken-13"},"content":"### Project: npc_track","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"proto-aiken-13"},"content":"npc_track is a desktop app for managing student contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"proto-aiken-13"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"proto-aiken-13"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"proto-aiken-13"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"proto-aiken-13"},"content":"- **New Feature**","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"proto-aiken-13"},"content":"\t- Added a Ui.","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"proto-aiken-13"},"content":"- **Code contributed**","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"proto-aiken-13"},"content":"\t- Edited MainWindow.fxml","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":"\t- Edited DarkMode.css","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"proto-aiken-13"},"content":"- **Project management**","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"proto-aiken-13"},"content":"\t- Managed release `v1.1` as a practice on Github","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"proto-aiken-13"},"content":"\t- Helped to contribute and conduct v1.2","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"proto-aiken-13"},"content":"\t- Contributed to v1.2b","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"proto-aiken-13"},"content":"- **Enhancements to existing features:**","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"proto-aiken-13"},"content":"\t- Made the Ui mockup","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"proto-aiken-13"},"content":"\t- Generally completed the UI","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"proto-aiken-13"},"content":"-**Documentation:**","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"proto-aiken-13"},"content":"(to be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"proto-aiken-13"},"content":"-**Community**","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"proto-aiken-13"},"content":"(To be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"proto-aiken-13"},"content":"-**Tools**","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"proto-aiken-13"},"content":"(to be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"proto-aiken-13":33}},{"path":"docs/team/vanessamae23.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Vanessa\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"### Project: Npc_Track","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Npc_Track is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"### Code Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"- [Link to My Code Contributions on tP Code Dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dvanessamae23\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"Vanessamae23":27,"-":13}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"edit it if required. The command should have the following format:","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2023-10-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":234,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2023-10-13"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"Vanessamae23"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not","lastModifiedDate":"2023-10-13"},{"lineNumber":298,"author":{"gitId":"Vanessamae23"},"content":"doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-10-13"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":348,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":378,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"Vanessamae23":4,"-":397}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `telegramHandle` field from `Person` class.","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `telegramHandle` field can be done similarly.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"The `telegramHandle` field in `Person` is actually an instance of the `seedu.address.model.person.TelegramHandle` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"1. Safe delete the field `telegramHandle` in `EditPersonDescriptor`.","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"1. Remove the usages of `telegramHandle` and select `Do refactor` when you are done.","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `telegramHandle` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `telegramHandle` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$telegramHandle` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"![$telegramHandle](../images/remove/$telegramHandle.png)","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"private Label telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"\u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `telegramHandle` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" \"telegram\": \"4thstreet\"","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"You can go through each individual `json` file and manually remove the `telegramHandle` field.","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Vanessamae23":14,"-":98}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_DUPLICATE_MARKINGS \u003d \"This week\u0027s attendance has already been marked!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_DUPLICATE_UNMARK \u003d \"This week\u0027s attendance has already been unmarked!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" .append(\"; Telegram Handle: \")","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" .append(person.getTelegramHandle())","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" builder.append(\"; Comments: \");","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" person.getComments().forEach(builder::append);","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":2,"Choonyan02":2,"Vanessamae23":2,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" + \"\\nCompulsory Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" + \"\\nOptional Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_COMMENT + \"COMMENT]...\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" + \"Example: \\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" + \"1. \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" + PREFIX_TELEGRAM_HANDLE + \"johndoeisluna \"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" + PREFIX_COMMENT + \"forgets their homework sometimes\"","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" + \"\\n2. \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":11,"et-irl":2,"Vanessamae23":2,"-":76}},{"path":"src/main/java/seedu/address/logic/commands/AssignmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAX_SCORE;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import java.util.List;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" * Marks the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"public class AssignmentCommand extends Command {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Assignment created successfully!\";","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_FAIL \u003d \"Assignment not created.\";","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" + \": Creates an assignment for all students.\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" + \"[\" + PREFIX_NAME + \"ASSIGNMENT_NAME] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" + \"[\" + PREFIX_MAX_SCORE + \"MAX_SCORE] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" + \"\\nExample: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" + PREFIX_NAME + \"Tutorial1 \" + PREFIX_MAX_SCORE + \"100\";","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" private final Name name;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" private final int maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" * Constructs an AssignmentCommand with the specified name and maximum score.","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" * @param name The name of the assignment. Must not be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" * @param maxScore The maximum possible score for the assignment. Must be greater than 0.","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" * @throws NullPointerException If the provided name is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" * @throws IllegalArgumentException If the provided maxScore is not greater than 0.","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" public AssignmentCommand(Name name, int maxScore) {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" if (maxScore \u003c\u003d 0) {","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" throw new IllegalArgumentException(\"maxScore must be greater than 0\");","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" * Executes the command to create a new assignment for all students in the last shown list.","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" * @param model Model representing the current state of the address book.","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" * @return CommandResult representing the result of the execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" * @throws CommandException If there is an error during command execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" // Loop through the list and update each person\u0027s assignments","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" for (Person studentToEdit : lastShownList) {","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e updatedAssignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" Assignment newAssignment \u003d new Assignment(name, maxScore);","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" updatedAssignments.addAll(studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" updatedAssignments.remove(newAssignment);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" updatedAssignments.add(newAssignment);","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" // Create a new student with the updated assignments","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()),","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), updatedAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" // Set the updated student in the model","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS));","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof AssignmentCommand)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" AssignmentCommand otherAssignmentCommand \u003d (AssignmentCommand) other;","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" return this.name.equals(otherAssignmentCommand.name)","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 this.maxScore \u003d\u003d otherAssignmentCommand.maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"lsyurea":5,"et-irl":101}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Clears the address book. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM HANDLE] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person and telegram handle already exists \"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" + \"in the address book. Either the name or telegram handle already exist\";","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle updatedTelegramHandle \u003d editPersonDescriptor.getTelegramHandle()","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" .orElse(personToEdit.getTelegramHandle());","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"Choonyan02"},"content":" Attendance updatedAttendance \u003d editPersonDescriptor.getAttendance().orElse(personToEdit.getAttendance());","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"et-irl"},"content":" Set\u003cComment\u003e updatedComments \u003d editPersonDescriptor.getComments().orElse(personToEdit.getComments());","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e updatedAssignments \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"et-irl"},"content":" editPersonDescriptor.getAssignments().orElse(personToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" return new Person(updatedName, Optional.of(updatedPhone), Optional.of(updatedEmail),","lastModifiedDate":"2023-10-23"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":" Optional.of(updatedTelegramHandle), Optional.of(updatedAttendance),","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" updatedTags, updatedComments, updatedAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"Choonyan02"},"content":" private Attendance attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"et-irl"},"content":" private Set\u003cComment\u003e comments;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"et-irl"},"content":" private Set\u003cAssignment\u003e assignments;","lastModifiedDate":"2023-10-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" setTelegramHandle(toCopy.telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"Choonyan02"},"content":" setAttendance(toCopy.attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" setComments(toCopy.comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" setAssignments(toCopy.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, telegramHandle, tags, comments);","lastModifiedDate":"2023-10-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"Vanessamae23"},"content":" public void setTelegramHandle(TelegramHandle telegramHandle) {","lastModifiedDate":"2023-10-10"},{"lineNumber":209,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"Vanessamae23"},"content":" public Optional\u003cTelegramHandle\u003e getTelegramHandle() {","lastModifiedDate":"2023-10-10"},{"lineNumber":213,"author":{"gitId":"Vanessamae23"},"content":" return Optional.ofNullable(telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"Choonyan02"},"content":" public void setAttendance(Attendance attendance) {","lastModifiedDate":"2023-10-13"},{"lineNumber":217,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":218,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":220,"author":{"gitId":"Choonyan02"},"content":" public Optional\u003cAttendance\u003e getAttendance() {","lastModifiedDate":"2023-10-13"},{"lineNumber":221,"author":{"gitId":"Choonyan02"},"content":" return Optional.ofNullable(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":242,"author":{"gitId":"et-irl"},"content":" * Sets {@code comments} to this object\u0027s {@code comments}.","lastModifiedDate":"2023-10-10"},{"lineNumber":243,"author":{"gitId":"et-irl"},"content":" * A defensive copy of {@code comments} is used internally.","lastModifiedDate":"2023-10-10"},{"lineNumber":244,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":245,"author":{"gitId":"et-irl"},"content":" public void setComments(Set\u003cComment\u003e comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":246,"author":{"gitId":"et-irl"},"content":" this.comments \u003d (comments !\u003d null) ? new HashSet\u003c\u003e(comments) : null;","lastModifiedDate":"2023-10-10"},{"lineNumber":247,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":248,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":250,"author":{"gitId":"et-irl"},"content":" * Returns an unmodifiable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-23"},{"lineNumber":251,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-23"},{"lineNumber":252,"author":{"gitId":"et-irl"},"content":" * Returns {@code Optional#empty()} if {@code comments} is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":253,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":254,"author":{"gitId":"et-irl"},"content":" public Optional\u003cSet\u003cAssignment\u003e\u003e getAssignments() {","lastModifiedDate":"2023-10-23"},{"lineNumber":255,"author":{"gitId":"et-irl"},"content":" return (assignments !\u003d null) ? Optional.of(Collections.unmodifiableSet(assignments)) : Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":256,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":257,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":258,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":259,"author":{"gitId":"et-irl"},"content":" * Sets {@code assignments} to this object\u0027s {@code assignments}.","lastModifiedDate":"2023-10-23"},{"lineNumber":260,"author":{"gitId":"et-irl"},"content":" * A defensive copy of {@code assignments} is used internally.","lastModifiedDate":"2023-10-23"},{"lineNumber":261,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":262,"author":{"gitId":"et-irl"},"content":" public void setAssignments(Set\u003cAssignment\u003e assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":263,"author":{"gitId":"et-irl"},"content":" this.assignments \u003d (assignments !\u003d null) ? new HashSet\u003c\u003e(assignments) : null;","lastModifiedDate":"2023-10-23"},{"lineNumber":264,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":265,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":266,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":267,"author":{"gitId":"et-irl"},"content":" * Returns an unmodifiable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":268,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":269,"author":{"gitId":"et-irl"},"content":" * Returns {@code Optional#empty()} if {@code comments} is null.","lastModifiedDate":"2023-10-10"},{"lineNumber":270,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":271,"author":{"gitId":"et-irl"},"content":" public Optional\u003cSet\u003cComment\u003e\u003e getComments() {","lastModifiedDate":"2023-10-10"},{"lineNumber":272,"author":{"gitId":"et-irl"},"content":" return (comments !\u003d null) ? Optional.of(Collections.unmodifiableSet(comments)) : Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":273,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":274,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":290,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 Objects.equals(telegramHandle, otherEditPersonDescriptor.telegramHandle)","lastModifiedDate":"2023-10-10"},{"lineNumber":291,"author":{"gitId":"Choonyan02"},"content":" \u0026\u0026 Objects.equals(attendance, otherEditPersonDescriptor.attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":292,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-11"},{"lineNumber":293,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(comments, otherEditPersonDescriptor.comments)","lastModifiedDate":"2023-10-23"},{"lineNumber":294,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(assignments, otherEditPersonDescriptor.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"Vanessamae23"},"content":" .add(\"telegram\", telegramHandle)","lastModifiedDate":"2023-10-11"},{"lineNumber":304,"author":{"gitId":"Choonyan02"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"et-irl"},"content":" .add(\"comments\", comments)","lastModifiedDate":"2023-10-11"},{"lineNumber":307,"author":{"gitId":"et-irl"},"content":" .add(\"assignments\", assignments)","lastModifiedDate":"2023-10-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"lsyurea":4,"et-irl":49,"Choonyan02":12,"Vanessamae23":17,"-":229}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting npc_track as requested ...\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits the program. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"lsyurea":2,"Vanessamae23":1,"-":17}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all persons in the address book. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/MarkAttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * Marks the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" public static final String COMMAND_WORD \u003d \"markAtd\";","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_MARK_SUCCESS \u003d \"Attendance marked successfully!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_MARK_FAIL \u003d \"Attendance failed to mark!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" + \": Marks the attendance of the student identified\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" + \"by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TutorialToMark] \\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 t/1 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" private final Index tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * Constructs a new MarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" * @param index The index of the student to mark attendance for.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" * @param tut The index of the week to mark attendance on.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public MarkAttendanceCommand(Index index, Index tut) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" this.tut \u003d tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" * Executes the MarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * @param model The model that the command operates on.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @throws CommandException If there is an error in executing the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" Person studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()), Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" Attendance studentAtd \u003d studentToEdit.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" if (studentAtd.isMarkedWeek(this.tut.getZeroBased())) {","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(Messages.MESSAGE_DUPLICATE_MARKINGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" studentAtd.markAttendance(this.tut.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" * the attendance is marked.","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * {@code personToEdit}.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" String message \u003d personToEdit.getAttendance().isMarkedWeek(this.tut.getZeroBased())","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" ? ATTENDANCE_MARK_SUCCESS","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" : ATTENDANCE_MARK_FAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof MarkAttendanceCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand otherMarkAttendanceCommand \u003d (MarkAttendanceCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" return index.equals(otherMarkAttendanceCommand.index) \u0026\u0026 tut.equals(otherMarkAttendanceCommand.tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":4,"et-irl":1,"Choonyan02":99}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkAttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * Unmark the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" public static final String COMMAND_WORD \u003d \"unmarkAtd\";","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_UNMARK_SUCCESS \u003d \"Attendance unmarked successfully!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_UNMARK_FAIL \u003d \"Attendance failed to unmark!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" + \": Unmark the attendance of the student identified\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" + \"by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TutorialToUnmark] \\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 t/1 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" private final Index tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * Constructs a new UnMarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" * @param index The index of the student to unmark attendance for.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" * @param tut The index of the week to unmark attendance on.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public UnmarkAttendanceCommand(Index index, Index tut) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" this.tut \u003d tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" * Executes the UnMarkAttendanceCommand to unmark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * @param model The model that the command operates on.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @throws CommandException If there is an error in executing the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" Person studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()), Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" Attendance studentAtd \u003d studentToEdit.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" if (!studentAtd.isMarkedWeek(this.tut.getZeroBased())) {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(Messages.MESSAGE_DUPLICATE_UNMARK);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" studentAtd.unmarkAttendance(this.tut.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * the attendance is unmarked.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" * {@code personToEdit}.","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" String message \u003d personToEdit.getAttendance().isMarkedWeek(this.tut.getZeroBased())","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" ? ATTENDANCE_UNMARK_FAIL","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" : ATTENDANCE_UNMARK_SUCCESS;","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof UnmarkAttendanceCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand otherUnMarkAttendanceCommand \u003d (UnmarkAttendanceCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" return index.equals(otherUnMarkAttendanceCommand.index) \u0026\u0026 tut.equals(otherUnMarkAttendanceCommand.tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":5,"et-irl":1,"Choonyan02":100}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_TAG, PREFIX_COMMENT);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE);","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" // optional fields","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d Phone.DEFAULT_PHONE;","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"lsyurea"},"content":" phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"lsyurea"},"content":" Email email \u003d Email.NULL_EMAIL;","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":" TelegramHandle telegram \u003d TelegramHandle.NULL_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" telegram \u003d ParserUtil.parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" Set\u003cComment\u003e commentList \u003d ParserUtil.parseComments(argMultimap.getAllValues(PREFIX_COMMENT));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e assignmentList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new Person(name, Optional.of(phone), Optional.of(email), Optional.of(telegram),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"lsyurea"},"content":" Optional.of(attendance), tagList, commentList, assignmentList);","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"lsyurea":17,"et-irl":7,"Choonyan02":2,"Vanessamae23":6,"-":52}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" case AssignmentCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" return new AssignmentCommandParser().parse(arguments);","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" case MarkAttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" return new MarkAttendanceParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" case UnmarkAttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" return new UnmarkAttendanceParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":4,"Choonyan02":8,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/AssignmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAX_SCORE;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" * Parses input arguments and creates a new AssignmentCommand object","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"public class AssignmentCommandParser implements Parser\u003cAssignmentCommand\u003e {","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" * Parses the given arguments and constructs an AssignmentCommand object for execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" * @param args A string of arguments representing the assignment command.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" * @return An AssignmentCommand for execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" * @throws ParseException If the user input does not conform to the expected format","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * or if maxScore is not a positive integer.","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public AssignmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAX_SCORE);","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAX_SCORE)","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAX_SCORE);","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" int maxScore \u003d ParserUtil.parseInt(argMultimap.getValue(PREFIX_MAX_SCORE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" if (maxScore \u003c\u003d 0) {","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" return new AssignmentCommand(name, maxScore);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":55}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_COMMENT \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_MAX_SCORE \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_TELEGRAM_HANDLE \u003d new Prefix(\"a/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" public static final Prefix PREFIX_TUTORIAL \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"et-irl":4,"Choonyan02":1,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE, PREFIX_TAG, PREFIX_COMMENT);","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE);","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" editPersonDescriptor.setTelegramHandle(","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" ParserUtil.parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get()));","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" parseCommentsForEdit(argMultimap.getAllValues(PREFIX_COMMENT)).ifPresent(editPersonDescriptor::setComments);","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" * Parses {@code Collection\u003cString\u003e comments} into a {@code Set\u003cComment\u003e} if {@code comments} is non-empty.","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" * If {@code comments} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" * {@code Set\u003cComment\u003e} containing zero comments.","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" private Optional\u003cSet\u003cComment\u003e\u003e parseCommentsForEdit(Collection\u003cString\u003e comments) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" assert comments !\u003d null;","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" if (comments.isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" Collection\u003cString\u003e commentSet \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" comments.size() \u003d\u003d 1 \u0026\u0026 comments.contains(\"\") ? Collections.emptySet() : comments;","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" return Optional.of(ParserUtil.parseComments(commentSet));","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"et-irl":20,"Vanessamae23":7,"-":79}},{"path":"src/main/java/seedu/address/logic/parser/MarkAttendanceParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" * Parses input arguments and creates a new {@code MarkAttendanceCommand} object","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceParser implements Parser\u003cMarkAttendanceCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" * Parses the given {@code String} of arguments in the context of the {@code MarkAttendanceCommand}","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" * and returns a {@code MarkAttendanceCommand} object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public MarkAttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" int tutorial \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" if (argMultimap.getValue(PREFIX_TUTORIAL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" tutorial \u003d ParserUtil.parseTutorial(argMultimap.getValue(PREFIX_TUTORIAL).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" if (!(tutorial \u003e\u003d 1 \u0026\u0026 tutorial \u003c\u003d 12)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" return new MarkAttendanceCommand(index, Index.fromOneBased(tutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":45}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" * Parses a {@code tutorial} into an {@code int} and returns it. Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial String value of week","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" * @return int value of week if valid","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the given {@code week} is invalid","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" public static int parseTutorial(String tutorial) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" String trimmedTutorial \u003d tutorial.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" if (!Attendance.isValidTutorial(trimmedTutorial)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" return Attendance.convertToIntegerWeek(trimmedTutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" * Parses the specified string into an integer value, removing leading and trailing whitespaces.","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" * @param number A string representing an integer. Must not be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" * @return The parsed integer value.","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" * @throws ParseException If the given {@code number} is not a valid integer format.","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" public static int parseInt(String number) throws ParseException {","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" requireNonNull(number);","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" String trimmedNumber \u003d number.trim();","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" return Integer.parseInt(trimmedNumber);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" throw new ParseException(\"Invalid number format.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" public static TelegramHandle parseTelegramHandle(String telegramHandle) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" requireNonNull(telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" String trimmedTelegramHandle \u003d telegramHandle.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegramHandle)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" return new TelegramHandle(trimmedTelegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"et-irl"},"content":" * Parses a {@code String tag} into a {@code Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"et-irl"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"et-irl"},"content":" * @throws ParseException if the given {@code comment} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"et-irl"},"content":" public static Comment parseComment(String comment) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"et-irl"},"content":" requireNonNull(comment);","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"et-irl"},"content":" String trimmedComment \u003d comment.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"et-irl"},"content":" if (!Comment.isValidCommentName(trimmedComment)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":156,"author":{"gitId":"et-irl"},"content":" throw new ParseException(Comment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"et-irl"},"content":" return new Comment(trimmedComment);","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" * Parses {@code Collection\u003cString\u003e comments} into a {@code Set\u003cComment\u003e}.","lastModifiedDate":"2023-10-10"},{"lineNumber":175,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"et-irl"},"content":" public static Set\u003cComment\u003e parseComments(Collection\u003cString\u003e comments) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":177,"author":{"gitId":"et-irl"},"content":" requireNonNull(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":178,"author":{"gitId":"et-irl"},"content":" final Set\u003cComment\u003e commentSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":179,"author":{"gitId":"et-irl"},"content":" for (String commentName : comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":180,"author":{"gitId":"et-irl"},"content":" commentSet.add(parseComment(commentName));","lastModifiedDate":"2023-10-10"},{"lineNumber":181,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":182,"author":{"gitId":"et-irl"},"content":" return commentSet;","lastModifiedDate":"2023-10-10"},{"lineNumber":183,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"et-irl":46,"Choonyan02":16,"Vanessamae23":7,"-":115}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkAttendanceParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" * Parses input arguments and creates a new {@code UnMarkAttendanceCommand} object","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceParser implements Parser\u003cUnmarkAttendanceCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" * Parses the given {@code String} of arguments in the context of the {@code UnMarkAttendanceCommand}","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" * and returns a {@code UnMarkAttendanceCommand} object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public UnmarkAttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" if (argMultimap.getValue(PREFIX_TUTORIAL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" week \u003d ParserUtil.parseTutorial(argMultimap.getValue(PREFIX_TUTORIAL).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" if (week \u003d\u003d 0) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" return new UnmarkAttendanceCommand(index, Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":45}},{"path":"src/main/java/seedu/address/model/fields/Comment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a Comment in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidCommentName(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"public class Comment {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Comments can take any values, and it should not be blank\";","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" public final String commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * @param commentName A valid tag name.","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public Comment(String commentName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" requireNonNull(commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" checkArgument(isValidCommentName(commentName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" this.commentName \u003d commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" public static boolean isValidCommentName(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof Comment)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" Comment otherComment \u003d (Comment) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" return commentName.equals(otherComment.commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" return commentName.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" return \u0027[\u0027 + commentName + \u0027]\u0027;","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"et-irl":67}},{"path":"src/main/java/seedu/address/model/fields/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":1,"-":61}},{"path":"src/main/java/seedu/address/model/person/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a Person\u0027s assignment in the assignment book.","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAssignment(String)}","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"public class Assignment {","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":" \"Assignments should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" /*","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" public final Name name;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" private int score;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" private int maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" * Constructs an assignment with the given name and maximum score.","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" * @param name The name of the assignment. Must not be null and must satisfy the constraints.","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" * @param maxScore The maximum possible score for the assignment.","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" * @throws NullPointerException If the provided name is null.","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" * @throws IllegalArgumentException If the provided name does not satisfy the constraints.","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" public Assignment(Name name, int maxScore) {","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" checkArgument(isValidAssignment(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" public Assignment(Name name) {","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" this(name, 100);","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" public static boolean isValidAssignment(Name test) {","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" return test.toString().matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" public int getScore() {","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" return score;","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" public int getMaxScore() {","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" return maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" public void setScore(int score) {","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" this.score \u003d score;","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" public void setMaxScore(int maxScore) {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" public String toString() {","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" return String.format(\"%s: %d/%d\", name, score, maxScore);","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof Assignment)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" Assignment otherAssignment \u003d (Assignment) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":" return name.equals(otherAssignment.name);","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" return name.hashCode();","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"et-irl":93}},{"path":"src/main/java/seedu/address/model/person/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":" * The `Attendance` class represents a student\u0027s attendance record for a 12-week period.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":" * It provides methods for managing and querying attendance information.","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"public class Attendance {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":" public static final String TUTORIAL_ERROR_MSG \u003d \"Tutorial number is out of range, should be integer between 1-12\";","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":" public static final String ORIGINAL_ATD \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":" private int totalTut;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":" private final boolean[] attendanceList \u003d new boolean[12];","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" * Constructs an `Attendance` object from a comma-separated attendance string.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * @param atd A comma-separated string representing attendance for 1-12 weeks (e.g., \"0,1,0,1,0,1,0,1,0,1,0,1\").","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" public Attendance(String atd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" String[] atdArr \u003d atd.split(\",\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" this.totalTut \u003d atdArr.length;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" for (int i \u003d 0; i \u003c totalTut; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" if (atdArr[i].equals(\"1\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[i] \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" * Checks if a given week is a valid tutorial number (between 1 and 12).","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial A string representing a tutorial number.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * @return `true` if the week is valid; otherwise, `false`.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public static boolean isValidTutorial(String tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" if (!tutorial.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" int intTutorial \u003d Integer.parseInt(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" if (intTutorial \u003c\u003d 0 || intTutorial \u003e 12) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" System.out.println(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * Returns the number of weeks present based on the attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @return The count of weeks marked as present.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" public int getWeeksPresent() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" int count \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" for (int i \u003d 0; i \u003c 12; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" if (this.attendanceList[i]) {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" count++;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" return count;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" * Returns the total number of tutorial weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" * @return the total number of tutorial weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" public int getTotalWeeks() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" return this.totalTut;","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" * Marks a specific tutorial as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to mark as attended (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" public void markAttendance(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[tutorial] \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * Unmarks a specific tutorial as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to unmark (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" public void unmarkAttendance(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[tutorial] \u003d false;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" * Checks if a specific tutorial is marked as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to check (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" * @return `true` if the week is marked as attended; otherwise, `false`.","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":" public boolean isMarkedWeek(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":" return this.attendanceList[tutorial];","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" * Converts a tutorial represented as a string to an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial A string representing a week number.","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" * @return The week number as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":" public static int convertToIntegerWeek(String tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":" return Integer.parseInt(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"Choonyan02"},"content":" Attendance otherAttendance \u003d (Attendance) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"Choonyan02"},"content":" return toString().equals(otherAttendance.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Choonyan02"},"content":" * Converts attendanceList to a string.","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"Choonyan02"},"content":" * @return string version of attendancelist","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Choonyan02"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"Choonyan02"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"Choonyan02"},"content":" for (boolean atd : this.attendanceList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":" if (atd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":" s +\u003d \"1,\";","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Choonyan02"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" s +\u003d \"0,\";","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"Choonyan02"},"content":" return s.substring(0, 22);","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":140}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final Email NULL_EMAIL \u003d new Email(\"default@domain.com\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":3,"-":79}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a generic name, of a person or an address in the address book.","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":2,"-":65}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cEmail\u003e email;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cTelegramHandle\u003e telegramHandle;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cAttendance\u003e attendance;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" private final Set\u003cComment\u003e comments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" private final Set\u003cAssignment\u003e assignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" * Only name field must be present and not null.","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" public Person(Name name) {","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" requireAllNonNull(name);","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" this.phone \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" this.email \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" this.telegramHandle \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" this.attendance \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":" public Person(Name name, Optional\u003cPhone\u003e phone, Optional\u003cEmail\u003e email, Optional\u003cTelegramHandle\u003e telegramHandle,","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" Optional\u003cAttendance\u003e attendance,","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" Set\u003cTag\u003e tags, Set\u003cComment\u003e comments, Set\u003cAssignment\u003e assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" requireAllNonNull(name, phone, email, telegramHandle, tags);","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" this.comments.addAll(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" this.assignments.addAll(assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" return phone.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"lsyurea"},"content":" return email.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" public TelegramHandle getTelegramHandle() {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lsyurea"},"content":" return telegramHandle.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" * Returns an immutable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" public Set\u003cComment\u003e getComments() {","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" return Collections.unmodifiableSet(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" * Returns an immutable assignment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" public Set\u003cAssignment\u003e getAssignments() {","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" return Collections.unmodifiableSet(assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" * Gets the student\u0027s attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":" * @return The `Attendance` object representing the student\u0027s attendance for a specific period.","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Choonyan02"},"content":" public Attendance getAttendance() {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" return this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Choonyan02"},"content":" * Retrieves the number of weeks the student was present based on their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Choonyan02"},"content":" * @return The count of weeks for which the student was marked as present.","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Choonyan02"},"content":" public int getWeeksPresent() {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" Attendance stdatd \u003d this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" if (stdatd !\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" return stdatd.getWeeksPresent();","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" return 0;","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Choonyan02"},"content":" * Retrieves the total number of weeks in the attendance record period.","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"Choonyan02"},"content":" * @return The total number of weeks in the period, typically 12 weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Choonyan02"},"content":" public int getTotalWeeks() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" Attendance stdatd \u003d this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" if (stdatd !\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" return stdatd.getTotalWeeks();","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"lsyurea"},"content":" return 0;","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 otherPerson.getTelegramHandle().equals(getTelegramHandle());","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 telegramHandle.equals(otherPerson.telegramHandle)","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"Choonyan02"},"content":" \u0026\u0026 attendance.equals(otherPerson.attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 comments.equals(otherPerson.comments)","lastModifiedDate":"2023-10-23"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 assignments.equals(otherPerson.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"et-irl"},"content":" return Objects.hash(name, phone, email, telegramHandle, attendance, tags, comments, assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"lsyurea"},"content":" .add(\"phone\", phone.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"lsyurea"},"content":" .add(\"email\", email.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"lsyurea"},"content":" .add(\"telegram\", telegramHandle.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"lsyurea"},"content":" .add(\"attendance\", attendance.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"et-irl"},"content":" .add(\"comments\", comments)","lastModifiedDate":"2023-10-10"},{"lineNumber":193,"author":{"gitId":"et-irl"},"content":" .add(\"assignments\", assignments)","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":36,"et-irl":28,"Choonyan02":26,"Vanessamae23":6,"-":101}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final Phone DEFAULT_PHONE \u003d new Phone(\"91234567\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":60}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegramHandle(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TelegramHandle {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final TelegramHandle NULL_TELEGRAM_HANDLE \u003d new TelegramHandle(\"defaultHandle\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram Handle must \"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" + \"use a-z, 0-9 and underscores. Minimum length is 5 characters\";","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" * The telegram handle uses a-z, 0-9 and underscores.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" * Minimum length is 5 characters.","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_]{5,32}$\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" public TelegramHandle(String address) {","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" checkArgument(isValidTelegramHandle(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" if (!(other instanceof TelegramHandle)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle otherTelegramHandle \u003d (TelegramHandle) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" return value.equals(otherTelegramHandle.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"Vanessamae23":13,"-":53}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Alex Yeoh\"), Optional.of(new Phone(\"87438807\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"alexTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Is always cheerful\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Bernice Yu\"), Optional.of(new Phone(\"99272758\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"berniceyu@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"berniceTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Loves candy\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), Optional.of(new Phone(\"93210283\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"charlotte@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"charlotteTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Never comes on time\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"David Li\"), Optional.of(new Phone(\"91031282\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"lidavid@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"davidTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Needs constant attention\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Irfan Ibrahim\"), Optional.of(new Phone(\"92492021\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"irfan@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"irfanTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Pretty average\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Roy Balakrishnan\"), Optional.of(new Phone(\"92624417\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"royb@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"royTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Happy-go-lucky attitude\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" * Returns a comment set containing the list of strings given.","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" public static Set\u003cComment\u003e getCommentSet(String... strings) {","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" .map(Comment::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" * Returns a assignment set containing the list of strings given.","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" public static Set\u003cAssignment\u003e getAssignmentSet(String... strings) {","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" .map(Name::new)","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":" .map(Assignment::new)","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"lsyurea":27,"et-irl":39,"Choonyan02":1,"Vanessamae23":2,"-":40}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAssignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":" * Jackson-friendly version of {@link Assignment}.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"class JsonAdaptedAssignment {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" private final Name assignmentName;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code JsonAdaptedAssignment} with the given {@code assignmentName}.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" @JsonCreator","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedAssignment(String assignmentName) {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" this.assignmentName \u003d new Name(assignmentName);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" * Converts a given {@code Assignment} into this class for Jackson use.","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedAssignment(Assignment source) {","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" assignmentName \u003d source.name;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" @JsonValue","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" public String getAssignmentName() {","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" return assignmentName.toString();","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Assignment} object.","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" public Assignment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" if (!Assignment.isValidAssignment(assignmentName)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" throw new IllegalValueException(Assignment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" return new Assignment(assignmentName);","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":49}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedComment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":" * Jackson-friendly version of {@link Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"class JsonAdaptedComment {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" private final String commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code JsonAdaptedComment} with the given {@code commentName}.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" @JsonCreator","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedComment(String commentName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" this.commentName \u003d commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * Converts a given {@code Comment} into this class for Jackson use.","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedComment(Comment source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" commentName \u003d source.commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" @JsonValue","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" public String getCommentName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" return commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Comment} object.","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" public Comment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" if (!Comment.isValidCommentName(commentName)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" throw new IllegalValueException(Comment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" return new Comment(commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"et-irl":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" private final String telegram;","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" private final String attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" private final List\u003cJsonAdaptedComment\u003e comments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" private final List\u003cJsonAdaptedAssignment\u003e assignments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" @JsonProperty(\"attendance\") String attendance, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" telegram \u003d source.getTelegramHandle().value;","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d source.getAttendance().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" comments.addAll(source.getComments().stream()","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" .map(JsonAdaptedComment::new)","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":" assignments.addAll(source.getAssignments().stream()","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" .map(JsonAdaptedAssignment::new)","lastModifiedDate":"2023-10-24"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":" final List\u003cComment\u003e personComments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" for (JsonAdaptedComment comment : comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" personComments.add(comment.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" final List\u003cAssignment\u003e personAssignments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" for (JsonAdaptedAssignment assignment : assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" personAssignments.add(assignment.toModelType());","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle.class.getSimpleName()));","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" if (!TelegramHandle.isValidTelegramHandle(telegram)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalValueException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" final TelegramHandle modelTelegramHandle \u003d new TelegramHandle(telegram);","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":" if (attendance \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Choonyan02"},"content":" Attendance.class.getSimpleName()));","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":" final Attendance modelAttendance \u003d new Attendance(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"et-irl"},"content":" final Set\u003cComment\u003e modelComments \u003d new HashSet\u003c\u003e(personComments);","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"et-irl"},"content":" final Set\u003cAssignment\u003e modelAssignments \u003d new HashSet\u003c\u003e(personAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"lsyurea"},"content":" return new Person(modelName, Optional.of(modelPhone), Optional.of(modelEmail),","lastModifiedDate":"2023-10-23"},{"lineNumber":142,"author":{"gitId":"lsyurea"},"content":" Optional.of(modelTelegramHandle), Optional.of(modelAttendance),","lastModifiedDate":"2023-10-23"},{"lineNumber":143,"author":{"gitId":"et-irl"},"content":" modelTags, modelComments, modelAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":144,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"lsyurea":4,"et-irl":24,"Choonyan02":10,"Vanessamae23":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new Tag(tagName);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"et-irl":1,"-":47}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t12-1.github.io/tp/\";","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" \"Here are the list of commands:\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" + \"a. ADD COMMAND\\n\\n\" + AddCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" + \"b. CLEAR COMMAND\\n\\n\" + ClearCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" + \"c. DELETE COMMAND\\n\\n\" + DeleteCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" + \"d. EDIT COMMAND\\n\\n\" + EditCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" + \"e. EXIT COMMAND\\n\\n\" + ExitCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" + \"f. FIND COMMAND\\n\\n\" + FindCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" + \"g. HELP COMMAND\\n\\n\" + HelpCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" + \"h. LIST COMMAND\\n\\n\" + ListCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" + \"i. MARK ATTENDANCE COMMAND\\n\\n\" + MarkAttendanceCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" + \"j. UNMARK ATTENDANCE COMMAND\\n\\n\" + UnmarkAttendanceCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" + \"k. ASSIGN COMMAND\\n\\n\" + AssignmentCommand.MESSAGE_USAGE + \"\\n\\n\";","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" + SHOWING_HELP_MESSAGE;","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"lsyurea":27,"-":99}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.awt.Desktop;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"import java.net.URISyntaxException;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Hyperlink;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" private Label attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" @FXML","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" private Label telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" private Hyperlink telegramLink;","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" private FlowPane comments;","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" private FlowPane assignments;","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" // Initialize the button visibility based on the presence of the Telegram handle","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" if (person.getTelegramHandle() !\u003d null) {","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" telegramLink.setVisible(true);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" telegramLink.setVisible(false);","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" attendance.setText(String.format(\"Attendance: %d/%d\",","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" this.person.getWeeksPresent(), this.person.getTotalWeeks()));","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" phone.setText(\"Phone: \" + person.getPhone().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle.setText(\"Telegram Handle: \" + person.getTelegramHandle().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" email.setText(\"Email: \" + person.getEmail().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":80,"author":{"gitId":"proto-aiken-13"},"content":" person.getComments().stream()","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"proto-aiken-13"},"content":" .sorted(Comparator.comparing(comment -\u003e comment.commentName))","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" .forEach(comment -\u003e comments.getChildren().add(new Label(comment.commentName)));","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" person.getAssignments().stream()","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" .sorted(Comparator.comparing(assignment -\u003e assignment.toString()))","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":" .forEach(assignment -\u003e assignments.getChildren().add(new Label(assignment.toString())));","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" * Opens a link to the telegram handle of {@code Person}.","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" public void openLink(ActionEvent event) {","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" String telegramHandle \u003d person.getTelegramHandle().value;","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" if (telegramHandle !\u003d null \u0026\u0026 !telegramHandle.isEmpty()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" open(\"https://t.me/\" + telegramHandle);","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" // Handle the case where there is no telegram handle","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" // You can show an error message or take any other action as needed","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"No Telegram handle available.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" * Opens a link using the default web browser on the user\u0027s system.","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":" * @param url The URL to be opened in the web browser.","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"et-irl"},"content":" private void open(String url) {","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"et-irl"},"content":" String os \u003d System.getProperty(\"os.name\").toLowerCase();","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"et-irl"},"content":" try {","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"et-irl"},"content":" if (os.contains(\"win\") || os.contains(\"mac\")) {","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"et-irl"},"content":" Desktop.getDesktop().browse(new URI(url));","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"et-irl"},"content":" } else if (os.contains(\"nix\") || os.contains(\"nux\") || os.contains(\"linux\")) {","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"et-irl"},"content":" Runtime.getRuntime().exec(\"xdg-open \" + url);","lastModifiedDate":"2023-10-24"},{"lineNumber":115,"author":{"gitId":"et-irl"},"content":" } else {","lastModifiedDate":"2023-10-24"},{"lineNumber":116,"author":{"gitId":"et-irl"},"content":" // We do not support other operating systems.","lastModifiedDate":"2023-10-24"},{"lineNumber":117,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":118,"author":{"gitId":"et-irl"},"content":" } catch (IOException | URISyntaxException e) {","lastModifiedDate":"2023-10-24"},{"lineNumber":119,"author":{"gitId":"et-irl"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-24"},{"lineNumber":120,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"et-irl":29,"proto-aiken-13":2,"Choonyan02":4,"Vanessamae23":31,"-":56}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0; /* Used in the default.html file */","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":" background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"proto-aiken-13"},"content":" -fx-control-inner-background: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":98,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":138,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 10%);","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: yellow;","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 25%);","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 50%);","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"proto-aiken-13"},"content":".title-header {","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"proto-aiken-13"},"content":" -fx-font-family: npc_font; /* Use the custom font */","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"proto-aiken-13"},"content":" -fx-font-size: 100px;","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"proto-aiken-13"},"content":" -fx-alignment: center;","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-alignment: center;","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-radius: derive;","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"proto-aiken-13"},"content":".console-prompt {","lastModifiedDate":"2023-10-20"},{"lineNumber":334,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #e6e6e6;","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":336,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"proto-aiken-13"},"content":"#resultDisplay {","lastModifiedDate":"2023-10-20"},{"lineNumber":353,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"proto-aiken-13"},"content":".content {","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":359,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":362,"author":{"gitId":"et-irl"},"content":"#tags, #comments, #assignments {","lastModifiedDate":"2023-10-24"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #3e7b91; /* Blue for tags */","lastModifiedDate":"2023-10-24"},{"lineNumber":370,"author":{"gitId":"et-irl"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-24"},{"lineNumber":371,"author":{"gitId":"et-irl"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":372,"author":{"gitId":"et-irl"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":373,"author":{"gitId":"et-irl"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-24"},{"lineNumber":374,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-24"},{"lineNumber":375,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":376,"author":{"gitId":"et-irl"},"content":"#comments .label {","lastModifiedDate":"2023-10-24"},{"lineNumber":377,"author":{"gitId":"et-irl"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-24"},{"lineNumber":378,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #228B22; /* Dark Green for comments */","lastModifiedDate":"2023-10-24"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-24"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-24"},{"lineNumber":384,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":385,"author":{"gitId":"et-irl"},"content":"/* Styles for #assignments .label */","lastModifiedDate":"2023-10-24"},{"lineNumber":386,"author":{"gitId":"et-irl"},"content":"#assignments .label {","lastModifiedDate":"2023-10-24"},{"lineNumber":387,"author":{"gitId":"et-irl"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-24"},{"lineNumber":388,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #FFA500; /* Dark Orange for assignments */","lastModifiedDate":"2023-10-24"},{"lineNumber":389,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":390,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":394,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":395,"author":{"gitId":"proto-aiken-13"},"content":"@font-face {","lastModifiedDate":"2023-10-20"},{"lineNumber":396,"author":{"gitId":"proto-aiken-13"},"content":" font-family: npc_font;","lastModifiedDate":"2023-10-20"},{"lineNumber":397,"author":{"gitId":"proto-aiken-13"},"content":" src: url(\"./fonts/coolvetica rg.ttf\");","lastModifiedDate":"2023-10-20"},{"lineNumber":398,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":399,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"et-irl":16,"proto-aiken-13":62,"-":321}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.control.TitledPane?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":" title\u003d\"npc_track\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"proto-aiken-13"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: #1194f0;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"proto-aiken-13"},"content":" \u003cLabel text\u003d\"npc_track\" styleClass\u003d\"title-header\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"proto-aiken-13"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"proto-aiken-13"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"proto-aiken-13"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: white;\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"proto-aiken-13"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\" style\u003d\"-fx-background-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"proto-aiken-13"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"proto-aiken-13"},"content":" style\u003d\"-fx-background-color: #4d4e4f;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"proto-aiken-13"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"proto-aiken-13":18,"-":46}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Hyperlink?\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" \u003cFlowPane fx:id\u003d\"assignments\" /\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" \u003cFlowPane fx:id\u003d\"comments\" /\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" \u003cLabel fx:id\u003d\"attendance\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$attendance\" /\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" \u003cHyperlink fx:id\u003d\"telegramLink\" text\u003d\"Contact\" onAction\u003d\"#openLink\" userData\u003d\"\\$telegramLink\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"et-irl":2,"Choonyan02":1,"Vanessamae23":11,"-":35}},{"path":"src/test/java/seedu/address/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2018-04-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(new AppParameters()));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(appParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(otherAppParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"lsyurea"},"content":" AppParameters current \u003d AppParameters.parse(parametersStub);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"lsyurea"},"content":" assertEquals(expected.hashCode(), current.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"lsyurea":8,"-":89}},{"path":"src/test/java/seedu/address/MainAppTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"public class MainAppTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":" public void constructor_mainApp_initialised() {","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":" MainApp main \u003d new MainApp();","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":" assert main !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":11}},{"path":"src/test/java/seedu/address/MainTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"public class MainTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":" public void constructor_mainTest_initialised() {","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":" Main main \u003d new Main();","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":" assert main !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":11}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Vanessamae23":2,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"AmyTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"BobTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_ALICE \u003d \"aliceTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public static final String VALID_ATTENDANCE_AMY \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" public static final String VALID_ATTENDANCE_BOB \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" // empty string not allowed for addresses","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Choonyan02":2,"Vanessamae23":10,"-":120}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Choonyan02":1,"-":184}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" + editPersonDescriptor.getTelegramHandle().orElse(null) + \", attendance\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" + editPersonDescriptor.getAttendance().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", comments\u003d\"","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getComments().orElse(null) + \", assignments\u003d\"","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getAssignments().orElse(null)","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" + \"}\";","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"et-irl":4,"Choonyan02":1,"Vanessamae23":4,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/MarkAttendanceCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" private Model model;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" private MarkAttendanceCommand markAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" @BeforeEach","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public void setUp() {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NullPointerException.class, () -\u003e new MarkAttendanceCommand(null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" public void execute_validIndexAndTutorial_markAttendanceSuccessful() {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" // Create a sample person with no attendance marked","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to the sample person","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand \u003d new MarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" // Execute the command","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand.execute(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" } catch (CommandException e) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" // Check if the person\u0027s attendance has been marked for week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" assertTrue(person.getAttendance().isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" // Index 1 is invalid in an empty model","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand \u003d new MarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" // Execute the command and expect a CommandException","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" assertThrows(CommandException.class, () -\u003e markAttendanceCommand.execute(model));","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameCommand_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" // Create a MarkAttendanceCommand with the same index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command1 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command2 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" // They should be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" // Create two different MarkAttendanceCommands","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command1 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command2 \u003d new MarkAttendanceCommand(Index.fromOneBased(2), Index.fromOneBased(2));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" // They should not be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":94}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkAttendanceCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private Model model;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" private UnmarkAttendanceCommand unmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" @BeforeEach","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public void setUp() {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NullPointerException.class, () -\u003e new UnmarkAttendanceCommand(null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" public void execute_validIndexAndTutorial_markAttendanceSuccessful() {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" // Create a sample person with no attendance marked","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to the sample person","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand \u003d new UnmarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Execute the command","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand.execute(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" } catch (CommandException e) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" // Check if the person\u0027s attendance has been unmarked for week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" assertFalse(person.getAttendance().isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" // Index 1 is invalid in an empty model","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand \u003d new UnmarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" // Execute the command and expect a CommandException","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertThrows(CommandException.class, () -\u003e unmarkAttendanceCommand.execute(model));","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameCommand_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" // Create a MarkAttendanceCommand with the same index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command1 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command2 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" // They should be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" // Create two different MarkAttendanceCommands","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command1 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command2 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(2), Index.fromOneBased(2));","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" // They should not be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":93}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME,","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY,","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-11"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-11"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":30,"-":155}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" public void parseCommand_markAttendance() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command \u003d (MarkAttendanceCommand) parser","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" .parseCommand(MarkAttendanceCommand.COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" t/1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" assertEquals(new MarkAttendanceCommand(INDEX_FIRST_PERSON, INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" public void parseCommand_unmarkAttendance() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command \u003d (UnmarkAttendanceCommand) parser","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" .parseCommand(UnmarkAttendanceCommand.COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" t/1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertEquals(new UnmarkAttendanceCommand(INDEX_FIRST_PERSON, INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Choonyan02":18,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, TelegramHandle.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TELEGRAM_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-11"},{"lineNumber":184,"author":{"gitId":"Vanessamae23"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-11"},{"lineNumber":185,"author":{"gitId":"Vanessamae23"},"content":" + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"Vanessamae23"},"content":" + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":19,"-":188}},{"path":"src/test/java/seedu/address/logic/parser/MarkAttendanceParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkAttendanceCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private MarkAttendanceParser parser \u003d new MarkAttendanceParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" // Test case 1: Missing index (preamble)","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" String userInput1 \u003d \"t/1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput1, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" // Test case 2: Missing week (tutorial)","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" String userInput2 \u003d \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput2, Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" // Missing both index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Invalid index (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"a t/1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidTutorial_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/a\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (0)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/0\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (greater than 12)","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/13\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" // Valid input","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"1 t/1\", new MarkAttendanceCommand(Index.fromOneBased(1),","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" // Valid input with different indices and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"2 t/5\", new MarkAttendanceCommand(Index.fromOneBased(2),","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(5)));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":62}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private static final String INVALID_TELEGRAM \u003d \" ---\";","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" private static final String INVALID_TUTORIAL \u003d \"invalid\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" private static final String VALID_TELEGRAM \u003d \"aliceTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_validTutorial_returnsInteger() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" // Valid tutorial input","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" String validTutorial \u003d \"3\";","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" int expectedTutorial \u003d 3;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" assertEquals(expectedTutorial, ParserUtil.parseTutorial(validTutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_validTutorialWithWhitespace_returnsInteger() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" // Valid tutorial input with leading/trailing whitespace","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" String validTutorial \u003d \" 8 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" int expectedTutorial \u003d 8;","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" assertEquals(expectedTutorial, ParserUtil.parseTutorial(validTutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_invalidTutorial_throwsParseException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial input (non-numeric)","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTutorial(INVALID_TUTORIAL));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" public void parsetTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegramHandle((String) null));","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegramHandle(INVALID_TELEGRAM));","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(VALID_TELEGRAM));","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2023-10-11"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(addressWithWhitespace));","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"et-irl":1,"Choonyan02":23,"Vanessamae23":14,"-":181}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkAttendanceParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkAttendanceCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private UnmarkAttendanceParser parser \u003d new UnmarkAttendanceParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" // Test case 1: Missing index (preamble)","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" String userInput1 \u003d \"t/1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput1, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" // Test case 2: Missing week (tutorial)","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" String userInput2 \u003d \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput2, Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" // Missing both index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Invalid index (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"a t/1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidTutorial_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/a\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (0)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/0\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (greater than 12)","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/13\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" // Valid input","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"1 t/1\", new UnmarkAttendanceCommand(Index.fromOneBased(1),","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" // Valid input with different indices and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"2 t/5\", new UnmarkAttendanceCommand(Index.fromOneBased(2),","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(5)));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":62}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lsyurea"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook1 \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lsyurea"},"content":" assertTrue(addressBook.equals(addressBook1));","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodSameObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" assertTrue(addressBook.equals(addressBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodDifferentObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"lsyurea"},"content":" assertFalse(addressBook.equals(new Object()));","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook1 \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" assertEquals(addressBook.hashCode(), addressBook1.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"lsyurea":25,"Vanessamae23":3,"-":105}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" public void equalsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" public void equalsDifferentObjectTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" userPrefs.equals(new Object());","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" userPrefs.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"lsyurea":17,"-":21}},{"path":"src/test/java/seedu/address/model/fields/CommentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"public class CommentTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e new Comment(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":" public void constructor_invalidCommentName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" String invalidCommentName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Comment(invalidCommentName));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" public void isValidCommentName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" // null comment name","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e Comment.isValidCommentName(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" assertTrue(comment.equals(comment));","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" Comment commentCopy \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" assertTrue(comment.equals(commentCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" // different comment -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" Comment differentComment \u003d new Comment(\"different\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(differentComment));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.hashCode(), comment.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lsyurea"},"content":" public void toStringTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.toString(), \"[test]\");","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":60}},{"path":"src/test/java/seedu/address/model/person/AttendanceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"public class AttendanceTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":" public void constructor_validAttendanceString_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(\"0,1,0,1,0,1,0,1,0,1,0,1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" assertEquals(12, attendance.getTotalWeeks());","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" assertEquals(6, attendance.getWeeksPresent());","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" public void isValidWeek_validWeekNumber_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" assertTrue(Attendance.isValidTutorial(\"1\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" assertTrue(Attendance.isValidTutorial(\"12\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" public void isValidWeek_invalidWeekNumber_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"0\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"13\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"invalid\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" public void markAttendance_validWeek_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" attendance.markAttendance(1);","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" public void unmarkAttendance_validWeek_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" attendance.unmarkAttendance(1);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" public void isMarkedWeek_markedWeek_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(\"1,0,0,0,0,0,0,0,0,0,0,0\");","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" public void isMarkedWeek_unmarkedWeek_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" public void convertToIntegerWeek_validWeekString_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" int week \u003d Attendance.convertToIntegerWeek(\"5\");","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" assertEquals(5, week);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" public void convertToIntegerWeek_invalidWeekString_throwsException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NumberFormatException.class, () -\u003e Attendance.convertToIntegerWeek(\"invalid\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.equals(attendance));","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameValues_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance1 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance2 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance1.equals(attendance2));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentValues_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance1 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance2 \u003d new Attendance(\"1,0,0,0,0,0,0,0,0,0,0,0\");","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance1.equals(attendance2));","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":" public void equals_differentTypes_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" assertFalse(attendance.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"lsyurea"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"lsyurea"},"content":" assertEquals(attendance.hashCode(), attendance.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":11,"Choonyan02":87}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" assertTrue(email.hashCode() \u003d\u003d email.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":6,"-":88}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" // Keywords match phone, email and telegram, but does not match name","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"alice@email.com\").withTelegram(\"aliceTelegram\").build()));","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Vanessamae23":2,"-":83}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" assertTrue(name.hashCode() \u003d\u003d name.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":6,"-":60}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" // same name and telegram, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", telegram\u003d\" + ALICE.getTelegramHandle()","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" + \", attendance\u003d\" + ALICE.getAttendance() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" + \", comments\u003d\" + ALICE.getComments()","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" + \", assignments\u003d\" + ALICE.getAssignments()","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" + \"}\";","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.hashCode(), person.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lsyurea"},"content":" public void getAttendanceTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getAttendance(), ALICE.getAttendance());","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" public void getCommentsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getComments(), ALICE.getComments());","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"lsyurea"},"content":" public void getTagsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTags(), ALICE.getTags());","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" public void getNameTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getName(), ALICE.getName());","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"lsyurea"},"content":" public void getPhoneTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getPhone(), ALICE.getPhone());","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"lsyurea"},"content":" public void getEmailTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getEmail(), ALICE.getEmail());","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"lsyurea"},"content":" public void getTelegramHandleTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTelegramHandle(), ALICE.getTelegramHandle());","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"lsyurea"},"content":" public void getWeeksPresentTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getWeeksPresent(), ALICE.getWeeksPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"lsyurea"},"content":" public void getTotalWeeksTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTotalWeeks(), ALICE.getTotalWeeks());","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"lsyurea":59,"et-irl":3,"Choonyan02":1,"Vanessamae23":7,"-":93}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" assertTrue(phone.hashCode() \u003d\u003d phone.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"lsyurea"},"content":" public void toStringTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"lsyurea"},"content":" assertTrue(phone.toString().equals(\"999\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":12,"-":60}},{"path":"src/test/java/seedu/address/model/person/TelegramHandleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"public class TelegramHandleTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e new TelegramHandle(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" String invalidTelegramHandle \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TelegramHandle(invalidTelegramHandle));","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" public void isValidTelegramHandle() {","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" // null address","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e TelegramHandle.isValidTelegramHandle(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" // invalid addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"1234\")); // less than 5","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"%\u0026@#\u0026@\")); // contains invalid symbols","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" // valid addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"mamamia\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"12345\")); // 5 digits","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"longtelegramhandle\")); // long telegram handle","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle telegramHandle \u003d new TelegramHandle(\"validtelegramhandle\");","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(telegramHandle.equals(new TelegramHandle(\"validtelegramhandle\")));","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(telegramHandle.equals(telegramHandle));","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(5.0f));","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(new TelegramHandle(\"othervalidtelegramHandle\")));","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Vanessamae23":58}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodSameObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList, uniquePersonList);","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodDifferentObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"lsyurea"},"content":" assertFalse(uniquePersonList.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList.hashCode(), uniquePersonList.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"lsyurea"},"content":" public void iteratorMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"lsyurea"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList.iterator().next(), ALICE);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"lsyurea":20,"Vanessamae23":3,"-":172}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" Tag tag \u003d new Tag(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" Tag tagCopy \u003d new Tag(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" assertTrue(tag.equals(tagCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" Tag differentTag \u003d new Tag(\"different\");","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(differentTag));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"lsyurea":23,"-":27}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.model.util;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" private Person[] testerSample \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" public void getSamplePersons() {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":" assertNotEquals(SampleDataUtil.getSamplePersons(), testerSample);","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" public void getSampleAddressBook() {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" AddressBook addr \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" for (Person p : testerSample) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" addr.addPerson(p);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook(), addr);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" public void getCommentSet() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" assertEquals(SampleDataUtil.getCommentSet(), SampleDataUtil.getCommentSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":33}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedCommentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"public class JsonAdaptedCommentTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" public void getCommentNameTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.getCommentName(), \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":" public void toModelTypeTest() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" Comment commentModel \u003d comment.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" assertEquals(commentModel.commentName, \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e new Comment(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" public void constructor_invalidCommentName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" String invalidCommentName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Comment(invalidCommentName));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" public void constructor_validCommentName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment jsonAdaptedComment \u003d new JsonAdaptedComment(comment);","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" assertEquals(jsonAdaptedComment.getCommentName(), \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" public void toModelType_illegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalValueException.class, () -\u003e comment.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":48}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \" +2319*\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d BENSON.getTelegramHandle().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" private static final String VALID_ATTENDANCE \u003d BENSON.getAttendance().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TELEGRAM_HANDLE, VALID_ATTENDANCE,","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d TelegramHandle.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" public void toModelType_nullTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TelegramHandle.class.getSimpleName());","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, invalidTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Choonyan02":8,"Vanessamae23":17,"-":95}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" descriptor.setTelegramHandle(person.getTelegramHandle());","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" descriptor.setTelegramHandle(new TelegramHandle(telegram));","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":4,"-":82}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"amyTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" public static final String DEFAULT_ATTENDANCE \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" private Attendance attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" private Set\u003cComment\u003e comments;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" private Set\u003cAssignment\u003e assignments;","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle \u003d new TelegramHandle(DEFAULT_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d new Attendance(DEFAULT_ATTENDANCE);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" comments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" assignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle \u003d personToCopy.getTelegramHandle();","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d personToCopy.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" comments \u003d new HashSet\u003c\u003e(personToCopy.getComments());","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" assignments \u003d new HashSet\u003c\u003e(personToCopy.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" * Parses the {@code comments} into a {@code Set\u003cComment\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":" public PersonBuilder withComments(String ... comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" this.comments \u003d SampleDataUtil.getCommentSet(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d new TelegramHandle(telegram);","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" * Sets the {@code Attendance} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" public PersonBuilder withAttendance(String attendance) {","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d new Attendance(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":123,"author":{"gitId":"lsyurea"},"content":" * Builds a person with the given parameters.","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":" return new Person(name, Optional.of(phone), Optional.of(email), Optional.of(telegramHandle),","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" Optional.of(attendance), tags, comments, assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"lsyurea":6,"et-irl":17,"Choonyan02":10,"Vanessamae23":7,"-":90}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" sb.append(PREFIX_TELEGRAM_HANDLE + person.getTelegramHandle().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" descriptor.getTelegramHandle().ifPresent(address -\u003e sb.append(PREFIX_TELEGRAM_HANDLE)","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" .append(address.value).append(\" \"));","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":4,"-":58}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(\"aliceTelegram\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" .build();","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(\"bensonTelegram\")","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"heinz@example.com\").withTelegram(\"carlTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"cornelia@example.com\").withTelegram(\"danielTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"werner@example.com\").withTelegram(\"micheganTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"lydia@example.com\").withTelegram(\"littletokyo\")","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"anna@example.com\").withTelegram(\"4thstreet\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"stefan@example.com\").withTelegram(\"littleindia\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"hans@example.com\").withTelegram(\"chicagoave\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(VALID_ATTENDANCE_AMY).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(VALID_ATTENDANCE_BOB).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" private TypicalPersons() {","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" } // prevents instantiation","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"et-irl":2,"Choonyan02":11,"Vanessamae23":17,"-":60}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T12-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T12-1/tp/actions)","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"# NPC_TRACK","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"The only application you need if you\u0027re a teaching assistant - free of charge.","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"It will leave you wondering how you lived without this application all this while.","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"et-irl":5,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"lsyurea"},"content":"run {","lastModifiedDate":"2023-10-24"},{"lineNumber":69,"author":{"gitId":"lsyurea"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"lsyurea":4,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"### choonyan02","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/choonyan02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"[[github](https://github.com/choonyan02)]","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/choonyan02.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"* Role: Developer","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"### et-irl","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/et-irl.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/et-irl)]","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/et-irl.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":"* Role: Developer","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"### lsyurea","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/lsyurea.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/lsyurea)] [[portfolio](team/lsyurea.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"### proto-aiken-13","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/proto-aiken-13.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/proto-aiken-13)]","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/proto-aiken-13.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":"### vanessamae23","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":"\u003cimg src\u003d\"images/vanessamae23.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":"[[github](http://github.com/vanessamae23)]","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":"[[portfolio](team/vanessamae23.md)]","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":"* Responsibilities: Code Quality, Testing and Integration","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"et-irl":26,"-":31}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"shut down.","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":86,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"Vanessamae23"},"content":"()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2023-10-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-10-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2023-10-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2023-10-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"Choonyan02"},"content":"* teaching assistant at NUS","lastModifiedDate":"2023-10-03"},{"lineNumber":264,"author":{"gitId":"Choonyan02"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2023-10-03"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"Choonyan02"},"content":"**Value proposition**: our app offers teaching assistants an efficient solution to student management. It provides quick","lastModifiedDate":"2023-10-03"},{"lineNumber":271,"author":{"gitId":"Choonyan02"},"content":"access to student details, course organisation, and secure data handling. Communication logs, customization, and","lastModifiedDate":"2023-10-03"},{"lineNumber":272,"author":{"gitId":"Choonyan02"},"content":"integration with university systems enhance personalized support. Cross-platform access ensures flexibility, supporting","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"Choonyan02"},"content":"various teaching activities seamlessly.","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"Choonyan02"},"content":"|----------|--------------|------------------------------|-------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | add students to a class | |","lastModifiedDate":"2023-10-03"},{"lineNumber":284,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | delete students from a class | remove students who are not part of the class anymore |","lastModifiedDate":"2023-10-03"},{"lineNumber":285,"author":{"gitId":"Choonyan02"},"content":"| `* * *` | TA | find students by keyword | reduce time taken to locate student details |","lastModifiedDate":"2023-10-03"},{"lineNumber":286,"author":{"gitId":"Choonyan02"},"content":"| `* *` | TA | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"Choonyan02"},"content":"| `**` | TA | list all students in a class | have an overview of all the students in a class |","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"Choonyan02"},"content":"| `*` | TA | exit the app | close the program |","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"Vanessamae23"},"content":"(For all use cases below, the **System** is the `npc_track` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-24"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"Vanessamae23"},"content":"**Use case: Add a student**","lastModifiedDate":"2023-10-24"},{"lineNumber":297,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":298,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":299,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":300,"author":{"gitId":"Vanessamae23"},"content":"1. User requests to add a student.","lastModifiedDate":"2023-10-24"},{"lineNumber":301,"author":{"gitId":"lsyurea"},"content":"2. User provides the name and optional details.","lastModifiedDate":"2023-10-24"},{"lineNumber":302,"author":{"gitId":"Vanessamae23"},"content":"3. `npc_track` creates a new person entry with the provided optional details.","lastModifiedDate":"2023-10-24"},{"lineNumber":303,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":304,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":305,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":306,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":307,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":308,"author":{"gitId":"lsyurea"},"content":"* 3a. User does not provide the name.","lastModifiedDate":"2023-10-24"},{"lineNumber":309,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":310,"author":{"gitId":"et-irl"},"content":" * 3a1. AddressBook displays an error message and prompts the user to provide missing details.","lastModifiedDate":"2023-10-03"},{"lineNumber":311,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":312,"author":{"gitId":"et-irl"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":313,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":314,"author":{"gitId":"Vanessamae23"},"content":"**Use case: Grade a student\u0027s assignment**","lastModifiedDate":"2023-10-24"},{"lineNumber":315,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":316,"author":{"gitId":"Vanessamae23"},"content":"**MSS**","lastModifiedDate":"2023-10-24"},{"lineNumber":317,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":318,"author":{"gitId":"Vanessamae23"},"content":"1. User requests to grade the assignment of a particular student.","lastModifiedDate":"2023-10-24"},{"lineNumber":319,"author":{"gitId":"Vanessamae23"},"content":"2. User provides the student index, assignment name and score.","lastModifiedDate":"2023-10-24"},{"lineNumber":320,"author":{"gitId":"Vanessamae23"},"content":"3. `npc_track` updates the current assignment of that student according to the mark given.","lastModifiedDate":"2023-10-24"},{"lineNumber":321,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":322,"author":{"gitId":"Vanessamae23"},"content":" Use case ends.","lastModifiedDate":"2023-10-24"},{"lineNumber":323,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":324,"author":{"gitId":"Vanessamae23"},"content":"**Extensions**","lastModifiedDate":"2023-10-24"},{"lineNumber":325,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":326,"author":{"gitId":"Vanessamae23"},"content":"* 2a. User does not provide the correct index / assignment name / score.","lastModifiedDate":"2023-10-24"},{"lineNumber":327,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":328,"author":{"gitId":"Vanessamae23"},"content":" * 2a1. `npc_track` displays an error message and prompts the user to provide missing details.","lastModifiedDate":"2023-10-24"},{"lineNumber":329,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":330,"author":{"gitId":"Vanessamae23"},"content":"* 2b. User provides a score that is outside the valid boundary.","lastModifiedDate":"2023-10-24"},{"lineNumber":331,"author":{"gitId":"Vanessamae23"},"content":" * 2b1. `npc_track` displays an error message and prompts the user to provide the correct score.","lastModifiedDate":"2023-10-24"},{"lineNumber":332,"author":{"gitId":"Vanessamae23"},"content":"* 2c. User provides an assignment that has not been created.","lastModifiedDate":"2023-10-24"},{"lineNumber":333,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":334,"author":{"gitId":"Vanessamae23"},"content":" * 2c1. `npc_track` displays an error message and prompts the user to provide a valid assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":335,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":336,"author":{"gitId":"Vanessamae23"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-24"},{"lineNumber":337,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":339,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"lsyurea"},"content":"**Use case : Edit a person**","lastModifiedDate":"2023-10-24"},{"lineNumber":363,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":364,"author":{"gitId":"lsyurea"},"content":"**MSS**","lastModifiedDate":"2023-10-24"},{"lineNumber":365,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":366,"author":{"gitId":"lsyurea"},"content":"1. User requests to Edit persons","lastModifiedDate":"2023-10-24"},{"lineNumber":367,"author":{"gitId":"lsyurea"},"content":"2. AddressBook shows the edited person","lastModifiedDate":"2023-10-24"},{"lineNumber":368,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":369,"author":{"gitId":"lsyurea"},"content":" Use case ends.","lastModifiedDate":"2023-10-24"},{"lineNumber":370,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":371,"author":{"gitId":"et-irl"},"content":"**Use case: Find a person**","lastModifiedDate":"2023-10-03"},{"lineNumber":372,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":373,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":375,"author":{"gitId":"et-irl"},"content":"1. User requests to find a person.","lastModifiedDate":"2023-10-03"},{"lineNumber":376,"author":{"gitId":"et-irl"},"content":"2. User provides the full or partial search keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":377,"author":{"gitId":"et-irl"},"content":"3. AddressBook searches for persons matching the keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":378,"author":{"gitId":"et-irl"},"content":"4. AddressBook displays a list of matching persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":379,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":380,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":381,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":382,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":383,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":384,"author":{"gitId":"et-irl"},"content":"* 5a. No persons match the search keyword.","lastModifiedDate":"2023-10-03"},{"lineNumber":385,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":386,"author":{"gitId":"et-irl"},"content":" * 5a1. AddressBook displays a message indicating no matching persons were found.","lastModifiedDate":"2023-10-03"},{"lineNumber":387,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":388,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":389,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":390,"author":{"gitId":"et-irl"},"content":"**Use case: List all persons**","lastModifiedDate":"2023-10-03"},{"lineNumber":391,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":392,"author":{"gitId":"et-irl"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":393,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":394,"author":{"gitId":"et-irl"},"content":"1. User requests to list all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":395,"author":{"gitId":"et-irl"},"content":"2. AddressBook retrieves the list of all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":396,"author":{"gitId":"et-irl"},"content":"3. AddressBook displays a list of all persons.","lastModifiedDate":"2023-10-03"},{"lineNumber":397,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":398,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":399,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":400,"author":{"gitId":"et-irl"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":401,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":402,"author":{"gitId":"Vanessamae23"},"content":"* 2a. There are no persons in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":403,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":404,"author":{"gitId":"Vanessamae23"},"content":" * 2a1. AddressBook displays a message indicating that the address book is empty.","lastModifiedDate":"2023-10-13"},{"lineNumber":405,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":406,"author":{"gitId":"et-irl"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"lsyurea"},"content":"4. Any teaching assistant from any faculty should know how to use it.","lastModifiedDate":"2023-10-03"},{"lineNumber":414,"author":{"gitId":"lsyurea"},"content":"5. Data of the students should not be easily accessible.","lastModifiedDate":"2023-10-03"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"lsyurea"},"content":"* **CLI**: Command Line Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":423,"author":{"gitId":"lsyurea"},"content":"* **GUI**: Graphical User Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":424,"author":{"gitId":"lsyurea"},"content":"* **UI**: User Interface","lastModifiedDate":"2023-10-03"},{"lineNumber":425,"author":{"gitId":"lsyurea"},"content":"* **TA**: Teaching Assistant","lastModifiedDate":"2023-10-03"},{"lineNumber":426,"author":{"gitId":"lsyurea"},"content":"* **MSS**: Main Success Scenario","lastModifiedDate":"2023-10-03"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"lsyurea":18,"et-irl":47,"Choonyan02":13,"Vanessamae23":36,"-":365}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"# Welcome to `Npc_track`","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"## Tracking the details of your students is on the cusp of your fingertips!","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` is a desktop application curtailed for the humble teaching assistants of SoC via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, `npc_track` can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"Here’s an overview of how `npc_track` can help you streamline your student management process:","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"- Store, delete and edit information about your students!","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"- Track the progress of your students","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"- ...","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"On top of these functionalities, we believe that student management should be extremely efficient. `npc_track` is optimized for use via the familiar command line interface (CLI) for linux / fans of terminal applications as well as the benefits of an appealing user interface for TA’s more inclined to them!","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` is for all TA’s, and is adaptable for their management and organisational styles!","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"## Table of Contents","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"- [Features](#features)","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" - [Viewing Help](#help) `help`","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" - [Listing All Students](#list) `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" - [Adding a Student](#add) `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" - [Deleting a Student](#delete) `delete`","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" - [Grading a Student](#grade) `grade`","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" - [Exiting the Program](#exit)","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"- [FAQ](#FAQ)","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"- [Known Issues](#issues)","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"- [Command Summary](#summary)","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"## How can this guide help me?","lastModifiedDate":"2023-10-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"**First time user?** Welcome and thank you for using our app! Check out the installation guide here!","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"Once you’re done setting up, check out the [features](#features) of `npc_track` to manage the dossier of your students!","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"If you are an intermediary user and are confused or unclear of some of our features, check out the [FAQ](#FAQ) as well!","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"Encountered some bugs or unexpected events when using the app? Maybe [Known Issues](#issues) will give you some guidance on what the known bugs (and their status) are!","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"A seasoned user (but you still need help on memorizing commands)? Drop by in [Command summary](#summary)!","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"features\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"help\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":"### Adding a student: `add`","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":"Adds a student to the student book.","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/TELEGRAM_HANDLE [t/TAG]… [c/COMMENT]…​`","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"A student can have any number of tags (including 0)","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":"A student can have any number of comments (including 0)","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/johnTelegram, block 123, #01-01`","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/newTelegram p/1234567 t/criminal c/On the loose as we speak!`","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"### Listing all students : `list`","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"list\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"et-irl"},"content":"Shows a list of all students.","lastModifiedDate":"2023-10-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"edit\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":"Edits an existing student.","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"et-irl"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG]… [c/COMMENT]…`","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"et-irl"},"content":"* `edit 3 t/ c/Loves cake` Clears all existing tags of the 3rd person and replaces their tags with \"Loves cake\".","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"Choonyan02"},"content":"### Attendance","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":"For attendance, you can enter the following commands:","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":"* markAtd","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Choonyan02"},"content":"* unmarkAtd","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":"### Mark Attendance : `markAtd`","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Choonyan02"},"content":"\u003ca name\u003d\"markAtd\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Choonyan02"},"content":"Marks the attendance of a student for that tutorial.","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"Choonyan02"},"content":"Format: `markAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"Choonyan02"},"content":"* `markAtd 1 t/1`","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"Choonyan02"},"content":"* `markAtd 2 t/12`","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"Choonyan02"},"content":"### Unmark Attendance : `unmarkAtd`","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"Choonyan02"},"content":"\u003ca name\u003d\"unmarkAtd\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"Choonyan02"},"content":"Unmark the attendance of a student for that tutorial.","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"Choonyan02"},"content":"Format: `unmarkAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"Choonyan02"},"content":"Examples:","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Choonyan02"},"content":"* `unmarkAtd 1 t/1`","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Choonyan02"},"content":"* `unmarkAtd 2 t/12`","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"et-irl"},"content":"### Distribute assignments: `assign`","lastModifiedDate":"2023-10-23"},{"lineNumber":159,"author":{"gitId":"et-irl"},"content":"\u003ca name\u003d\"assign\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":160,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":161,"author":{"gitId":"et-irl"},"content":"Create an assignment and assign it to all students.","lastModifiedDate":"2023-10-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":163,"author":{"gitId":"et-irl"},"content":"Format: `assign n/ASSIGNMENT_NAME m/MAX_SCORE`","lastModifiedDate":"2023-10-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-23"},{"lineNumber":166,"author":{"gitId":"et-irl"},"content":"- `assign n/Tutorial1 m/100`","lastModifiedDate":"2023-10-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"Vanessamae23"},"content":"### Grade assignments: `grade`","lastModifiedDate":"2023-10-24"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"grade\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":"Grade a student\u0027s assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":173,"author":{"gitId":"Vanessamae23"},"content":"Format: `grade INDEX n/ASSIGNMENT_NAME g/SCORE`","lastModifiedDate":"2023-10-24"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":175,"author":{"gitId":"Vanessamae23"},"content":"Examples:","lastModifiedDate":"2023-10-24"},{"lineNumber":176,"author":{"gitId":"Vanessamae23"},"content":"- `assign 1 n/Tutorial1 g/90`","lastModifiedDate":"2023-10-24"},{"lineNumber":177,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":178,"author":{"gitId":"Vanessamae23"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2023-10-05"},{"lineNumber":179,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"delete\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":"Deletes the specified person from the student book.","lastModifiedDate":"2023-10-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"exit\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"Vanessamae23"},"content":"StudentBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":198,"author":{"gitId":"Vanessamae23"},"content":"`npc_track` data are saved automatically as a JSON file. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":201,"author":{"gitId":"Vanessamae23"},"content":"If your changes to the data file makes its format invalid, StudentBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-05"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"FAQ\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"Vanessamae23"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous StudentBook home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":218,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"issues\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"Vanessamae23"},"content":"\u003ca name\u003d\"summary\"\u003e\u003c/a\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"Vanessamae23"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/TELEGRAM_HANDLE [t/TAG]… [c/COMMENT]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/jamesTele t/friend t/colleague c/Owes a cookie`","lastModifiedDate":"2023-10-13"},{"lineNumber":230,"author":{"gitId":"et-irl"},"content":"**Clear** | `clear​`","lastModifiedDate":"2023-10-11"},{"lineNumber":231,"author":{"gitId":"et-irl"},"content":"**Delete** | `delete INDEX​` \u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2023-10-11"},{"lineNumber":232,"author":{"gitId":"et-irl"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG]… [c/COMMENT]…​` \u003cbr\u003e e.g., `n/New Name t/`","lastModifiedDate":"2023-10-11"},{"lineNumber":233,"author":{"gitId":"et-irl"},"content":"**Exit** | `exit​`","lastModifiedDate":"2023-10-11"},{"lineNumber":234,"author":{"gitId":"et-irl"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]​` e.g., `find James Jake`","lastModifiedDate":"2023-10-11"},{"lineNumber":235,"author":{"gitId":"et-irl"},"content":"**Help** | `help​`","lastModifiedDate":"2023-10-11"},{"lineNumber":236,"author":{"gitId":"et-irl"},"content":"**List** | `list​`","lastModifiedDate":"2023-10-11"},{"lineNumber":237,"author":{"gitId":"Choonyan02"},"content":"**Mark Attendance** | `markAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-13"},{"lineNumber":238,"author":{"gitId":"et-irl"},"content":"**Unmark Attendance** | `unmarkAtd INDEX t/TUTORIAL`","lastModifiedDate":"2023-10-23"},{"lineNumber":239,"author":{"gitId":"et-irl"},"content":"**Distribute Assignments** | `assign n/ASSIGNMENT_NAME m/MAX_SCORE`","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":21,"Choonyan02":21,"Vanessamae23":64,"-":133}},{"path":"docs/team/et-irl.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: et\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: Npc_Track","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Npc_Track is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"### Code Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"- [Link to My Code Contributions on tP Code Dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003det-irl\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"- Added a Comment Field associated with every person.","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"- Renamed the package associated with tags and comments to `fields`, for better code readability and maintainability.","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"- Updated the `add` command to reflect the new command accepting a comment.","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":"- Updated the `edit` command to reflect the new command accepting a comment.","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":"- Added the `assign` command to give all students an assignment.","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":"- Highlighted the MSS and use cases of command commands such as `add` and `list`.","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":"- Brainstormed and came up with user stories and steered the project in a clear direction.","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"- Reviewed and spotted PRs with issues such as misnamed commit messages.","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":"- Ensured that the documentation associated with a PR is updated correctly.","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":"- Brought morale to the team.","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"et-irl":32,"-":12}},{"path":"docs/team/lsyurea.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Siyuan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"### Project: npc_track","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"npc_track is a desktop app for managing student contacts, optimized for use via a Command Line Interface (CLI)","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"### Code contribution","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":"- [Link to my contribution on tp dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dlsyurea\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"- Updated test coverage of all the classes, including attendance taking, add command, delete command, edit command,","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":"find command, list command, mark command such that it goes to 78%.","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"- Making the commands optional, so that the user can choose","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" to use the commands or not.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":"- Group students by classes.","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"- Make commands optional.","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":"- Modify help command to show the relevant link.","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":"- to be added","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":"- Good moral support.","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"lsyurea":37,"-":8}},{"path":"docs/team/proto-aiken-13.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"proto-aiken-13"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"proto-aiken-13"},"content":"layout: page","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"proto-aiken-13"},"content":"title: Miguel\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"proto-aiken-13"},"content":"---","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"proto-aiken-13"},"content":"### Project: npc_track","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"proto-aiken-13"},"content":"npc_track is a desktop app for managing student contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"proto-aiken-13"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"proto-aiken-13"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"proto-aiken-13"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"proto-aiken-13"},"content":"- **New Feature**","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"proto-aiken-13"},"content":"\t- Added a Ui.","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"proto-aiken-13"},"content":"- **Code contributed**","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"proto-aiken-13"},"content":"\t- Edited MainWindow.fxml","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":"\t- Edited DarkMode.css","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"proto-aiken-13"},"content":"- **Project management**","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"proto-aiken-13"},"content":"\t- Managed release `v1.1` as a practice on Github","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"proto-aiken-13"},"content":"\t- Helped to contribute and conduct v1.2","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"proto-aiken-13"},"content":"\t- Contributed to v1.2b","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"proto-aiken-13"},"content":"- **Enhancements to existing features:**","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"proto-aiken-13"},"content":"\t- Made the Ui mockup","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"proto-aiken-13"},"content":"\t- Generally completed the UI","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"proto-aiken-13"},"content":"-**Documentation:**","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"proto-aiken-13"},"content":"(to be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"proto-aiken-13"},"content":"-**Community**","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"proto-aiken-13"},"content":"(To be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"proto-aiken-13"},"content":"-**Tools**","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"proto-aiken-13"},"content":"(to be added)","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"proto-aiken-13":33}},{"path":"docs/team/vanessamae23.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Vanessa\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"### Project: Npc_Track","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Npc_Track is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"having the benefits of a Graphical User Interface (GUI). If you can type fast, Npc_Track can get your contact","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"### Code Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"- [Link to My Code Contributions on tP Code Dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dvanessamae23\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22)","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"### Enhancements Implemented","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"- Changed the address fields to now support telegram instead.","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"- Changed the UI such that TAs can link to their","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" students\u0027 telegram directly","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"- Changed the corresponding test cases after changing from address to telegram","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"- Added the `grade` command and all the other test cases","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to the User Guide (UG)","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"- Updated the necessary parts from `address` to `telegram`","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"- Changed the UG to remove all linkage from AB3","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to the Developer Guide (DG) and UML Diagrams","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"- to be added","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"### Contributions to Team-Based Tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"- Contributed some ideas.","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"- Added some features to the system and changed the UI.","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"- Helped with other admin TP requirements.","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"### Review and Mentoring Contributions","lastModifiedDate":"2023-10-03"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"- Reviewed and gave comments to peers\u0027 pull requests","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"- Merged peers\u0027 code into the tp","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"### Contributions Beyond the Project Team","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"- Gave my never ending support \u003d)","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"Vanessamae23":35,"-":13}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"edit it if required. The command should have the following format:","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2023-10-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":234,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2023-10-13"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"Vanessamae23"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not","lastModifiedDate":"2023-10-13"},{"lineNumber":298,"author":{"gitId":"Vanessamae23"},"content":"doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-10-13"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":348,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":378,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"Vanessamae23":4,"-":397}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `telegramHandle` field from `Person` class.","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `telegramHandle` field can be done similarly.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"The `telegramHandle` field in `Person` is actually an instance of the `seedu.address.model.person.TelegramHandle` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"1. Safe delete the field `telegramHandle` in `EditPersonDescriptor`.","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"1. Remove the usages of `telegramHandle` and select `Do refactor` when you are done.","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `telegramHandle` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `telegramHandle` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$telegramHandle` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"![$telegramHandle](../images/remove/$telegramHandle.png)","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"private Label telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"\u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `telegramHandle` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" \"telegram\": \"4thstreet\"","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"You can go through each individual `json` file and manually remove the `telegramHandle` field.","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Vanessamae23":14,"-":98}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_INVALID_ASSIGNMENT_NAME \u003d \"Assignment not found!\";","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_INVALID_ASSIGNMENT_SCORE \u003d \"Assignment score should be between 0 to max score \";","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_DUPLICATE_MARKINGS \u003d \"This week\u0027s attendance has already been marked!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_DUPLICATE_UNMARK \u003d \"This week\u0027s attendance has already been unmarked!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" .append(\"; Telegram Handle: \")","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" .append(person.getTelegramHandle())","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" builder.append(\"; Comments: \");","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" person.getComments().forEach(builder::append);","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":2,"Choonyan02":2,"Vanessamae23":4,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" + \"\\nCompulsory Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" + \"\\nOptional Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" + \"[\" + PREFIX_COMMENT + \"COMMENT]...\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" + \"Example: \\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" + \"1. \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" + PREFIX_TELEGRAM_HANDLE + \"johndoeisluna \"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" + PREFIX_COMMENT + \"forgets their homework sometimes\"","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" + \"\\n2. \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":11,"et-irl":2,"Vanessamae23":2,"-":76}},{"path":"src/main/java/seedu/address/logic/commands/AssignmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAX_SCORE;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import java.util.List;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" * Marks the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"public class AssignmentCommand extends Command {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Assignment created successfully!\";","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_FAIL \u003d \"Assignment not created.\";","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" + \": Creates an assignment for all students.\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" + \"[\" + PREFIX_NAME + \"ASSIGNMENT_NAME] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" + \"[\" + PREFIX_MAX_SCORE + \"MAX_SCORE] \"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" + \"\\nExample: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" + PREFIX_NAME + \"Tutorial1 \" + PREFIX_MAX_SCORE + \"100\";","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" private final Name name;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" private final int maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" * Constructs an AssignmentCommand with the specified name and maximum score.","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" * @param name The name of the assignment. Must not be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" * @param maxScore The maximum possible score for the assignment. Must be greater than 0.","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" * @throws NullPointerException If the provided name is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" * @throws IllegalArgumentException If the provided maxScore is not greater than 0.","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" public AssignmentCommand(Name name, int maxScore) {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" if (maxScore \u003c\u003d 0) {","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" throw new IllegalArgumentException(\"maxScore must be greater than 0\");","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" * Executes the command to create a new assignment for all students in the last shown list.","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" * @param model Model representing the current state of the address book.","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" * @return CommandResult representing the result of the execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" * @throws CommandException If there is an error during command execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" // Loop through the list and update each person\u0027s assignments","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" for (Person studentToEdit : lastShownList) {","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e updatedAssignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" Assignment newAssignment \u003d new Assignment(name, maxScore);","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" updatedAssignments.addAll(studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" updatedAssignments.remove(newAssignment);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" updatedAssignments.add(newAssignment);","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" // Create a new student with the updated assignments","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()),","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), updatedAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" // Set the updated student in the model","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS));","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof AssignmentCommand)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" AssignmentCommand otherAssignmentCommand \u003d (AssignmentCommand) other;","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" return this.name.equals(otherAssignmentCommand.name)","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 this.maxScore \u003d\u003d otherAssignmentCommand.maxScore;","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"lsyurea":5,"et-irl":101}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Clears the address book. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM HANDLE] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person and telegram handle already exists \"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" + \"in the address book. Either the name or telegram handle already exist\";","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle updatedTelegramHandle \u003d editPersonDescriptor.getTelegramHandle()","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" .orElse(personToEdit.getTelegramHandle());","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"Choonyan02"},"content":" Attendance updatedAttendance \u003d editPersonDescriptor.getAttendance().orElse(personToEdit.getAttendance());","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"et-irl"},"content":" Set\u003cComment\u003e updatedComments \u003d editPersonDescriptor.getComments().orElse(personToEdit.getComments());","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e updatedAssignments \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"et-irl"},"content":" editPersonDescriptor.getAssignments().orElse(personToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" return new Person(updatedName, Optional.of(updatedPhone), Optional.of(updatedEmail),","lastModifiedDate":"2023-10-23"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":" Optional.of(updatedTelegramHandle), Optional.of(updatedAttendance),","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" updatedTags, updatedComments, updatedAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"Choonyan02"},"content":" private Attendance attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"et-irl"},"content":" private Set\u003cComment\u003e comments;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"et-irl"},"content":" private Set\u003cAssignment\u003e assignments;","lastModifiedDate":"2023-10-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" setTelegramHandle(toCopy.telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"Choonyan02"},"content":" setAttendance(toCopy.attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" setComments(toCopy.comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" setAssignments(toCopy.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, telegramHandle, tags, comments);","lastModifiedDate":"2023-10-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"Vanessamae23"},"content":" public void setTelegramHandle(TelegramHandle telegramHandle) {","lastModifiedDate":"2023-10-10"},{"lineNumber":209,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"Vanessamae23"},"content":" public Optional\u003cTelegramHandle\u003e getTelegramHandle() {","lastModifiedDate":"2023-10-10"},{"lineNumber":213,"author":{"gitId":"Vanessamae23"},"content":" return Optional.ofNullable(telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"Choonyan02"},"content":" public void setAttendance(Attendance attendance) {","lastModifiedDate":"2023-10-13"},{"lineNumber":217,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":218,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":220,"author":{"gitId":"Choonyan02"},"content":" public Optional\u003cAttendance\u003e getAttendance() {","lastModifiedDate":"2023-10-13"},{"lineNumber":221,"author":{"gitId":"Choonyan02"},"content":" return Optional.ofNullable(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":242,"author":{"gitId":"et-irl"},"content":" * Sets {@code comments} to this object\u0027s {@code comments}.","lastModifiedDate":"2023-10-10"},{"lineNumber":243,"author":{"gitId":"et-irl"},"content":" * A defensive copy of {@code comments} is used internally.","lastModifiedDate":"2023-10-10"},{"lineNumber":244,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":245,"author":{"gitId":"et-irl"},"content":" public void setComments(Set\u003cComment\u003e comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":246,"author":{"gitId":"et-irl"},"content":" this.comments \u003d (comments !\u003d null) ? new HashSet\u003c\u003e(comments) : null;","lastModifiedDate":"2023-10-10"},{"lineNumber":247,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":248,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":250,"author":{"gitId":"et-irl"},"content":" * Returns an unmodifiable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-23"},{"lineNumber":251,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-23"},{"lineNumber":252,"author":{"gitId":"et-irl"},"content":" * Returns {@code Optional#empty()} if {@code comments} is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":253,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":254,"author":{"gitId":"et-irl"},"content":" public Optional\u003cSet\u003cAssignment\u003e\u003e getAssignments() {","lastModifiedDate":"2023-10-23"},{"lineNumber":255,"author":{"gitId":"et-irl"},"content":" return (assignments !\u003d null) ? Optional.of(Collections.unmodifiableSet(assignments)) : Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":256,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":257,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":258,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":259,"author":{"gitId":"et-irl"},"content":" * Sets {@code assignments} to this object\u0027s {@code assignments}.","lastModifiedDate":"2023-10-23"},{"lineNumber":260,"author":{"gitId":"et-irl"},"content":" * A defensive copy of {@code assignments} is used internally.","lastModifiedDate":"2023-10-23"},{"lineNumber":261,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":262,"author":{"gitId":"et-irl"},"content":" public void setAssignments(Set\u003cAssignment\u003e assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":263,"author":{"gitId":"et-irl"},"content":" this.assignments \u003d (assignments !\u003d null) ? new HashSet\u003c\u003e(assignments) : null;","lastModifiedDate":"2023-10-23"},{"lineNumber":264,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":265,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":266,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":267,"author":{"gitId":"et-irl"},"content":" * Returns an unmodifiable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":268,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":269,"author":{"gitId":"et-irl"},"content":" * Returns {@code Optional#empty()} if {@code comments} is null.","lastModifiedDate":"2023-10-10"},{"lineNumber":270,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":271,"author":{"gitId":"et-irl"},"content":" public Optional\u003cSet\u003cComment\u003e\u003e getComments() {","lastModifiedDate":"2023-10-10"},{"lineNumber":272,"author":{"gitId":"et-irl"},"content":" return (comments !\u003d null) ? Optional.of(Collections.unmodifiableSet(comments)) : Optional.empty();","lastModifiedDate":"2023-10-10"},{"lineNumber":273,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":274,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":290,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 Objects.equals(telegramHandle, otherEditPersonDescriptor.telegramHandle)","lastModifiedDate":"2023-10-10"},{"lineNumber":291,"author":{"gitId":"Choonyan02"},"content":" \u0026\u0026 Objects.equals(attendance, otherEditPersonDescriptor.attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":292,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-11"},{"lineNumber":293,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(comments, otherEditPersonDescriptor.comments)","lastModifiedDate":"2023-10-23"},{"lineNumber":294,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 Objects.equals(assignments, otherEditPersonDescriptor.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"Vanessamae23"},"content":" .add(\"telegram\", telegramHandle)","lastModifiedDate":"2023-10-11"},{"lineNumber":304,"author":{"gitId":"Choonyan02"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"et-irl"},"content":" .add(\"comments\", comments)","lastModifiedDate":"2023-10-11"},{"lineNumber":307,"author":{"gitId":"et-irl"},"content":" .add(\"assignments\", assignments)","lastModifiedDate":"2023-10-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"lsyurea":4,"et-irl":49,"Choonyan02":12,"Vanessamae23":17,"-":229}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting npc_track as requested ...\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits the program. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"lsyurea":2,"Vanessamae23":1,"-":17}},{"path":"src/main/java/seedu/address/logic/commands/GradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" * Grades the assignment of an existing student in the list.","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"public class GradeCommand extends Command {","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" public static final String COMMAND_WORD \u003d \"grade\";","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" public static final String ASSIGNMENT_GRADE_SUCCESS \u003d \"Assignment graded successfully!\";","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" + \": Marks the specific assignment of the student identified\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" + \"by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" + \"[\" + PREFIX_NAME + \"ASSIGNMENT_NAME] \"","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" + \"[\" + PREFIX_GRADE + \"SCORE]\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 n/Tutorial1 g/96 \";","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" private final Index index;","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" private final Name name;","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" private final int score;","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" * Constructs a new GradeCommand to grade student\u0027s assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" * @param index The index of the student to mark attendance for.","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" * @param name The name of the assignment to grade.","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" * @param score The score to be given to the assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" public GradeCommand(Index index, Name name, int score) {","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" this.score \u003d score;","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" * Executes the GradeCommand to grade student\u0027s assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" * @param model The model that the command operates on.","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" * @throws CommandException If there is an error in executing the command.","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" // Get the student to be graded","lastModifiedDate":"2023-10-24"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" Person studentToGrade \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" // From the specific students\u0027 assignments, get that specific named assignment","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" Assignment studentAssignment \u003d new Assignment(this.name);","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" Set\u003cAssignment\u003e studentAssignments \u003d studentToGrade.getAssignments();","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" // Throw error if assignment is not found","lastModifiedDate":"2023-10-24"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" if (!studentAssignments.contains(studentAssignment)) {","lastModifiedDate":"2023-10-24"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" for (Assignment assignment : studentAssignments) {","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" if (assignment.equals(studentAssignment)) {","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" if (score \u003e assignment.getMaxScore() || score \u003c 0) {","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" assignment.setScore(score);","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" studentToGrade.getName(),","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" Optional.of(studentToGrade.getPhone()), Optional.of(studentToGrade.getEmail()),","lastModifiedDate":"2023-10-24"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" Optional.of(studentToGrade.getTelegramHandle()), Optional.of(studentToGrade.getAttendance()),","lastModifiedDate":"2023-10-24"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" studentToGrade.getTags(),","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" studentToGrade.getComments(), studentToGrade.getAssignments());","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" model.setPerson(studentToGrade, editedStudent);","lastModifiedDate":"2023-10-24"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" return new CommandResult(String.format(ASSIGNMENT_GRADE_SUCCESS));","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-24"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-24"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" return true;","lastModifiedDate":"2023-10-24"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" if (!(other instanceof GradeCommand)) {","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" return false;","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand otherGradeCommand \u003d (GradeCommand) other;","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" return this.name.equals(otherGradeCommand.name)","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 this.score \u003d\u003d otherGradeCommand.score;","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"Vanessamae23":115}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all persons in the address book. \"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/MarkAttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * Marks the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" public static final String COMMAND_WORD \u003d \"markAtd\";","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_MARK_SUCCESS \u003d \"Attendance marked successfully!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_MARK_FAIL \u003d \"Attendance failed to mark!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" + \": Marks the attendance of the student identified\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" + \"by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TutorialToMark] \\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 t/1 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" private final Index tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * Constructs a new MarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" * @param index The index of the student to mark attendance for.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" * @param tut The index of the week to mark attendance on.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public MarkAttendanceCommand(Index index, Index tut) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" this.tut \u003d tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" * Executes the MarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * @param model The model that the command operates on.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @throws CommandException If there is an error in executing the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" Person studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()), Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" Attendance studentAtd \u003d studentToEdit.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" if (studentAtd.isMarkedWeek(this.tut.getZeroBased())) {","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(Messages.MESSAGE_DUPLICATE_MARKINGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" studentAtd.markAttendance(this.tut.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" * the attendance is marked.","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * {@code personToEdit}.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" String message \u003d personToEdit.getAttendance().isMarkedWeek(this.tut.getZeroBased())","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" ? ATTENDANCE_MARK_SUCCESS","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" : ATTENDANCE_MARK_FAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof MarkAttendanceCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand otherMarkAttendanceCommand \u003d (MarkAttendanceCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" return index.equals(otherMarkAttendanceCommand.index) \u0026\u0026 tut.equals(otherMarkAttendanceCommand.tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":4,"et-irl":1,"Choonyan02":99}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkAttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * Unmark the attendance of an existing student in the taa.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" public static final String COMMAND_WORD \u003d \"unmarkAtd\";","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_UNMARK_SUCCESS \u003d \"Attendance unmarked successfully!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public static final String ATTENDANCE_UNMARK_FAIL \u003d \"Attendance failed to unmark!\";","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" + \": Unmark the attendance of the student identified\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" + \"by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" + \"[\" + PREFIX_TUTORIAL + \"TutorialToUnmark] \\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 t/1 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" private final Index tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * Constructs a new UnMarkAttendanceCommand to mark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" * @param index The index of the student to unmark attendance for.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" * @param tut The index of the week to unmark attendance on.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public UnmarkAttendanceCommand(Index index, Index tut) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" this.tut \u003d tut;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" * Executes the UnMarkAttendanceCommand to unmark attendance for a student on a specific week.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * @param model The model that the command operates on.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @throws CommandException If there is an error in executing the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" Person studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" Person editedStudent \u003d new Person(","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getName(), Optional.of(studentToEdit.getPhone()), Optional.of(studentToEdit.getEmail()),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" Optional.of(studentToEdit.getTelegramHandle()), Optional.of(studentToEdit.getAttendance()),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" studentToEdit.getTags(),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" studentToEdit.getComments(), studentToEdit.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" Attendance studentAtd \u003d studentToEdit.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" if (!studentAtd.isMarkedWeek(this.tut.getZeroBased())) {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(Messages.MESSAGE_DUPLICATE_UNMARK);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" studentAtd.unmarkAttendance(this.tut.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * the attendance is unmarked.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" * {@code personToEdit}.","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" String message \u003d personToEdit.getAttendance().isMarkedWeek(this.tut.getZeroBased())","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" ? ATTENDANCE_UNMARK_FAIL","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" : ATTENDANCE_UNMARK_SUCCESS;","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof UnmarkAttendanceCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand otherUnMarkAttendanceCommand \u003d (UnmarkAttendanceCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" return index.equals(otherUnMarkAttendanceCommand.index) \u0026\u0026 tut.equals(otherUnMarkAttendanceCommand.tut);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":5,"et-irl":1,"Choonyan02":100}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_TAG, PREFIX_COMMENT);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE);","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" // optional fields","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d Phone.DEFAULT_PHONE;","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"lsyurea"},"content":" phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"lsyurea"},"content":" Email email \u003d Email.NULL_EMAIL;","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":" TelegramHandle telegram \u003d TelegramHandle.NULL_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" telegram \u003d ParserUtil.parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" Set\u003cComment\u003e commentList \u003d ParserUtil.parseComments(argMultimap.getAllValues(PREFIX_COMMENT));","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" Set\u003cAssignment\u003e assignmentList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new Person(name, Optional.of(phone), Optional.of(email), Optional.of(telegram),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"lsyurea"},"content":" Optional.of(attendance), tagList, commentList, assignmentList);","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"lsyurea":17,"et-irl":7,"Choonyan02":2,"Vanessamae23":6,"-":52}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.commands.GradeCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" case AssignmentCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" return new AssignmentCommandParser().parse(arguments);","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" case GradeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" return new GradeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-24"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" case MarkAttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" return new MarkAttendanceParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" case UnmarkAttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" return new UnmarkAttendanceParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":4,"Choonyan02":8,"Vanessamae23":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/AssignmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAX_SCORE;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" * Parses input arguments and creates a new AssignmentCommand object","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"public class AssignmentCommandParser implements Parser\u003cAssignmentCommand\u003e {","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" * Parses the given arguments and constructs an AssignmentCommand object for execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" * @param args A string of arguments representing the assignment command.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" * @return An AssignmentCommand for execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" * @throws ParseException If the user input does not conform to the expected format","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * or if maxScore is not a positive integer.","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public AssignmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_MAX_SCORE);","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAX_SCORE)","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_MAX_SCORE);","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" int maxScore \u003d ParserUtil.parseInt(argMultimap.getValue(PREFIX_MAX_SCORE).get());","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" if (maxScore \u003c\u003d 0) {","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" return new AssignmentCommand(name, maxScore);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":55}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_COMMENT \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" public static final Prefix PREFIX_GRADE \u003d new Prefix(\"g/\");","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_MAX_SCORE \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" public static final Prefix PREFIX_TELEGRAM_HANDLE \u003d new Prefix(\"a/\");","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" public static final Prefix PREFIX_TUTORIAL \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"et-irl":4,"Choonyan02":1,"Vanessamae23":1,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMENT;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE, PREFIX_TAG, PREFIX_COMMENT);","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE);","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" editPersonDescriptor.setTelegramHandle(","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" ParserUtil.parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get()));","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" parseCommentsForEdit(argMultimap.getAllValues(PREFIX_COMMENT)).ifPresent(editPersonDescriptor::setComments);","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" * Parses {@code Collection\u003cString\u003e comments} into a {@code Set\u003cComment\u003e} if {@code comments} is non-empty.","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" * If {@code comments} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" * {@code Set\u003cComment\u003e} containing zero comments.","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" private Optional\u003cSet\u003cComment\u003e\u003e parseCommentsForEdit(Collection\u003cString\u003e comments) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" assert comments !\u003d null;","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" if (comments.isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" Collection\u003cString\u003e commentSet \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" comments.size() \u003d\u003d 1 \u0026\u0026 comments.contains(\"\") ? Collections.emptySet() : comments;","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" return Optional.of(ParserUtil.parseComments(commentSet));","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"et-irl":20,"Vanessamae23":7,"-":79}},{"path":"src/main/java/seedu/address/logic/parser/GradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ASSIGNMENT_SCORE;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.commands.GradeCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" * Parses input arguments and creates a new GradeCommand object","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"public class GradeCommandParser implements Parser\u003cGradeCommand\u003e {","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" * Parses the given arguments and constructs a GradeCommand object for execution.","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" * @param args A string of arguments representing the grade command.","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" * @return An GradeCommand for execution.","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" * @throws ParseException If the user input does not conform to the expected format","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" * or if score is a negative integer.","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" public GradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GRADE);","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" Index index;","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" Name name \u003d null;","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" int score \u003d -1;","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_GRADE);","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(MESSAGE_INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" if (argMultimap.getValue(PREFIX_GRADE).isPresent()) {","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" score \u003d ParserUtil.parseInt(argMultimap.getValue(PREFIX_GRADE).get());","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" if (score \u003c 0) {","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" return new GradeCommand(index, name, score);","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"Vanessamae23":71}},{"path":"src/main/java/seedu/address/logic/parser/MarkAttendanceParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" * Parses input arguments and creates a new {@code MarkAttendanceCommand} object","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceParser implements Parser\u003cMarkAttendanceCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" * Parses the given {@code String} of arguments in the context of the {@code MarkAttendanceCommand}","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" * and returns a {@code MarkAttendanceCommand} object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public MarkAttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" int tutorial \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" if (argMultimap.getValue(PREFIX_TUTORIAL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" tutorial \u003d ParserUtil.parseTutorial(argMultimap.getValue(PREFIX_TUTORIAL).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" if (!(tutorial \u003e\u003d 1 \u0026\u0026 tutorial \u003c\u003d 12)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" return new MarkAttendanceCommand(index, Index.fromOneBased(tutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":45}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" * Parses a {@code tutorial} into an {@code int} and returns it. Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial String value of week","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" * @return int value of week if valid","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the given {@code week} is invalid","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" public static int parseTutorial(String tutorial) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" String trimmedTutorial \u003d tutorial.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" if (!Attendance.isValidTutorial(trimmedTutorial)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" return Attendance.convertToIntegerWeek(trimmedTutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" * Parses the specified string into an integer value, removing leading and trailing whitespaces.","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" * @param number A string representing an integer. Must not be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" * @return The parsed integer value.","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" * @throws ParseException If the given {@code number} is not a valid integer format.","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" public static int parseInt(String number) throws ParseException {","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" requireNonNull(number);","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" String trimmedNumber \u003d number.trim();","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":" return Integer.parseInt(trimmedNumber);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" throw new ParseException(\"Invalid number format.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" public static TelegramHandle parseTelegramHandle(String telegramHandle) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" requireNonNull(telegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" String trimmedTelegramHandle \u003d telegramHandle.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegramHandle)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" return new TelegramHandle(trimmedTelegramHandle);","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"et-irl"},"content":" * Parses a {@code String tag} into a {@code Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"et-irl"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"et-irl"},"content":" * @throws ParseException if the given {@code comment} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"et-irl"},"content":" public static Comment parseComment(String comment) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"et-irl"},"content":" requireNonNull(comment);","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"et-irl"},"content":" String trimmedComment \u003d comment.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"et-irl"},"content":" if (!Comment.isValidCommentName(trimmedComment)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":156,"author":{"gitId":"et-irl"},"content":" throw new ParseException(Comment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"et-irl"},"content":" return new Comment(trimmedComment);","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" * Parses {@code Collection\u003cString\u003e comments} into a {@code Set\u003cComment\u003e}.","lastModifiedDate":"2023-10-10"},{"lineNumber":175,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"et-irl"},"content":" public static Set\u003cComment\u003e parseComments(Collection\u003cString\u003e comments) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":177,"author":{"gitId":"et-irl"},"content":" requireNonNull(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":178,"author":{"gitId":"et-irl"},"content":" final Set\u003cComment\u003e commentSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":179,"author":{"gitId":"et-irl"},"content":" for (String commentName : comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":180,"author":{"gitId":"et-irl"},"content":" commentSet.add(parseComment(commentName));","lastModifiedDate":"2023-10-10"},{"lineNumber":181,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":182,"author":{"gitId":"et-irl"},"content":" return commentSet;","lastModifiedDate":"2023-10-10"},{"lineNumber":183,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"et-irl":46,"Choonyan02":16,"Vanessamae23":7,"-":115}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkAttendanceParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TUTORIAL;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" * Parses input arguments and creates a new {@code UnMarkAttendanceCommand} object","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceParser implements Parser\u003cUnmarkAttendanceCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" * Parses the given {@code String} of arguments in the context of the {@code UnMarkAttendanceCommand}","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" * and returns a {@code UnMarkAttendanceCommand} object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public UnmarkAttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TUTORIAL);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" if (argMultimap.getValue(PREFIX_TUTORIAL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" week \u003d ParserUtil.parseTutorial(argMultimap.getValue(PREFIX_TUTORIAL).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" if (week \u003d\u003d 0) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" throw new ParseException(Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" return new UnmarkAttendanceCommand(index, Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":45}},{"path":"src/main/java/seedu/address/model/fields/Comment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a Comment in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidCommentName(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"public class Comment {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Comments can take any values, and it should not be blank\";","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" public final String commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * @param commentName A valid tag name.","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public Comment(String commentName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" requireNonNull(commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" checkArgument(isValidCommentName(commentName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" this.commentName \u003d commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" public static boolean isValidCommentName(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof Comment)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" Comment otherComment \u003d (Comment) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" return commentName.equals(otherComment.commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"et-irl"},"content":" return commentName.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"et-irl"},"content":" return \u0027[\u0027 + commentName + \u0027]\u0027;","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"et-irl":67}},{"path":"src/main/java/seedu/address/model/fields/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":1,"-":61}},{"path":"src/main/java/seedu/address/model/person/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a Person\u0027s assignment in the assignment book.","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAssignment(String)}","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"public class Assignment {","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":" \"Assignments should only contain alphanumeric characters \"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" + \"and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_INVALID_SCORE \u003d \"Assignment score should be between 0 and the maximum score\";","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" /*","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" public final Name name;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" private int score;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" private int maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" * Constructs an assignment with the given name and maximum score.","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" * @param name The name of the assignment. Must not be null and must satisfy the constraints.","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" * @param maxScore The maximum possible score for the assignment.","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" * @throws NullPointerException If the provided name is null.","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" * @throws IllegalArgumentException If the provided name does not satisfy the constraints.","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" public Assignment(Name name, int maxScore) {","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" checkArgument(isValidAssignment(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" public Assignment(Name name) {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" this(name, 100);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" public static boolean isValidAssignment(Name test) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" return test.toString().matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" * Checks if a score is greater than equal to 0 and less than equal to maximum score.","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" * @param testScore A integer representing the score to be given.","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" * @param maxScore A integer representing the maximum score for the specific assignment.","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" * @return `true` if score is valid; otherwise, `false`.","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" public static boolean isValidScore(int testScore, int maxScore) {","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" if (testScore \u003e maxScore || testScore \u003c 0) {","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" return false;","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" return true;","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" public int getScore() {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" return score;","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" public int getMaxScore() {","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":" return maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"et-irl"},"content":" public void setScore(int score) {","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" checkArgument(isValidScore(score, this.maxScore), MESSAGE_INVALID_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"et-irl"},"content":" this.score \u003d score;","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"et-irl"},"content":" public void setMaxScore(int maxScore) {","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" this.maxScore \u003d maxScore;","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" public String toString() {","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" return String.format(\"%s: %d/%d\", name, score, maxScore);","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" if (!(other instanceof Assignment)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" Assignment otherAssignment \u003d (Assignment) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" return name.equals(otherAssignment.name);","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"et-irl"},"content":" return name.hashCode();","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"et-irl":93,"Vanessamae23":17}},{"path":"src/main/java/seedu/address/model/person/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":" * The `Attendance` class represents a student\u0027s attendance record for a 12-week period.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":" * It provides methods for managing and querying attendance information.","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"public class Attendance {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":" public static final String TUTORIAL_ERROR_MSG \u003d \"Tutorial number is out of range, should be integer between 1-12\";","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":" public static final String ORIGINAL_ATD \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":" private int totalTut;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":" private final boolean[] attendanceList \u003d new boolean[12];","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" * Constructs an `Attendance` object from a comma-separated attendance string.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":" * @param atd A comma-separated string representing attendance for 1-12 weeks (e.g., \"0,1,0,1,0,1,0,1,0,1,0,1\").","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" public Attendance(String atd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" String[] atdArr \u003d atd.split(\",\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" this.totalTut \u003d atdArr.length;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" for (int i \u003d 0; i \u003c totalTut; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" if (atdArr[i].equals(\"1\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[i] \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" * Checks if a given week is a valid tutorial number (between 1 and 12).","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial A string representing a tutorial number.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" * @return `true` if the week is valid; otherwise, `false`.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public static boolean isValidTutorial(String tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" if (!tutorial.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" int intTutorial \u003d Integer.parseInt(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" if (intTutorial \u003c\u003d 0 || intTutorial \u003e 12) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" System.out.println(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" * Returns the number of weeks present based on the attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" * @return The count of weeks marked as present.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" public int getWeeksPresent() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" int count \u003d 0;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" for (int i \u003d 0; i \u003c 12; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" if (this.attendanceList[i]) {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" count++;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" return count;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" * Returns the total number of tutorial weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" * @return the total number of tutorial weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" public int getTotalWeeks() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" return this.totalTut;","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" * Marks a specific tutorial as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to mark as attended (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" public void markAttendance(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[tutorial] \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" * Unmarks a specific tutorial as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to unmark (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" public void unmarkAttendance(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" this.attendanceList[tutorial] \u003d false;","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" * Checks if a specific tutorial is marked as attended.","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial The week to check (1-12).","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" * @return `true` if the week is marked as attended; otherwise, `false`.","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"Choonyan02"},"content":" public boolean isMarkedWeek(int tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"Choonyan02"},"content":" return this.attendanceList[tutorial];","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" * Converts a tutorial represented as a string to an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" * @param tutorial A string representing a week number.","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" * @return The week number as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":" public static int convertToIntegerWeek(String tutorial) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":" return Integer.parseInt(tutorial);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"Choonyan02"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Choonyan02"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Choonyan02"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Choonyan02"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Choonyan02"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"Choonyan02"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"Choonyan02"},"content":" Attendance otherAttendance \u003d (Attendance) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"Choonyan02"},"content":" return toString().equals(otherAttendance.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Choonyan02"},"content":" * Converts attendanceList to a string.","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"Choonyan02"},"content":" * @return string version of attendancelist","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Choonyan02"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"Choonyan02"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"Choonyan02"},"content":" for (boolean atd : this.attendanceList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":" if (atd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":" s +\u003d \"1,\";","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Choonyan02"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" s +\u003d \"0,\";","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"Choonyan02"},"content":" return s.substring(0, 22);","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":140}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final Email NULL_EMAIL \u003d new Email(\"default@domain.com\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":3,"-":79}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":" * Represents a generic name, of a person or an address in the address book.","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"et-irl":2,"-":65}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cEmail\u003e email;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cTelegramHandle\u003e telegramHandle;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" private final Optional\u003cAttendance\u003e attendance;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" private final Set\u003cComment\u003e comments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" private final Set\u003cAssignment\u003e assignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" * Only name field must be present and not null.","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" public Person(Name name) {","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" requireAllNonNull(name);","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" this.phone \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" this.email \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" this.telegramHandle \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" this.attendance \u003d Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":" public Person(Name name, Optional\u003cPhone\u003e phone, Optional\u003cEmail\u003e email, Optional\u003cTelegramHandle\u003e telegramHandle,","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" Optional\u003cAttendance\u003e attendance,","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" Set\u003cTag\u003e tags, Set\u003cComment\u003e comments, Set\u003cAssignment\u003e assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" requireAllNonNull(name, phone, email, telegramHandle, tags);","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"et-irl"},"content":" this.comments.addAll(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"et-irl"},"content":" this.assignments.addAll(assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" return phone.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"lsyurea"},"content":" return email.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" public TelegramHandle getTelegramHandle() {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"lsyurea"},"content":" return telegramHandle.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" * Returns an immutable comment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" public Set\u003cComment\u003e getComments() {","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" return Collections.unmodifiableSet(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" * Returns an immutable assignment set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" public Set\u003cAssignment\u003e getAssignments() {","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" return Collections.unmodifiableSet(assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" * Gets the student\u0027s attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":" * @return The `Attendance` object representing the student\u0027s attendance for a specific period.","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Choonyan02"},"content":" public Attendance getAttendance() {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" return this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Choonyan02"},"content":" * Retrieves the number of weeks the student was present based on their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Choonyan02"},"content":" * @return The count of weeks for which the student was marked as present.","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Choonyan02"},"content":" public int getWeeksPresent() {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" Attendance stdatd \u003d this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" if (stdatd !\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" return stdatd.getWeeksPresent();","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" return 0;","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Choonyan02"},"content":" * Retrieves the total number of weeks in the attendance record period.","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Choonyan02"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"Choonyan02"},"content":" * @return The total number of weeks in the period, typically 12 weeks.","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Choonyan02"},"content":" public int getTotalWeeks() {","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" Attendance stdatd \u003d this.attendance.orElse(null);","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" if (stdatd !\u003d null) {","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" return stdatd.getTotalWeeks();","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"lsyurea"},"content":" return 0;","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 otherPerson.getTelegramHandle().equals(getTelegramHandle());","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" \u0026\u0026 telegramHandle.equals(otherPerson.telegramHandle)","lastModifiedDate":"2023-10-10"},{"lineNumber":171,"author":{"gitId":"Choonyan02"},"content":" \u0026\u0026 attendance.equals(otherPerson.attendance)","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 comments.equals(otherPerson.comments)","lastModifiedDate":"2023-10-23"},{"lineNumber":174,"author":{"gitId":"et-irl"},"content":" \u0026\u0026 assignments.equals(otherPerson.assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"et-irl"},"content":" return Objects.hash(name, phone, email, telegramHandle, attendance, tags, comments, assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"lsyurea"},"content":" .add(\"phone\", phone.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"lsyurea"},"content":" .add(\"email\", email.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"lsyurea"},"content":" .add(\"telegram\", telegramHandle.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"lsyurea"},"content":" .add(\"attendance\", attendance.orElse(null))","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"et-irl"},"content":" .add(\"comments\", comments)","lastModifiedDate":"2023-10-10"},{"lineNumber":193,"author":{"gitId":"et-irl"},"content":" .add(\"assignments\", assignments)","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":36,"et-irl":28,"Choonyan02":26,"Vanessamae23":6,"-":101}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final Phone DEFAULT_PHONE \u003d new Phone(\"91234567\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"-":60}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegramHandle(String)}","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TelegramHandle {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public static final TelegramHandle NULL_TELEGRAM_HANDLE \u003d new TelegramHandle(\"defaultHandle\");","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram Handle must \"","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" + \"use a-z, 0-9 and underscores. Minimum length is 5 characters\";","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" * The telegram handle uses a-z, 0-9 and underscores.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" * Minimum length is 5 characters.","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_]{5,32}$\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" public TelegramHandle(String address) {","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" checkArgument(isValidTelegramHandle(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" if (!(other instanceof TelegramHandle)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle otherTelegramHandle \u003d (TelegramHandle) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" return value.equals(otherTelegramHandle.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"lsyurea":2,"Vanessamae23":13,"-":53}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Alex Yeoh\"), Optional.of(new Phone(\"87438807\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"alexTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Is always cheerful\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Bernice Yu\"), Optional.of(new Phone(\"99272758\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"berniceyu@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"berniceTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Loves candy\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), Optional.of(new Phone(\"93210283\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"charlotte@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"charlotteTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Never comes on time\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"David Li\"), Optional.of(new Phone(\"91031282\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"lidavid@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"davidTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"et-irl"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Needs constant attention\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Irfan Ibrahim\"), Optional.of(new Phone(\"92492021\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"irfan@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"irfanTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"et-irl"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Pretty average\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" new Person(new Name(\"Roy Balakrishnan\"), Optional.of(new Phone(\"92624417\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Email(\"royb@example.com\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"lsyurea"},"content":" Optional.of(new TelegramHandle(\"royTelegram\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" Optional.of(new Attendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"et-irl"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" getCommentSet(\"Happy-go-lucky attitude\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" getAssignmentSet(\"lab1\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" * Returns a comment set containing the list of strings given.","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" public static Set\u003cComment\u003e getCommentSet(String... strings) {","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" .map(Comment::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" * Returns a assignment set containing the list of strings given.","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"et-irl"},"content":" public static Set\u003cAssignment\u003e getAssignmentSet(String... strings) {","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"et-irl"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"et-irl"},"content":" .map(Name::new)","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"et-irl"},"content":" .map(Assignment::new)","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"lsyurea":27,"et-irl":39,"Choonyan02":1,"Vanessamae23":2,"-":40}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAssignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":" * Jackson-friendly version of {@link Assignment}.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"class JsonAdaptedAssignment {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":" private final Name assignmentName;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code JsonAdaptedAssignment} with the given {@code assignmentName}.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" @JsonCreator","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedAssignment(String assignmentName) {","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" this.assignmentName \u003d new Name(assignmentName);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" * Converts a given {@code Assignment} into this class for Jackson use.","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedAssignment(Assignment source) {","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" assignmentName \u003d source.name;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" @JsonValue","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" public String getAssignmentName() {","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" return assignmentName.toString();","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Assignment} object.","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" public Assignment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" if (!Assignment.isValidAssignment(assignmentName)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" throw new IllegalValueException(Assignment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" return new Assignment(assignmentName);","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"et-irl":49}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedComment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"et-irl"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"et-irl"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"et-irl"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"et-irl"},"content":" * Jackson-friendly version of {@link Comment}.","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"et-irl"},"content":"class JsonAdaptedComment {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":" private final String commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":" * Constructs a {@code JsonAdaptedComment} with the given {@code commentName}.","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"et-irl"},"content":" @JsonCreator","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedComment(String commentName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"et-irl"},"content":" this.commentName \u003d commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"et-irl"},"content":" * Converts a given {@code Comment} into this class for Jackson use.","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"et-irl"},"content":" public JsonAdaptedComment(Comment source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"et-irl"},"content":" commentName \u003d source.commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"et-irl"},"content":" @JsonValue","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" public String getCommentName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" return commentName;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"et-irl"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Comment} object.","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":" public Comment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"et-irl"},"content":" if (!Comment.isValidCommentName(commentName)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"et-irl"},"content":" throw new IllegalValueException(Comment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"et-irl"},"content":" return new Comment(commentName);","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"et-irl":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" private final String telegram;","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" private final String attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"et-irl"},"content":" private final List\u003cJsonAdaptedComment\u003e comments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"et-irl"},"content":" private final List\u003cJsonAdaptedAssignment\u003e assignments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" @JsonProperty(\"attendance\") String attendance, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" telegram \u003d source.getTelegramHandle().value;","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d source.getAttendance().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" comments.addAll(source.getComments().stream()","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" .map(JsonAdaptedComment::new)","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"et-irl"},"content":" assignments.addAll(source.getAssignments().stream()","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"et-irl"},"content":" .map(JsonAdaptedAssignment::new)","lastModifiedDate":"2023-10-24"},{"lineNumber":75,"author":{"gitId":"et-irl"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":" final List\u003cComment\u003e personComments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"et-irl"},"content":" for (JsonAdaptedComment comment : comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"et-irl"},"content":" personComments.add(comment.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"et-irl"},"content":" final List\u003cAssignment\u003e personAssignments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"et-irl"},"content":" for (JsonAdaptedAssignment assignment : assignments) {","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"et-irl"},"content":" personAssignments.add(assignment.toModelType());","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle.class.getSimpleName()));","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" if (!TelegramHandle.isValidTelegramHandle(telegram)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalValueException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" final TelegramHandle modelTelegramHandle \u003d new TelegramHandle(telegram);","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"Choonyan02"},"content":" if (attendance \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Choonyan02"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Choonyan02"},"content":" Attendance.class.getSimpleName()));","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Choonyan02"},"content":" final Attendance modelAttendance \u003d new Attendance(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"et-irl"},"content":" final Set\u003cComment\u003e modelComments \u003d new HashSet\u003c\u003e(personComments);","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"et-irl"},"content":" final Set\u003cAssignment\u003e modelAssignments \u003d new HashSet\u003c\u003e(personAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"lsyurea"},"content":" return new Person(modelName, Optional.of(modelPhone), Optional.of(modelEmail),","lastModifiedDate":"2023-10-23"},{"lineNumber":142,"author":{"gitId":"lsyurea"},"content":" Optional.of(modelTelegramHandle), Optional.of(modelAttendance),","lastModifiedDate":"2023-10-23"},{"lineNumber":143,"author":{"gitId":"et-irl"},"content":" modelTags, modelComments, modelAssignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":144,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"lsyurea":4,"et-irl":24,"Choonyan02":10,"Vanessamae23":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new Tag(tagName);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"et-irl":1,"-":47}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.AssignmentCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t12-1.github.io/tp/\";","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" \"Here are the list of commands:\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" + \"a. ADD COMMAND\\n\\n\" + AddCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" + \"b. CLEAR COMMAND\\n\\n\" + ClearCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" + \"c. DELETE COMMAND\\n\\n\" + DeleteCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" + \"d. EDIT COMMAND\\n\\n\" + EditCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" + \"e. EXIT COMMAND\\n\\n\" + ExitCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" + \"f. FIND COMMAND\\n\\n\" + FindCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" + \"g. HELP COMMAND\\n\\n\" + HelpCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" + \"h. LIST COMMAND\\n\\n\" + ListCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" + \"i. MARK ATTENDANCE COMMAND\\n\\n\" + MarkAttendanceCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" + \"j. UNMARK ATTENDANCE COMMAND\\n\\n\" + UnmarkAttendanceCommand.MESSAGE_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" + \"k. ASSIGN COMMAND\\n\\n\" + AssignmentCommand.MESSAGE_USAGE + \"\\n\\n\";","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to our website: \" + USERGUIDE_URL;","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":125,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" * Opens the link to the user guide in the default browser.","lastModifiedDate":"2023-10-24"},{"lineNumber":128,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":129,"author":{"gitId":"lsyurea"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" private void openUrl() {","lastModifiedDate":"2023-10-24"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" UiUtil.open(USERGUIDE_URL);","lastModifiedDate":"2023-10-24"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"lsyurea":34,"-":99}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Hyperlink;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" private Label attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" @FXML","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" private Label telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" private Hyperlink telegramLink;","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"et-irl"},"content":" private FlowPane comments;","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"et-irl"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"et-irl"},"content":" private FlowPane assignments;","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" // Initialize the button visibility based on the presence of the Telegram handle","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" if (person.getTelegramHandle() !\u003d null) {","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" telegramLink.setVisible(true);","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" telegramLink.setVisible(false);","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" attendance.setText(String.format(\"Attendance: %d/%d\",","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" this.person.getWeeksPresent(), this.person.getTotalWeeks()));","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" phone.setText(\"Phone: \" + person.getPhone().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle.setText(\"Telegram Handle: \" + person.getTelegramHandle().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" email.setText(\"Email: \" + person.getEmail().value);","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":76,"author":{"gitId":"proto-aiken-13"},"content":" person.getComments().stream()","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"proto-aiken-13"},"content":" .sorted(Comparator.comparing(comment -\u003e comment.commentName))","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"et-irl"},"content":" .forEach(comment -\u003e comments.getChildren().add(new Label(comment.commentName)));","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"et-irl"},"content":" person.getAssignments().stream()","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"et-irl"},"content":" .sorted(Comparator.comparing(assignment -\u003e assignment.toString()))","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"et-irl"},"content":" .forEach(assignment -\u003e assignments.getChildren().add(new Label(assignment.toString())));","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" * Opens a link to the telegram handle of {@code Person}.","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"lsyurea"},"content":" @FXML","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" public void openLink(ActionEvent event) {","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" String telegramHandle \u003d person.getTelegramHandle().value;","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" if (telegramHandle !\u003d null \u0026\u0026 !telegramHandle.isEmpty()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" UiUtil.open(\"https://t.me/\" + telegramHandle);","lastModifiedDate":"2023-10-24"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" // Handle the case where there is no telegram handle","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" // You can show an error message or take any other action as needed","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"No Telegram handle available.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"lsyurea":2,"et-irl":8,"proto-aiken-13":2,"Choonyan02":4,"Vanessamae23":26,"-":56}},{"path":"src/main/java/seedu/address/ui/UiUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import java.awt.Desktop;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import java.net.URISyntaxException;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"/**","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":" * Utility class for UI components.","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"public class UiUtil {","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" private static final Logger logger \u003d Logger.getLogger(UiUtil.class.getName());","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" * Opens a link using the default web browser on the user\u0027s system.","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" * @param url The URL to be opened in the web browser.","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" public static void open(String url) {","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":" String os \u003d System.getProperty(\"os.name\").toLowerCase();","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" assert !os.equals(\"\");","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" logger.info(\"Opening link: \" + url);","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" try {","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" if (os.contains(\"win\") || os.contains(\"mac\")) {","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" Desktop.getDesktop().browse(new URI(url));","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" } else if (os.contains(\"nix\") || os.contains(\"nux\") || os.contains(\"linux\")) {","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" Runtime.getRuntime().exec(\"xdg-open \" + url);","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" } else {","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" // We do not support other operating systems.","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" } catch (IOException | URISyntaxException e) {","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"lsyurea":35}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0; /* Used in the default.html file */","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":" background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"proto-aiken-13"},"content":" -fx-control-inner-background: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":98,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":138,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 10%);","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: yellow;","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 25%);","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: derive(#4d4e4f, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 30%);","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 50%);","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"proto-aiken-13"},"content":".title-header {","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"proto-aiken-13"},"content":" -fx-font-family: npc_font; /* Use the custom font */","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"proto-aiken-13"},"content":" -fx-font-size: 100px;","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"proto-aiken-13"},"content":" -fx-alignment: center;","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-alignment: center;","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: derive(#1194f0, 20%);","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-radius: derive;","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #989ea6;","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #1194f0;","lastModifiedDate":"2023-10-20"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"proto-aiken-13"},"content":".console-prompt {","lastModifiedDate":"2023-10-20"},{"lineNumber":334,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: #e6e6e6;","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":336,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"proto-aiken-13"},"content":" -fx-background-color: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"proto-aiken-13"},"content":" -fx-text-fill: black;","lastModifiedDate":"2023-10-20"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"proto-aiken-13"},"content":"#resultDisplay {","lastModifiedDate":"2023-10-20"},{"lineNumber":353,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"proto-aiken-13"},"content":".content {","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":359,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":362,"author":{"gitId":"et-irl"},"content":"#tags, #comments, #assignments {","lastModifiedDate":"2023-10-24"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #3e7b91; /* Blue for tags */","lastModifiedDate":"2023-10-24"},{"lineNumber":370,"author":{"gitId":"et-irl"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-24"},{"lineNumber":371,"author":{"gitId":"et-irl"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":372,"author":{"gitId":"et-irl"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":373,"author":{"gitId":"et-irl"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-24"},{"lineNumber":374,"author":{"gitId":"et-irl"},"content":"}","lastModifiedDate":"2023-10-24"},{"lineNumber":375,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":376,"author":{"gitId":"et-irl"},"content":"#comments .label {","lastModifiedDate":"2023-10-24"},{"lineNumber":377,"author":{"gitId":"et-irl"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-24"},{"lineNumber":378,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #228B22; /* Dark Green for comments */","lastModifiedDate":"2023-10-24"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-24"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2023-10-24"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-24"},{"lineNumber":384,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":385,"author":{"gitId":"et-irl"},"content":"/* Styles for #assignments .label */","lastModifiedDate":"2023-10-24"},{"lineNumber":386,"author":{"gitId":"et-irl"},"content":"#assignments .label {","lastModifiedDate":"2023-10-24"},{"lineNumber":387,"author":{"gitId":"et-irl"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-24"},{"lineNumber":388,"author":{"gitId":"et-irl"},"content":" -fx-background-color: #FFA500; /* Dark Orange for assignments */","lastModifiedDate":"2023-10-24"},{"lineNumber":389,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":390,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":394,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":395,"author":{"gitId":"proto-aiken-13"},"content":"@font-face {","lastModifiedDate":"2023-10-20"},{"lineNumber":396,"author":{"gitId":"proto-aiken-13"},"content":" font-family: npc_font;","lastModifiedDate":"2023-10-20"},{"lineNumber":397,"author":{"gitId":"proto-aiken-13"},"content":" src: url(\"./fonts/coolvetica rg.ttf\");","lastModifiedDate":"2023-10-20"},{"lineNumber":398,"author":{"gitId":"proto-aiken-13"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":399,"author":{"gitId":"proto-aiken-13"},"content":"","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"et-irl":16,"proto-aiken-13":62,"-":321}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#openUrl\" text\u003d\"Go into the URL\"\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01"}],"authorContributionMap":{"lsyurea":1,"-":43}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.control.TitledPane?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"proto-aiken-13"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"proto-aiken-13"},"content":" title\u003d\"npc_track\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"proto-aiken-13"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: #1194f0;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"proto-aiken-13"},"content":" \u003cLabel text\u003d\"npc_track\" styleClass\u003d\"title-header\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"proto-aiken-13"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"proto-aiken-13"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"proto-aiken-13"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: white;\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"proto-aiken-13"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\" style\u003d\"-fx-background-color: #4d4e4f;","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"proto-aiken-13"},"content":" -fx-border-color: #4d4e4f;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"proto-aiken-13"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"proto-aiken-13"},"content":" style\u003d\"-fx-background-color: #4d4e4f;\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"proto-aiken-13"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"proto-aiken-13"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"proto-aiken-13":18,"-":46}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Hyperlink?\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" \u003cFlowPane fx:id\u003d\"assignments\" /\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"et-irl"},"content":" \u003cFlowPane fx:id\u003d\"comments\" /\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" \u003cLabel fx:id\u003d\"attendance\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$attendance\" /\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" \u003cHyperlink fx:id\u003d\"telegramLink\" text\u003d\"Contact\" onAction\u003d\"#openLink\" userData\u003d\"\\$telegramLink\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"et-irl":2,"Choonyan02":1,"Vanessamae23":11,"-":35}},{"path":"src/test/java/seedu/address/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2018-04-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(new AppParameters()));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(appParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(otherAppParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"lsyurea"},"content":" AppParameters current \u003d AppParameters.parse(parametersStub);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"lsyurea"},"content":" assertEquals(expected.hashCode(), current.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"lsyurea":8,"-":89}},{"path":"src/test/java/seedu/address/MainAppTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"public class MainAppTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":" public void constructor_mainApp_initialised() {","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":" MainApp main \u003d new MainApp();","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":" assert main !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":11}},{"path":"src/test/java/seedu/address/MainTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"public class MainTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":" public void constructor_mainTest_initialised() {","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":" Main main \u003d new Main();","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":" assert main !\u003d null;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":11}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":176,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":177,"author":{"gitId":"lsyurea"},"content":" public void getAddressBookTest() {","lastModifiedDate":"2023-10-24"},{"lineNumber":178,"author":{"gitId":"lsyurea"},"content":" assertEquals(model.getAddressBook(), logic.getAddressBook());","lastModifiedDate":"2023-10-24"},{"lineNumber":179,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":180,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":181,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":182,"author":{"gitId":"lsyurea"},"content":" public void getGuiSettingTest() {","lastModifiedDate":"2023-10-24"},{"lineNumber":183,"author":{"gitId":"lsyurea"},"content":" assertEquals(model.getGuiSettings(), logic.getGuiSettings());","lastModifiedDate":"2023-10-24"},{"lineNumber":184,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":185,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":186,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":187,"author":{"gitId":"lsyurea"},"content":" public void setGuiSettingTest() {","lastModifiedDate":"2023-10-24"},{"lineNumber":188,"author":{"gitId":"lsyurea"},"content":" logic.setGuiSettings(model.getGuiSettings());","lastModifiedDate":"2023-10-24"},{"lineNumber":189,"author":{"gitId":"lsyurea"},"content":" assertEquals(model.getGuiSettings(), logic.getGuiSettings());","lastModifiedDate":"2023-10-24"},{"lineNumber":190,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"lsyurea":16,"Vanessamae23":2,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"AmyTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"BobTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_TELEGRAM_ALICE \u003d \"aliceTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" public static final String VALID_ATTENDANCE_AMY \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" public static final String VALID_ATTENDANCE_BOB \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_ASSIGNMENT_NAME_AMY \u003d \"Lab1\";","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" public static final String VALID_ASSIGNMENT_NAME_BOB \u003d \"Lab1\";","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" // empty string not allowed for addresses","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Choonyan02":2,"Vanessamae23":14,"-":120}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Choonyan02":1,"-":184}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" + editPersonDescriptor.getTelegramHandle().orElse(null) + \", attendance\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" + editPersonDescriptor.getAttendance().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", comments\u003d\"","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getComments().orElse(null) + \", assignments\u003d\"","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"et-irl"},"content":" + editPersonDescriptor.getAssignments().orElse(null)","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"et-irl"},"content":" + \"}\";","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"et-irl":4,"Choonyan02":1,"Vanessamae23":4,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/GradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"public class GradeCommandTest {","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" private final Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private GradeCommand gradeCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e new GradeCommand(null, null, 0));","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" public void execute_allFieldsSpecified_success() {","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" // Create a sample person with no assignment","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" Person person \u003d new PersonBuilder().withAssignments(\"Lab1\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" // Index 1 corresponds to the sample person","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" Assignment sampleAssignment \u003d person.getAssignments().stream().findFirst().orElse(null);","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" int score \u003d 90;","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" // Create a new GradeCommand","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" gradeCommand \u003d new GradeCommand(Index.fromOneBased(index), sampleAssignment.name, score);","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d String.format(GradeCommand.ASSIGNMENT_GRADE_SUCCESS);","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" // Check if the person\u0027s assignment grade is edited","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" assertCommandSuccess(gradeCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" public void execute_validAssignmentScore_success() {","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" Name testName \u003d new Name(\"testAssignment\");","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" Person person \u003d new PersonBuilder().withAssignments(\"testAssignment\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand gradeCommand \u003d new GradeCommand(Index.fromOneBased(1), testName, 90);","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d String.format(GradeCommand.ASSIGNMENT_GRADE_SUCCESS);","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" // Check if the person\u0027s assignment grade is edited","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" assertCommandSuccess(gradeCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" public void equals_sameCommand_returnsTrue() {","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" Name name \u003d new Name(\"Lab1\");","lastModifiedDate":"2023-10-24"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" // Create a MarkAttendanceCommand with the same index and tutorial","lastModifiedDate":"2023-10-24"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand command1 \u003d new GradeCommand(Index.fromOneBased(1), name, 0);","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand command2 \u003d new GradeCommand(Index.fromOneBased(1), name, 0);","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" // They should be equal","lastModifiedDate":"2023-10-24"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" Name name \u003d new Name(\"Lab1\");","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" // Create two different MarkAttendanceCommands","lastModifiedDate":"2023-10-24"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand command1 \u003d new GradeCommand(Index.fromOneBased(1), name, 0);","lastModifiedDate":"2023-10-24"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand command2 \u003d new GradeCommand(Index.fromOneBased(1), name, 10);","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" // They should not be equal","lastModifiedDate":"2023-10-24"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-24"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" * but smaller than size of address book","lastModifiedDate":"2023-10-24"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" Name name \u003d new Name(\"Lab1\");","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand gradeCommand \u003d new GradeCommand(INDEX_SECOND_PERSON, name, 10);","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" assertCommandFailure(gradeCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" public void execute_noSuchAssignmentName_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" Name testName \u003d new Name(\"NoSuchAssignment\");","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":" Person person \u003d new PersonBuilder().withAssignments(\"Lab1\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-24"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-24"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand gradeCommand \u003d new GradeCommand(INDEX_FIRST_PERSON, testName, -1);","lastModifiedDate":"2023-10-24"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":" assertCommandFailure(gradeCommand, model, Messages.MESSAGE_INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-24"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" public void execute_invalidAssignmentScoreBelowZero_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":" Name testName \u003d new Name(\"Lab1\");","lastModifiedDate":"2023-10-24"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" Person person \u003d new PersonBuilder().withAssignments(\"Lab1\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-24"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-24"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand gradeCommand \u003d new GradeCommand(INDEX_FIRST_PERSON, testName, -1);","lastModifiedDate":"2023-10-24"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" assertCommandFailure(gradeCommand, model, Messages.MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" public void execute_invalidAssignmentScoreAboveMaxScore_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" Name testName \u003d new Name(\"Lab1\");","lastModifiedDate":"2023-10-24"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":" Person person \u003d new PersonBuilder().withAssignments(\"Lab1\").build();","lastModifiedDate":"2023-10-24"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-24"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-24"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" GradeCommand gradeCommand \u003d new GradeCommand(INDEX_FIRST_PERSON, testName, 101);","lastModifiedDate":"2023-10-24"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" assertCommandFailure(gradeCommand, model, Messages.MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"Vanessamae23":148}},{"path":"src/test/java/seedu/address/logic/commands/MarkAttendanceCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" private Model model;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" private MarkAttendanceCommand markAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" @BeforeEach","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" public void setUp() {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NullPointerException.class, () -\u003e new MarkAttendanceCommand(null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" public void execute_validIndexAndTutorial_markAttendanceSuccessful() {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" // Create a sample person with no attendance marked","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to the sample person","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand \u003d new MarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" // Execute the command","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand.execute(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" } catch (CommandException e) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" // Check if the person\u0027s attendance has been marked for week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" assertTrue(person.getAttendance().isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" // Index 1 is invalid in an empty model","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" markAttendanceCommand \u003d new MarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" // Execute the command and expect a CommandException","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" assertThrows(CommandException.class, () -\u003e markAttendanceCommand.execute(model));","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameCommand_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" // Create a MarkAttendanceCommand with the same index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command1 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command2 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" // They should be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" // Create two different MarkAttendanceCommands","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command1 \u003d new MarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command2 \u003d new MarkAttendanceCommand(Index.fromOneBased(2), Index.fromOneBased(2));","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" // They should not be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":94}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkAttendanceCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private Model model;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" private UnmarkAttendanceCommand unmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" @BeforeEach","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" public void setUp() {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NullPointerException.class, () -\u003e new UnmarkAttendanceCommand(null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" public void execute_validIndexAndTutorial_markAttendanceSuccessful() {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" // Create a sample person with no attendance marked","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Add the sample person to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" model.addPerson(person);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to the sample person","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand \u003d new UnmarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Execute the command","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand.execute(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" } catch (CommandException e) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" e.printStackTrace();","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" // Check if the person\u0027s attendance has been unmarked for week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" assertFalse(person.getAttendance().isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" // Index 1 is invalid in an empty model","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" int index \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" // Index 1 corresponds to week 1","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" int week \u003d 1;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" // Create a new MarkAttendanceCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" unmarkAttendanceCommand \u003d new UnmarkAttendanceCommand(Index.fromOneBased(index), Index.fromOneBased(week));","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" // Execute the command and expect a CommandException","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertThrows(CommandException.class, () -\u003e unmarkAttendanceCommand.execute(model));","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameCommand_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" // Create a MarkAttendanceCommand with the same index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command1 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command2 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" // They should be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" // Create two different MarkAttendanceCommands","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command1 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(1), Index.fromOneBased(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command2 \u003d new UnmarkAttendanceCommand(Index.fromOneBased(2), Index.fromOneBased(2));","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"Choonyan02"},"content":" // They should not be equal","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Choonyan02"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":93}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME,","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-11"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY,","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TELEGRAM_BOB,","lastModifiedDate":"2023-10-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC","lastModifiedDate":"2023-10-11"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2023-10-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2023-10-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-11"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":30,"-":155}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" public void parseCommand_markAttendance() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" MarkAttendanceCommand command \u003d (MarkAttendanceCommand) parser","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" .parseCommand(MarkAttendanceCommand.COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" t/1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" assertEquals(new MarkAttendanceCommand(INDEX_FIRST_PERSON, INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":" public void parseCommand_unmarkAttendance() throws Exception {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" UnmarkAttendanceCommand command \u003d (UnmarkAttendanceCommand) parser","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" .parseCommand(UnmarkAttendanceCommand.COMMAND_WORD","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" t/1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertEquals(new UnmarkAttendanceCommand(INDEX_FIRST_PERSON, INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Choonyan02":18,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, TelegramHandle.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TELEGRAM_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" + EMAIL_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-11"},{"lineNumber":184,"author":{"gitId":"Vanessamae23"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-11"},{"lineNumber":185,"author":{"gitId":"Vanessamae23"},"content":" + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"Vanessamae23"},"content":" + INVALID_PHONE_DESC + INVALID_TELEGRAM_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"Vanessamae23"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":19,"-":188}},{"path":"src/test/java/seedu/address/logic/parser/GradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-24"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-24"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ASSIGNMENT_SCORE;","lastModifiedDate":"2023-10-24"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-24"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.commands.GradeCommand;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"public class GradeCommandParserTest {","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GradeCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-24"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" private GradeCommandParser parser \u003d new GradeCommandParser();","lastModifiedDate":"2023-10-24"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" // Test case 1: Missing index (preamble)","lastModifiedDate":"2023-10-24"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" String userInput1 \u003d \"n/Lab1\";","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, userInput1, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-24"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" // Test case 2: Invalid name","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" String userInput2 \u003d \"1 n/L)(\u0026% g/sads\";","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, userInput2, MESSAGE_INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" // Test case 3: Invalid score","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" String userInput3 \u003d \"1 n/Lab1 g/sads\";","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, userInput3, MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" // Missing all index, assignment name and grade","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" // Invalid index (not a positive integer)","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"a n/Lab1 g/100\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" public void parse_invalidScore_failure() {","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" // Invalid score (not a valid integer)","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1 n/Lab1 g/a\", MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" // Invalid score (negative value less than zero)","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" assertParseFailure(parser, \"1 n/Lab1 g/-10\", MESSAGE_INVALID_ASSIGNMENT_SCORE);","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" // Valid input","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" assertParseSuccess(parser, \"1 n/Lab1 g/100\", new GradeCommand(Index.fromOneBased(1),","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" new Name(\"Lab1\"), 100));","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" // Valid input with different indices and tutorial","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" assertParseSuccess(parser, \"2 n/Tutorial1 g/10\", new GradeCommand(Index.fromOneBased(2),","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" new Name(\"Tutorial1\"), 10));","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-24"}],"authorContributionMap":{"Vanessamae23":66}},{"path":"src/test/java/seedu/address/logic/parser/MarkAttendanceParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.MarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"public class MarkAttendanceParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkAttendanceCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private MarkAttendanceParser parser \u003d new MarkAttendanceParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" // Test case 1: Missing index (preamble)","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" String userInput1 \u003d \"t/1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput1, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" // Test case 2: Missing week (tutorial)","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" String userInput2 \u003d \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput2, Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" // Missing both index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Invalid index (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"a t/1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidTutorial_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/a\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (0)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/0\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (greater than 12)","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/13\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" // Valid input","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"1 t/1\", new MarkAttendanceCommand(Index.fromOneBased(1),","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" // Valid input with different indices and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"2 t/5\", new MarkAttendanceCommand(Index.fromOneBased(2),","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(5)));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":62}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private static final String INVALID_TELEGRAM \u003d \" ---\";","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" private static final String INVALID_TUTORIAL \u003d \"invalid\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" private static final String VALID_TELEGRAM \u003d \"aliceTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_validTutorial_returnsInteger() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" // Valid tutorial input","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" String validTutorial \u003d \"3\";","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" int expectedTutorial \u003d 3;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" assertEquals(expectedTutorial, ParserUtil.parseTutorial(validTutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_validTutorialWithWhitespace_returnsInteger() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" // Valid tutorial input with leading/trailing whitespace","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" String validTutorial \u003d \" 8 \";","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" int expectedTutorial \u003d 8;","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":" assertEquals(expectedTutorial, ParserUtil.parseTutorial(validTutorial));","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" public void parseTutorial_invalidTutorial_throwsParseException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial input (non-numeric)","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTutorial(INVALID_TUTORIAL));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" public void parsetTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegramHandle((String) null));","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegramHandle(INVALID_TELEGRAM));","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(VALID_TELEGRAM));","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2023-10-11"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(addressWithWhitespace));","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"et-irl":1,"Choonyan02":23,"Vanessamae23":14,"-":181}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkAttendanceParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.commands.UnmarkAttendanceCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":"public class UnmarkAttendanceParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkAttendanceCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" private UnmarkAttendanceParser parser \u003d new UnmarkAttendanceParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" // Test case 1: Missing index (preamble)","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":" String userInput1 \u003d \"t/1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput1, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" // Test case 2: Missing week (tutorial)","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" String userInput2 \u003d \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, userInput2, Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":" // Missing both index and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" // Invalid index (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"a t/1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" public void parse_invalidTutorial_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (not a positive integer)","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/a\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (0)","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/0\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" // Invalid tutorial (greater than 12)","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" assertParseFailure(parser, \"1 t/13\", Attendance.TUTORIAL_ERROR_MSG);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" // Valid input","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"1 t/1\", new UnmarkAttendanceCommand(Index.fromOneBased(1),","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" // Valid input with different indices and tutorial","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" assertParseSuccess(parser, \"2 t/5\", new UnmarkAttendanceCommand(Index.fromOneBased(2),","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" Index.fromOneBased(5)));","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Choonyan02":62}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lsyurea"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook1 \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lsyurea"},"content":" assertTrue(addressBook.equals(addressBook1));","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodSameObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" assertTrue(addressBook.equals(addressBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodDifferentObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"lsyurea"},"content":" assertFalse(addressBook.equals(new Object()));","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" AddressBook addressBook1 \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" assertEquals(addressBook.hashCode(), addressBook1.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"lsyurea":25,"Vanessamae23":3,"-":105}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" public void equalsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" public void equalsDifferentObjectTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" userPrefs.equals(new Object());","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" userPrefs.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"lsyurea":17,"-":21}},{"path":"src/test/java/seedu/address/model/fields/CommentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.model.fields;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"public class CommentTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e new Comment(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":" public void constructor_invalidCommentName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" String invalidCommentName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Comment(invalidCommentName));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" public void isValidCommentName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" // null comment name","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e Comment.isValidCommentName(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" assertTrue(comment.equals(comment));","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":" Comment commentCopy \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" assertTrue(comment.equals(commentCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" // different comment -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" Comment differentComment \u003d new Comment(\"different\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" assertFalse(comment.equals(differentComment));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.hashCode(), comment.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"lsyurea"},"content":" public void toStringTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.toString(), \"[test]\");","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":60}},{"path":"src/test/java/seedu/address/model/person/AttendanceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Choonyan02"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Choonyan02"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Choonyan02"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"public class AttendanceTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Choonyan02"},"content":" public void constructor_validAttendanceString_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(\"0,1,0,1,0,1,0,1,0,1,0,1\");","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Choonyan02"},"content":" assertEquals(12, attendance.getTotalWeeks());","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Choonyan02"},"content":" assertEquals(6, attendance.getWeeksPresent());","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Choonyan02"},"content":" public void isValidWeek_validWeekNumber_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Choonyan02"},"content":" assertTrue(Attendance.isValidTutorial(\"1\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Choonyan02"},"content":" assertTrue(Attendance.isValidTutorial(\"12\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Choonyan02"},"content":" public void isValidWeek_invalidWeekNumber_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"0\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"13\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Choonyan02"},"content":" assertFalse(Attendance.isValidTutorial(\"invalid\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Choonyan02"},"content":" public void markAttendance_validWeek_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Choonyan02"},"content":" attendance.markAttendance(1);","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" public void unmarkAttendance_validWeek_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Choonyan02"},"content":" attendance.unmarkAttendance(1);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" public void isMarkedWeek_markedWeek_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(\"1,0,0,0,0,0,0,0,0,0,0,0\");","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.isMarkedWeek(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Choonyan02"},"content":" public void isMarkedWeek_unmarkedWeek_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance.isMarkedWeek(1));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Choonyan02"},"content":" public void convertToIntegerWeek_validWeekString_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Choonyan02"},"content":" int week \u003d Attendance.convertToIntegerWeek(\"5\");","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" assertEquals(5, week);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Choonyan02"},"content":" public void convertToIntegerWeek_invalidWeekString_throwsException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" assertThrows(NumberFormatException.class, () -\u003e Attendance.convertToIntegerWeek(\"invalid\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance.equals(attendance));","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Choonyan02"},"content":" public void equals_sameValues_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance1 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance2 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Choonyan02"},"content":" assertTrue(attendance1.equals(attendance2));","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Choonyan02"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Choonyan02"},"content":" public void equals_differentValues_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance1 \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Choonyan02"},"content":" Attendance attendance2 \u003d new Attendance(\"1,0,0,0,0,0,0,0,0,0,0,0\");","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Choonyan02"},"content":" assertFalse(attendance1.equals(attendance2));","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":" public void equals_differentTypes_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" assertFalse(attendance.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"lsyurea"},"content":" Attendance attendance \u003d new Attendance(Attendance.ORIGINAL_ATD);","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"lsyurea"},"content":" assertEquals(attendance.hashCode(), attendance.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"lsyurea":11,"Choonyan02":87}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"lsyurea"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"lsyurea"},"content":" assertTrue(email.hashCode() \u003d\u003d email.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":6,"-":88}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" // Keywords match phone, email and telegram, but does not match name","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"alice@email.com\").withTelegram(\"aliceTelegram\").build()));","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Vanessamae23":2,"-":83}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" assertTrue(name.hashCode() \u003d\u003d name.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":6,"-":60}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" // same name and telegram, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", telegram\u003d\" + ALICE.getTelegramHandle()","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" + \", attendance\u003d\" + ALICE.getAttendance() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"et-irl"},"content":" + \", comments\u003d\" + ALICE.getComments()","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"et-irl"},"content":" + \", assignments\u003d\" + ALICE.getAssignments()","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"et-irl"},"content":" + \"}\";","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.hashCode(), person.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"lsyurea"},"content":" public void getAttendanceTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getAttendance(), ALICE.getAttendance());","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"lsyurea"},"content":" public void getCommentsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getComments(), ALICE.getComments());","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"lsyurea"},"content":" public void getTagsTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTags(), ALICE.getTags());","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" public void getNameTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getName(), ALICE.getName());","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"lsyurea"},"content":" public void getPhoneTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getPhone(), ALICE.getPhone());","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"lsyurea"},"content":" public void getEmailTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getEmail(), ALICE.getEmail());","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"lsyurea"},"content":" public void getTelegramHandleTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTelegramHandle(), ALICE.getTelegramHandle());","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"lsyurea"},"content":" public void getWeeksPresentTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getWeeksPresent(), ALICE.getWeeksPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"lsyurea"},"content":" public void getTotalWeeksTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"lsyurea"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"lsyurea"},"content":" assertEquals(person.getTotalWeeks(), ALICE.getTotalWeeks());","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"lsyurea":59,"et-irl":3,"Choonyan02":1,"Vanessamae23":7,"-":93}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"lsyurea"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"lsyurea"},"content":" assertTrue(phone.hashCode() \u003d\u003d phone.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"lsyurea"},"content":" public void toStringTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"lsyurea"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"lsyurea"},"content":" assertTrue(phone.toString().equals(\"999\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"lsyurea":12,"-":60}},{"path":"src/test/java/seedu/address/model/person/TelegramHandleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"public class TelegramHandleTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e new TelegramHandle(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" String invalidTelegramHandle \u003d \"\";","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TelegramHandle(invalidTelegramHandle));","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" public void isValidTelegramHandle() {","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" // null address","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" assertThrows(NullPointerException.class, () -\u003e TelegramHandle.isValidTelegramHandle(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" // invalid addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"1234\")); // less than 5","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"%\u0026@#\u0026@\")); // contains invalid symbols","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" // valid addresses","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"mamamia\"));","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"12345\")); // 5 digits","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"longtelegramhandle\")); // long telegram handle","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" TelegramHandle telegramHandle \u003d new TelegramHandle(\"validtelegramhandle\");","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(telegramHandle.equals(new TelegramHandle(\"validtelegramhandle\")));","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" assertTrue(telegramHandle.equals(telegramHandle));","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(5.0f));","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" assertFalse(telegramHandle.equals(new TelegramHandle(\"othervalidtelegramHandle\")));","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Vanessamae23":58}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_ALICE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodSameObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList, uniquePersonList);","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"lsyurea"},"content":" public void equalsMethodDifferentObject() {","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"lsyurea"},"content":" assertFalse(uniquePersonList.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"lsyurea"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList.hashCode(), uniquePersonList.hashCode());","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"lsyurea"},"content":" public void iteratorMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"lsyurea"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"lsyurea"},"content":" assertEquals(uniquePersonList.iterator().next(), ALICE);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"lsyurea":20,"Vanessamae23":3,"-":172}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" Tag tag \u003d new Tag(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" Tag tagCopy \u003d new Tag(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" assertTrue(tag.equals(tagCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" Tag differentTag \u003d new Tag(\"different\");","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":" assertFalse(tag.equals(differentTag));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"lsyurea":23,"-":27}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.model.util;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" private Person[] testerSample \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" public void getSamplePersons() {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":" assertNotEquals(SampleDataUtil.getSamplePersons(), testerSample);","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" public void getSampleAddressBook() {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" AddressBook addr \u003d new AddressBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" for (Person p : testerSample) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":" addr.addPerson(p);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook(), addr);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" public void getCommentSet() {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" assertEquals(SampleDataUtil.getCommentSet(), SampleDataUtil.getCommentSet());","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":33}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedCommentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"lsyurea"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"lsyurea"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"lsyurea"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"lsyurea"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"lsyurea"},"content":"public class JsonAdaptedCommentTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"lsyurea"},"content":" public void getCommentNameTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"lsyurea"},"content":" assertEquals(comment.getCommentName(), \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"lsyurea"},"content":" public void toModelTypeTest() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"lsyurea"},"content":" Comment commentModel \u003d comment.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"lsyurea"},"content":" assertEquals(commentModel.commentName, \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"lsyurea"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"lsyurea"},"content":" assertThrows(NullPointerException.class, () -\u003e new Comment(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"lsyurea"},"content":" public void constructor_invalidCommentName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"lsyurea"},"content":" String invalidCommentName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Comment(invalidCommentName));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"lsyurea"},"content":" public void constructor_validCommentName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"lsyurea"},"content":" Comment comment \u003d new Comment(\"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment jsonAdaptedComment \u003d new JsonAdaptedComment(comment);","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"lsyurea"},"content":" assertEquals(jsonAdaptedComment.getCommentName(), \"test\");","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"lsyurea"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"lsyurea"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"lsyurea"},"content":" public void toModelType_illegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"lsyurea"},"content":" JsonAdaptedComment comment \u003d new JsonAdaptedComment(\"\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"lsyurea"},"content":" assertThrows(IllegalValueException.class, () -\u003e comment.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"lsyurea"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"lsyurea"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"lsyurea":48}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \" +2319*\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d BENSON.getTelegramHandle().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" private static final String VALID_ATTENDANCE \u003d BENSON.getAttendance().toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"Choonyan02"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TELEGRAM_HANDLE, VALID_ATTENDANCE,","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d TelegramHandle.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" public void toModelType_nullTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" VALID_ATTENDANCE, VALID_TAGS);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TelegramHandle.class.getSimpleName());","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"Choonyan02"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":" VALID_TELEGRAM_HANDLE, VALID_ATTENDANCE, invalidTags);","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Choonyan02":8,"Vanessamae23":17,"-":95}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" descriptor.setTelegramHandle(person.getTelegramHandle());","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" descriptor.setTelegramHandle(new TelegramHandle(telegram));","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":4,"-":82}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"lsyurea"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Comment;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.person.Assignment;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"Choonyan02"},"content":"import seedu.address.model.person.Attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"amyTelegram\";","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"Choonyan02"},"content":" public static final String DEFAULT_ATTENDANCE \u003d \"0,0,0,0,0,0,0,0,0,0,0,0\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Choonyan02"},"content":" private Attendance attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"et-irl"},"content":" private Set\u003cComment\u003e comments;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"et-irl"},"content":" private Set\u003cAssignment\u003e assignments;","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle \u003d new TelegramHandle(DEFAULT_TELEGRAM);","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d new Attendance(DEFAULT_ATTENDANCE);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"et-irl"},"content":" comments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"et-irl"},"content":" assignments \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" telegramHandle \u003d personToCopy.getTelegramHandle();","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Choonyan02"},"content":" attendance \u003d personToCopy.getAttendance();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"et-irl"},"content":" comments \u003d new HashSet\u003c\u003e(personToCopy.getComments());","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"et-irl"},"content":" assignments \u003d new HashSet\u003c\u003e(personToCopy.getAssignments());","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"et-irl"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"et-irl"},"content":" * Parses the {@code comments} into a {@code Set\u003cComment\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"et-irl"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"et-irl"},"content":" public PersonBuilder withComments(String ... comments) {","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"et-irl"},"content":" this.comments \u003d SampleDataUtil.getCommentSet(comments);","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"et-irl"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"et-irl"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"et-irl"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" this.telegramHandle \u003d new TelegramHandle(telegram);","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"Choonyan02"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Choonyan02"},"content":" * Sets the {@code Attendance} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"Choonyan02"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Choonyan02"},"content":" public PersonBuilder withAttendance(String attendance) {","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Choonyan02"},"content":" this.attendance \u003d new Attendance(attendance);","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"Choonyan02"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Choonyan02"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Choonyan02"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" * Sets the {@code Assignment} of the {@code Person} that we are building.","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" public PersonBuilder withAssignments(String... assignmentNames) {","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" this.assignments \u003d SampleDataUtil.getAssignmentSet(assignmentNames);","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":130,"author":{"gitId":"lsyurea"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"lsyurea"},"content":" * Builds a person with the given parameters.","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"lsyurea"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":134,"author":{"gitId":"lsyurea"},"content":" return new Person(name, Optional.of(phone), Optional.of(email), Optional.of(telegramHandle),","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"lsyurea"},"content":" Optional.of(attendance), tags, comments, assignments);","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"lsyurea":6,"et-irl":17,"Choonyan02":13,"Vanessamae23":12,"-":90}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"et-irl"},"content":"import seedu.address.model.fields.Tag;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" sb.append(PREFIX_TELEGRAM_HANDLE + person.getTelegramHandle().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" descriptor.getTelegramHandle().ifPresent(address -\u003e sb.append(PREFIX_TELEGRAM_HANDLE)","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" .append(address.value).append(\" \"));","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"et-irl":1,"Vanessamae23":4,"-":58}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Choonyan02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(\"aliceTelegram\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"Choonyan02"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"et-irl"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"et-irl"},"content":" .build();","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" .withTelegram(\"bensonTelegram\")","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"Choonyan02"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Choonyan02"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"heinz@example.com\").withTelegram(\"carlTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"cornelia@example.com\").withTelegram(\"danielTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"werner@example.com\").withTelegram(\"micheganTelegram\")","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"lydia@example.com\").withTelegram(\"littletokyo\")","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"anna@example.com\").withTelegram(\"4thstreet\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"stefan@example.com\").withTelegram(\"littleindia\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\")","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(\"hans@example.com\").withTelegram(\"chicagoave\").withAttendance(\"0,0,0,0,0,0,0,0,0,0,0,0\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(VALID_EMAIL_AMY).withTelegram(VALID_TELEGRAM_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(VALID_ATTENDANCE_AMY).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" .withEmail(VALID_EMAIL_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"Choonyan02"},"content":" .withAttendance(VALID_ATTENDANCE_BOB).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" private TypicalPersons() {","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" } // prevents instantiation","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"et-irl":2,"Choonyan02":11,"Vanessamae23":17,"-":60}}] diff --git a/AY2324S1-CS2103T-T12-1_tp_master/commits.json b/AY2324S1-CS2103T-T12-1_tp_master/commits.json index 558e70a7..857a1429 100644 --- a/AY2324S1-CS2103T-T12-1_tp_master/commits.json +++ b/AY2324S1-CS2103T-T12-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lsyurea":[{"date":"2023-09-24","commitResults":[{"hash":"668e1426767d6c1db540c557c038b821b9bba7ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T12-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"fb1050ac95caeadad05d45c0e3c5fef7007bbdc8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added the glossary and non-functional requirements.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}}]},{"date":"2023-10-04","commitResults":[{"hash":"c756cd358587954edf87a33ab10be85a2daf8398","isMergeCommit":true,"messageTitle":"Merge pull request #35 from et-irl/fix-PPP-naming","messageBody":"Fix PPP names","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"4abdfd14a6f26f218b798852babbd72bdd9bcd64","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Vanessamae23/update-user-guide","messageBody":"Update and remove ab3 in the user guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"940c40117831d3bfa093eba76af5502b51df504e","isMergeCommit":false,"messageTitle":"Create CommentTest.java","messageBody":"Created testing for Comment.\n","fileTypesAndContributionMap":{"test-code":{"insertions":58,"deletions":0}}},{"hash":"33691e147865fa8dfde8b0d4d468ad74a973f998","isMergeCommit":false,"messageTitle":"Update AttendanceTest.java","messageBody":"Added testing for different types and hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"eb0797551d3b088e035ecdf96b058be9cabd38d9","isMergeCommit":false,"messageTitle":"Update EmailTest.java","messageBody":"Added testing for hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"5a62234b57c7a4e9edbc3947ef4121f41dc0e954","isMergeCommit":false,"messageTitle":"Update NameTest.java","messageBody":"Added testing for hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"625412a2fc23103ed3d7b8bc4da7e91b335a8f0d","isMergeCommit":false,"messageTitle":"Update PersonTest.java","messageBody":"Added testing for hashcode, get attendance, getcomments, gettags, getname, getphone, getemail, getweekspresent and gettotalweeks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}},{"hash":"7ed47f5c7280b6a4f9222276ce16231636ab5d50","isMergeCommit":false,"messageTitle":"Update PhoneTest.java","messageBody":"Added testing for hashcode and tostring.\n","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"270cd6881c9f96d7f21c961f587cb161e1409e4e","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Added testing for hashcode, equals method and iteratormethod.\n","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"5788b4720b83819e016ae171f0936a28c60c3096","isMergeCommit":false,"messageTitle":"Update TagTest.java","messageBody":"Added testing for equal method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":1}}},{"hash":"f7509362cb2fd1de74c9b6a276b7f93e195cb0ae","isMergeCommit":false,"messageTitle":"Update AddressBookTest.java","messageBody":"Do testing for SampleData.\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"4cca2815d8dcf7eb6b06b85c2b2ad330db149f9a","isMergeCommit":false,"messageTitle":"Update UserPrefsTest.java","messageBody":"Do testing for equals and hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"285076bd0027425e155abdd3bc780e64d060f9ec","isMergeCommit":false,"messageTitle":"Create SampleDataUtilTest.java","messageBody":"Do testing for sampledata.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"ecb1a53c5524d04da86d4382370ad56b33e0fe76","isMergeCommit":false,"messageTitle":"Update CommentTest.java","messageBody":"Conform to checkstyle spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"cea78e4537f6eb77ac377595c2d6747387eb15fc","isMergeCommit":false,"messageTitle":"Update TagTest.java","messageBody":"Conform to checkstyle spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"c35bea4c71b131baaf65a8ef119e636deefd2475","isMergeCommit":false,"messageTitle":"Update SampleDataUtilTest.java","messageBody":"Conform to checkstyle import order and spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"1c80d6d069009b5389c0126078f3bbe7a9537753","isMergeCommit":true,"messageTitle":"Merge pull request #65 from lsyurea/testing-branch2","messageBody":"Update Test Coverage","fileTypesAndContributionMap":{}},{"hash":"aa7840f877667473aba5e5398c7e80c20455b720","isMergeCommit":false,"messageTitle":"Update AttendanceTest.java","messageBody":"Created test cases for modeltype and constructors.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"c37d47c4d6118bd4ef4e9ba0404e0fc39555dca3","isMergeCommit":false,"messageTitle":"Update EmailTest.java","messageBody":"Refactor testing methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"b49af319171f2a1a60261482599e8829b7a866ac","isMergeCommit":false,"messageTitle":"Update PersonTest.java","messageBody":"Refactor testing method naming convention.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"75e04e6af3ba3b7d4e6130d90efebab2eb9b3cd5","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Refactor testing method naming convention.\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"5676eefa446f5af93d188a3659da8814a55c871b","isMergeCommit":false,"messageTitle":"Create JsonAdaptedCommentTest.java","messageBody":"Created test cases for JsonAdaptedComment for constructor, modeltype.\n","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"072c65d0c2e96dac16287e31ce06c1cc25b9c291","isMergeCommit":false,"messageTitle":"Update AppParametersTest.java","messageBody":"Added testing for initialisation of main class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":4}}},{"hash":"32071ad430a5e837c4d69e36d93a5533a859e6fb","isMergeCommit":false,"messageTitle":"Create MainAppTest.java","messageBody":"Added testing for initialisaiton of main application class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"bdaf90e552e40b3106d8eebd7cff05dd31cd75d2","isMergeCommit":false,"messageTitle":"Create MainTest.java","messageBody":"Added testing for main.class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"07d9bee5e8b5fb3151b9542b813f2ce6282ebae0","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"Updated the checkstyles for the method names.\n","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":26}}},{"hash":"81f9fbc43f2064f5f7b38d80e7bf8477fe383efa","isMergeCommit":false,"messageTitle":"Update DarkTheme.css","messageBody":"Changed background color and annotated key components.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":17}}}]},{"date":"2023-10-20","commitResults":[{"hash":"b54091fe88d54b8fd2379bfac4f9a8682860d606","isMergeCommit":true,"messageTitle":"Merge pull request #68 from proto-aiken-13/branch-Ui-v1.2b","messageBody":"Amend the UI fxml and css files to create a more complete UI.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"2a3bb778e9840d52cfdf83844eea4029a597c7c0","isMergeCommit":true,"messageTitle":"Merge pull request #70 from Vanessamae23/add-telegram-link","messageBody":"Added telegram link.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"c97506efa52f5961da75bbd5e9226a85377ad136","isMergeCommit":false,"messageTitle":"Update PersonBuilder.java","messageBody":"Use of optionals to make commands optional.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"f76cd1205c93ebede762ed27cf142259f9fd05fc","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest.java","messageBody":"Remove unnecessary optional prefix checks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"ab3158cf27f5d7d899d940ddc2f49b521437e9e8","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson.java","messageBody":"Updated constructor to take in optional model fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"3e6ffa5b25a19176c168c6eb8cd4c0e3a1848e14","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"Updated sample data to follow the current structure of using optionals.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":23}}},{"hash":"97edbf9f53d55ac554a28bfbc148cdbf30fc273e","isMergeCommit":false,"messageTitle":"Update TelegramHandle.java","messageBody":"Added default telegram handle.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"27621128e50c6639536f553384c05c9060e9fa4d","isMergeCommit":false,"messageTitle":"Update Phone.java","messageBody":"Added default phone field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"c11f538bc0fdef159f3c644875906921a6d590ac","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"Updated optional fields to use optional.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":15}}},{"hash":"d9afc5285191c21e23789b334056a9747dd86c91","isMergeCommit":false,"messageTitle":"Update Email.java","messageBody":"Updated default email domain\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"85a86b0a9377a4243e57534363a28eb5a9d62d24","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"Fill in the optional fields with default fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"b6943d3e9fa37d17b69d9047ab467048889c3da7","isMergeCommit":false,"messageTitle":"Update UnmarkAttendanceCommand.java","messageBody":"Use of optionals in the fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"c35ce1d8d724655f996634ee72e07982f23ed8b5","isMergeCommit":false,"messageTitle":"Update MarkAttendanceCommand.java","messageBody":"Use of optionals in the optional fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"2ff91bd764440b39fc55daf4213ce83508805514","isMergeCommit":false,"messageTitle":"Update EditCommand.java","messageBody":"Use of optionals in the fields of Person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"5b491b690243ba980a78f6f8157d424a1b19cc7b","isMergeCommit":false,"messageTitle":"Update AssignmentCommand.java","messageBody":"Use of optionals in the fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"c70d5163ce53547abc03447cc50dd2ae0ab99ec1","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"Updated message_usage to give example of which fields to fill.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"27291e0fddfa1a0a90c0bb205624231751091dca","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Updated my contribution page.\n","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":3}}},{"hash":"00c4d8991f567d1fac9e3babd66a2f484b5a7000","isMergeCommit":false,"messageTitle":"Update checkstyles","messageBody":"Updated checkstyles to pass CLI checks.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}},{"hash":"6007a300e61f787a0339bc2c89c5b1985dfb1317","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Included contributions.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5a11284f04069b27b2b94cbebe41205551026412","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"Added [] to show optionality.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ddcfe84f70319d64d4215afcdbe0fc783aebcda3","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"Returns 0 instead of -1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-24","commitResults":[{"hash":"a38525c8e9f95822c01e6d80df37cc523475ed17","isMergeCommit":true,"messageTitle":"Merge pull request #76 from et-irl/telegram-linux","messageBody":"Fix crashing bug in Linux.","fileTypesAndContributionMap":{}},{"hash":"8b5a5042dceddfb4cd84bfaea713882278df2640","isMergeCommit":false,"messageTitle":"Update HelpWindow.java","messageBody":"Changed the link to our user guide instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e36c06b792d3044efa3d07c669a51878626f817","isMergeCommit":false,"messageTitle":"Update Message Usage","messageBody":"Updated the commands of message usage and show it when help is called.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":5}}},{"hash":"54048d03ab2cb2d2dda7dbf4705463bc2bc17fae","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Updated my code contribution.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":17}}},{"hash":"9abc03fd9901dcd08d2a82b7c5f95da4437a598a","isMergeCommit":false,"messageTitle":"Update HelpCommand.java","messageBody":"Adhered to checkstyles.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"24f68950a290265b6be432f08b45a0d17e29b808","isMergeCommit":false,"messageTitle":"Update help documentation","messageBody":"Switched the messages to appear in the UI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15}}},{"hash":"70545a3214217ac369ebd566920840e9fd47b6be","isMergeCommit":false,"messageTitle":"Update HelpWindow.java","messageBody":"Updated import to adhere to checkstyles.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"101e165662a886d2a6325ea402a6d5b343618719","isMergeCommit":true,"messageTitle":"Merge pull request #81 from et-irl/tag-colours","messageBody":"Add tag colours and distinguish the different types of information.","fileTypesAndContributionMap":{}},{"hash":"b5c961c6a982a39cc85ac4178700b5f9e838da65","isMergeCommit":true,"messageTitle":"Merge pull request #83 from et-irl/bug-memory-persistence","messageBody":"Fixed bug where comments and assignments are forgotten upon closing.","fileTypesAndContributionMap":{}},{"hash":"ae2ebc4ef9cf0c0f98acc006a7eb90cefd9d6f59","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Updated edit use case and add person use case to reflect optional fields.\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}}]}],"et-irl":[{"date":"2023-10-03","commitResults":[{"hash":"0828e7de8117b7e66dcfcf3f0e74575128f53134","isMergeCommit":false,"messageTitle":"Add a skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":1}}},{"hash":"6abe975131649232e04111ac86a544a8e27120dc","isMergeCommit":false,"messageTitle":"Add use cases to the developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":1}}},{"hash":"751cf06e943d2bebcd976b29a929929b3f40e8c9","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vanessamae23/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"d0b7df39205a1ab75c5b2b113ca963c49ebb16eb","isMergeCommit":true,"messageTitle":"Merge pull request #32 from proto-aiken-13/branch-a-ReadMeUi","messageBody":"Update the Ui.png","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"8604597b2f8e2639db283e773cfb4f441a616f3e","isMergeCommit":true,"messageTitle":"Merge pull request #33 from lsyurea/developer-guide-patch","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"2c878c195e70fe875ab9ae892c496ed5bf98cd98","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Vanessamae23/add-vanessa-pic","messageBody":"Add picture and update markdown","fileTypesAndContributionMap":{}},{"hash":"211d9ec0d3ae21a0518db59ff9bbb9732227f34d","isMergeCommit":false,"messageTitle":"Fix PPP names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2023-10-05","commitResults":[{"hash":"a6a0a68eec6005c337be38f95e2014acf2fd922c","isMergeCommit":false,"messageTitle":"Point CI banners to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfd001499aa4bbb23ec09ce7c620901eea37ac2d","isMergeCommit":false,"messageTitle":"Remove traces of AB3 in README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"61c1da02288c229e1eb446b652e91debea744916","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":28}}}]},{"date":"2023-10-06","commitResults":[{"hash":"120c2c7c9688d5396cb7278cd1e258b91bbe15e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-a-miguelppp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9cc7cdd47be48b36988da31cc29ebf16ab09242d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from proto-aiken-13/branch-a-miguelppp","messageBody":"Update miguel.md","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"220ee2d69346cac7b2a53f7fe9622f5fca6dc24c","isMergeCommit":false,"messageTitle":"Rename package tag to fields","messageBody":"The tag package name is too specialised for only one purpose.\n\nTo accommodate for features such as comments, we need to generalise\nthe package name.\n\nLet\u0027s change the name of the package to be more generic.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":8},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":7}}},{"hash":"a103010d4c668c6864d44ae1154a2341224367da","isMergeCommit":false,"messageTitle":"Add the Comment field to Person","messageBody":"As a teaching assistant, we would like to remember small details\nabout each person.\n\nAs it stands, there is no field associated with people to remember\nlittle details.\n\nLet\u0027s add this field!\n","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":17},"test-code":{"insertions":15,"deletions":2}}}]},{"date":"2023-10-11","commitResults":[{"hash":"71768b0be5a12326bd597063728491dc2bc51d3d","isMergeCommit":false,"messageTitle":"Update the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"367aeea4871f555a11b72b0f049be3ac24318020","isMergeCommit":false,"messageTitle":"Modify edit command to edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":4},"test-code":{"insertions":2,"deletions":1}}},{"hash":"ffb1b04550631287d1737bc37fc338318dd648bb","isMergeCommit":false,"messageTitle":"Update the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":4}}}]},{"date":"2023-10-13","commitResults":[{"hash":"163e7b1f1f1330e663fe524b580ec7f87b6f95bb","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Vanessamae23/change-address-to-telegram","messageBody":"Change address to telegram","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"a5e1c3815f53d00545c90c3e48f762715ed5f5c3","isMergeCommit":false,"messageTitle":"Update project portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"6cd62deab28d84e9cdeabb575284a2fc7589d583","isMergeCommit":false,"messageTitle":"Add Assignment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":0}}}]},{"date":"2023-10-23","commitResults":[{"hash":"56ec39b748f2f6d2443542d9673700c880d78eaf","isMergeCommit":false,"messageTitle":"Add assignments field to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":132,"deletions":17},"test-code":{"insertions":13,"deletions":4}}},{"hash":"120ccfc1a830d06be5c5a90615e5d9944b8ac6fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65de1ac0e3ba0328a170ada40721d0ce11cba47c","isMergeCommit":false,"messageTitle":"Reorder prefixes in alphabetical order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"eb5d53b70a53f6b6ec7df716058baa61d9dd27ad","isMergeCommit":false,"messageTitle":"Add assignment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":10}}},{"hash":"5fcf9fe07aa2eca215f30386374e117cbc61eddd","isMergeCommit":false,"messageTitle":"Adjust UI to make assignments visible","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"9788f257ed3d7607ddccdf5abbda278a6371e65f","isMergeCommit":false,"messageTitle":"Update message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":11}}},{"hash":"d218df203b25b6a643f9af76769ed1b61195e1cc","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":2}}},{"hash":"87c4eb12b81c0d7286c73acb24a9c76db31d95cd","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"c28894c9e19c69d757edf7156760f2890eeb17ad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"61a5e95f6a85e76a1d4aaa4a795c3248ed302dea","isMergeCommit":false,"messageTitle":"Fix unmarkAtd typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"42272bd5a478199660e0d2fd86e79986b8ad233f","isMergeCommit":false,"messageTitle":"Handle duplicate assignment name case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"ceec79b5024b81c0672da99b1170202c2187e987","isMergeCommit":true,"messageTitle":"Merge pull request #74 from lsyurea/optional-command-branch","messageBody":"Optional command branch","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"bca502d81987af177fe005183e75b983d0a4644b","isMergeCommit":false,"messageTitle":"Fix crashing bug in Linux","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":8}}},{"hash":"56737720c2969be093af12dbfb329a7e6398a271","isMergeCommit":false,"messageTitle":"Differentiate tags, comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}},{"hash":"65b28e3b05f965eb3158bbe23912eb9d727f7189","isMergeCommit":false,"messageTitle":"Reorder comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e1b2b4702d737ae7ff20e58015f6f8f6a611542f","isMergeCommit":false,"messageTitle":"Fixed bug where comments and assignments are forgotten upon closing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}}]}],"proto-aiken-13":[{"date":"2023-09-24","commitResults":[{"hash":"4be16879f5e2788f50fa7d76d4416d34d6235aa4","isMergeCommit":false,"messageTitle":"Add particulars to miguel.md","messageBody":"In every software engineering project, it is paramount to include\ndeveloper details.\n\nLet\u0027s add my details and my contributions thus far!\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":46}}}]},{"date":"2023-10-04","commitResults":[{"hash":"ea4078d126e04b19026d704f20b6468d9ca3368f","isMergeCommit":false,"messageTitle":"Update miguel.md","messageBody":"We need to keep track of all our contributions (on our end) to the tP.\n\nLet\u0027s add some headers to categorize our contributions! Added headers\nto miguel.md file.\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"a0ba70ec4a92a24684c72a843ecf75081dedfd7d","isMergeCommit":false,"messageTitle":"Update proto-aiken-13","messageBody":"It is paramount to keep track of what contributions I made the tP.\n\nLet\u0027s update my (proto-aiken-13) PPP page!\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}}]},{"date":"2023-10-06","commitResults":[{"hash":"cfb3ac573f435b551919b89984bb3b1893c84480","isMergeCommit":false,"messageTitle":"Delete miguel.md","messageBody":"Deleted miguel.md, the misnamed file.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":28}}}]},{"date":"2023-10-20","commitResults":[{"hash":"50574724a1a4739f67e960c034ec2b0a1e3044b7","isMergeCommit":false,"messageTitle":"Amend the UI fxml and css files to create a more complete UI.","messageBody":"Our application needs to have a unique and functional AI from the\noriginal AB3 design.\n\nLet\u0027s finish the AI for good! Updated DarkTheme and MainWindow.fxml\nto show a more complete UI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":55},"docs":{"insertions":6,"deletions":2}}},{"hash":"61f8b4c8de0c0b461589cac4bb7b9779b7e7b169","isMergeCommit":false,"messageTitle":"Remove trailing WhiteSpace from MainWindow.fxml.","messageBody":"This is to ensure the CLI checks pass when publishing\nthe Pull Request.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"71f01acd31bac3ba79963603e98daa7f52c4b475","isMergeCommit":false,"messageTitle":"Remove trailing WhiteSpace from MainWindow.fxml","messageBody":"This is to ensure the CLI checks pass when publishing\nthe Pull Request.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ed83d3dec0e473847a2194d9463355fff3144a85","isMergeCommit":false,"messageTitle":"Add a comment tag to be displayed in the UI","messageBody":"Previously, comments could not be seen in the UI.\n\nAs such, the PersonCard class has been updated to\nshow comments.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"43d49571021808ccb838a1acad388d72b5198220","isMergeCommit":false,"messageTitle":"Add a comment tag to be displayed in the UI","messageBody":"Previously, comments could not be seen in the UI.\n\nAs such, the PersonCard class has been updated to\nshow comments.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]}],"Choonyan02":[{"date":"2023-10-03","commitResults":[{"hash":"a7e82d09625bf78e80bf18635fbbab37ab85149d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md and team images","messageBody":"Updated target user profile, value proposition, and user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}}]},{"date":"2023-10-05","commitResults":[{"hash":"f695ab90379c26342f0de2503ae952816f721e2a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Updated the priority of some user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"7628f8e95074e6226495dd1b244196b5382c7ca3","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Choonyan02/v1.1-pr","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"f56fce14d52350e46ef04eaabe07a8d8663c7939","isMergeCommit":true,"messageTitle":"Merge pull request #55 from et-irl/feature/comment-command","messageBody":"Feature/comment command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"7cf9dcd86c1eb5678295447fdd5c8d20e676352d","isMergeCommit":false,"messageTitle":"Add MarkAttendanceCommand and UnMarkAttendanceCommand","messageBody":"This commit adds the ability to mark and unmark attendance in the MarkAttendanceCommand and UnMarkAttendanceCommand classes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":482,"deletions":8},"test-code":{"insertions":10,"deletions":9}}},{"hash":"a7a8cae50e8d207ebb594714099a035b90408532","isMergeCommit":false,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":9}}},{"hash":"6f63f4d17c055ad7093a1c554c222753e9024c16","isMergeCommit":false,"messageTitle":"Update PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":1}}},{"hash":"3cc8ff0b5442c535d91a0d432e9d51535884d79c","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":9}}},{"hash":"a6113b29408ef75ccab6d714c9dc7cc5e924c6f5","isMergeCommit":false,"messageTitle":"Fix some errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":27,"deletions":12}}},{"hash":"dec171415ef2f46362cda7da8217b4788cdc3b25","isMergeCommit":false,"messageTitle":"Fix some fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":3,"deletions":2}}},{"hash":"c7183f9b25f981fc49c74aa193202d821d378d43","isMergeCommit":false,"messageTitle":"Fix 1 test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"85ea7d11313b7b712173e31b4b28bcbad26a72b8","isMergeCommit":false,"messageTitle":"Fix some errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"225a8aacc273aee2771a6bf6bc7a656a165819f0","isMergeCommit":false,"messageTitle":"Implement equals in Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"3e908cadc5a8a0d51fe7f6942ed621609f83cbcf","isMergeCommit":false,"messageTitle":"Add AttendanceTest, and changed week to tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":58},"test-code":{"insertions":87,"deletions":0}}},{"hash":"fab13ecfb14175c295fbfe217aa18c2943da4fe3","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3},"test-code":{"insertions":18,"deletions":0}}},{"hash":"103e30f277f67784b3a80e1545c74d97fa736c29","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"cbe5e890ca1c2a87420c26f3adfb715a2d606d67","isMergeCommit":false,"messageTitle":"Update ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":23,"deletions":0}}},{"hash":"0de2d80ac3990bc792370406ba15bb9169315ef1","isMergeCommit":false,"messageTitle":"Add tests for mark and unmark attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":14},"test-code":{"insertions":192,"deletions":5}}},{"hash":"876624afa202aabb81dff8f2875776321cefbdf1","isMergeCommit":false,"messageTitle":"Add Mark and Unmark Parser Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":124,"deletions":0}}},{"hash":"455a5f333093abe83ea2ad8ed4e009e674dce261","isMergeCommit":false,"messageTitle":"Update UserGuide.md, Add Mark and Unmark Attendance feature","messageBody":"Closes #48.\nThis commit adds the ability to mark and unmark attendance in the MarkAttendanceCommand and UnMarkAttendanceCommand classes\n","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}},{"hash":"b3efcefc6747ab06bc40f575d96ae5b60ace314c","isMergeCommit":false,"messageTitle":"Rename UnMarkAttendanceParser.java to UnmarkAttendanceParser.java","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"5fee302cfee8c3b3d956255cfcedcb6ab6b0eed9","isMergeCommit":false,"messageTitle":"Rename UnMarkAttendanceCommand.java to UnmarkAttendanceCommand.java","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"f62f39368d4d298c0b75c83f65446c176a88a6a1","isMergeCommit":false,"messageTitle":"Fix typo in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cefb40c8121772d0158c40976a0dda49992c3e4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027attendance-userguide\u0027 of https://github.com/Choonyan02/tp into attendance-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b4357f45386e842e1ed4dd6fcd2fb79388fef52","isMergeCommit":false,"messageTitle":"Fix bug for unmark Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1c427581ae409574ab1ed96b96a72aeb923b1e19","isMergeCommit":false,"messageTitle":"Correct code logic for unmark Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"140968b4c216433a2ad3c7a9f658e84962e6e1a0","isMergeCommit":false,"messageTitle":"Update Message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"a968f114e6ed21a8ac971cddeb260d40b1153949","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-15","commitResults":[{"hash":"6f350e0b08ad31c92ee61f9ce125a39148cc0bf8","isMergeCommit":true,"messageTitle":"Merge pull request #66 from lsyurea/testing-branch2","messageBody":"Update Test Coverage","fileTypesAndContributionMap":{}}]}],"Vanessamae23":[{"date":"2023-10-03","commitResults":[{"hash":"914a1cdfeac47ccdacfafcfc1952438405caa819","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":11}}},{"hash":"0369c6e6249d55b39155de5f8adef0e4de22ea2c","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Choonyan02/master","messageBody":"Update DeveloperGuide.md and team images","fileTypesAndContributionMap":{}},{"hash":"2357c3ff18e6a67df14c95a4232c44e61ef44b80","isMergeCommit":true,"messageTitle":"Merge pull request #29 from et-irl/master","messageBody":"Week 7 Tasks","fileTypesAndContributionMap":{}},{"hash":"416502844e3323f025ae9d42b1dd593f1b556f81","isMergeCommit":false,"messageTitle":"Add picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":0}}},{"hash":"97537ed091367af03a0299120d3b60fc18448179","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"e3cc668c0ab6624ce40ea9f58ef153500afd2a6b","isMergeCommit":false,"messageTitle":"Update and remove ab3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":83}}},{"hash":"a6750b42e9da38d45bbb94c56ed9b84b07acb540","isMergeCommit":true,"messageTitle":"Merge pull request #44 from et-irl/v1.1-cleanup","messageBody":"V1.1 cleanup","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"14c5dbec9e58ff3b444290060724cc4686495d3d","isMergeCommit":false,"messageTitle":"Change address to telegram handle.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":82},"other":{"insertions":10,"deletions":10},"docs":{"insertions":57,"deletions":57},"test-code":{"insertions":101,"deletions":107}}}]},{"date":"2023-10-11","commitResults":[{"hash":"61ac6fdb52ffdd15309061359e30b5ba1626b3c0","isMergeCommit":false,"messageTitle":"Change address to telegram handle.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"test-code":{"insertions":110,"deletions":106}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4b96df923c7713c6c4dd85b494194b61baaeac9f","isMergeCommit":true,"messageTitle":"Merge et comments branch.","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a89e13add70c1ccfb5b5a34d61dd7d2083ebc209","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":28},"test-code":{"insertions":42,"deletions":34}}},{"hash":"35a46e9dc8af9a803c1941a4f90cfd388fb6e876","isMergeCommit":false,"messageTitle":"Fix regression","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"docs":{"insertions":6,"deletions":4}}},{"hash":"2a8d951c21c2809a4f9d47caa5d7c6ce65eb89f1","isMergeCommit":false,"messageTitle":"Fix markdown details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3e78a5e0d4fcf37932cbd5b3ee4fdd3f6b8ed537","isMergeCommit":false,"messageTitle":"Change wrong directory","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":7}}},{"hash":"832a98bf60c8d1871147e7072f9a6e0d94d8e368","isMergeCommit":false,"messageTitle":"Change broken links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":37}}},{"hash":"4b65707d9a0c00316223148007858bbd62bff434","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Choonyan02/attendance-userguide","messageBody":"Update UserGuide.md, Add Mark and Unmark Attendance feature","fileTypesAndContributionMap":{}},{"hash":"ff6be18b1c4d28e5a37cb658a20c2744e6309047","isMergeCommit":false,"messageTitle":"Change address book phrase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"0744f5b0888473d2454dcb7449de74b5290b60e2","isMergeCommit":true,"messageTitle":"Merge Choon Yan attendance feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9f4cc8445771f4b33aa5b8f3c976f2eea502aa6","isMergeCommit":false,"messageTitle":"Fix regression","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d58bf71e94fbd74db8d96b127eb47bdd9ac41cd7","isMergeCommit":false,"messageTitle":"Add some minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-21","commitResults":[{"hash":"31c940f4c6273ab084412ea9a4aa0d18e02bccd9","isMergeCommit":false,"messageTitle":"Add telegram link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":7}}},{"hash":"666bc5db3c89bcf0a4d5a42b7c24e0a6f58b15be","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":8}}}]},{"date":"2023-10-23","commitResults":[{"hash":"fd06b3ea23825b1553c0d0f990e4272c1e7e92db","isMergeCommit":true,"messageTitle":"Merge pull request #71 from et-irl/v1.3","messageBody":"Add Distribute Assignments Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"23a98cf92ada1b258c749bfe953ebc9b20c8e182","isMergeCommit":true,"messageTitle":"Merge pull request #78 from lsyurea/help-branch","messageBody":"Update Help Command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lsyurea":{"docs":56,"functional-code":153,"test-code":356},"et-irl":{"docs":134,"functional-code":691,"test-code":31},"proto-aiken-13":{"docs":33,"functional-code":82,"test-code":0},"Choonyan02":{"docs":34,"functional-code":512,"test-code":473},"Vanessamae23":{"docs":108,"functional-code":117,"test-code":201}},"authorContributionVariance":{"lsyurea":9729.967,"et-irl":7786.4893,"proto-aiken-13":900.1212,"Choonyan02":57209.777,"Vanessamae23":11162.695},"authorDisplayNameMap":{"lsyurea":"CS2103T-T12-1 LEE ..YUAN","et-irl":"CS2103T-T12-1 TAN ..LUNA","proto-aiken-13":"CS2103T-T12-1 JOSE..CENA","Choonyan02":"CS2103T-T12-1 NAH .. YAN","Vanessamae23":"CS2103T-T12-1 VANE.. MAE"}} +{"authorDailyContributionsMap":{"lsyurea":[{"date":"2023-09-24","commitResults":[{"hash":"668e1426767d6c1db540c557c038b821b9bba7ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T12-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"fb1050ac95caeadad05d45c0e3c5fef7007bbdc8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added the glossary and non-functional requirements.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}}]},{"date":"2023-10-04","commitResults":[{"hash":"c756cd358587954edf87a33ab10be85a2daf8398","isMergeCommit":true,"messageTitle":"Merge pull request #35 from et-irl/fix-PPP-naming","messageBody":"Fix PPP names","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"4abdfd14a6f26f218b798852babbd72bdd9bcd64","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Vanessamae23/update-user-guide","messageBody":"Update and remove ab3 in the user guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"940c40117831d3bfa093eba76af5502b51df504e","isMergeCommit":false,"messageTitle":"Create CommentTest.java","messageBody":"Created testing for Comment.\n","fileTypesAndContributionMap":{"test-code":{"insertions":58,"deletions":0}}},{"hash":"33691e147865fa8dfde8b0d4d468ad74a973f998","isMergeCommit":false,"messageTitle":"Update AttendanceTest.java","messageBody":"Added testing for different types and hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"eb0797551d3b088e035ecdf96b058be9cabd38d9","isMergeCommit":false,"messageTitle":"Update EmailTest.java","messageBody":"Added testing for hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"5a62234b57c7a4e9edbc3947ef4121f41dc0e954","isMergeCommit":false,"messageTitle":"Update NameTest.java","messageBody":"Added testing for hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"625412a2fc23103ed3d7b8bc4da7e91b335a8f0d","isMergeCommit":false,"messageTitle":"Update PersonTest.java","messageBody":"Added testing for hashcode, get attendance, getcomments, gettags, getname, getphone, getemail, getweekspresent and gettotalweeks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":0}}},{"hash":"7ed47f5c7280b6a4f9222276ce16231636ab5d50","isMergeCommit":false,"messageTitle":"Update PhoneTest.java","messageBody":"Added testing for hashcode and tostring.\n","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"270cd6881c9f96d7f21c961f587cb161e1409e4e","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Added testing for hashcode, equals method and iteratormethod.\n","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"5788b4720b83819e016ae171f0936a28c60c3096","isMergeCommit":false,"messageTitle":"Update TagTest.java","messageBody":"Added testing for equal method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":1}}},{"hash":"f7509362cb2fd1de74c9b6a276b7f93e195cb0ae","isMergeCommit":false,"messageTitle":"Update AddressBookTest.java","messageBody":"Do testing for SampleData.\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"4cca2815d8dcf7eb6b06b85c2b2ad330db149f9a","isMergeCommit":false,"messageTitle":"Update UserPrefsTest.java","messageBody":"Do testing for equals and hashcode.\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"285076bd0027425e155abdd3bc780e64d060f9ec","isMergeCommit":false,"messageTitle":"Create SampleDataUtilTest.java","messageBody":"Do testing for sampledata.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"ecb1a53c5524d04da86d4382370ad56b33e0fe76","isMergeCommit":false,"messageTitle":"Update CommentTest.java","messageBody":"Conform to checkstyle spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"cea78e4537f6eb77ac377595c2d6747387eb15fc","isMergeCommit":false,"messageTitle":"Update TagTest.java","messageBody":"Conform to checkstyle spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"c35bea4c71b131baaf65a8ef119e636deefd2475","isMergeCommit":false,"messageTitle":"Update SampleDataUtilTest.java","messageBody":"Conform to checkstyle import order and spacing.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"1c80d6d069009b5389c0126078f3bbe7a9537753","isMergeCommit":true,"messageTitle":"Merge pull request #65 from lsyurea/testing-branch2","messageBody":"Update Test Coverage","fileTypesAndContributionMap":{}},{"hash":"aa7840f877667473aba5e5398c7e80c20455b720","isMergeCommit":false,"messageTitle":"Update AttendanceTest.java","messageBody":"Created test cases for modeltype and constructors.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"c37d47c4d6118bd4ef4e9ba0404e0fc39555dca3","isMergeCommit":false,"messageTitle":"Update EmailTest.java","messageBody":"Refactor testing methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"b49af319171f2a1a60261482599e8829b7a866ac","isMergeCommit":false,"messageTitle":"Update PersonTest.java","messageBody":"Refactor testing method naming convention.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"75e04e6af3ba3b7d4e6130d90efebab2eb9b3cd5","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Refactor testing method naming convention.\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"5676eefa446f5af93d188a3659da8814a55c871b","isMergeCommit":false,"messageTitle":"Create JsonAdaptedCommentTest.java","messageBody":"Created test cases for JsonAdaptedComment for constructor, modeltype.\n","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"072c65d0c2e96dac16287e31ce06c1cc25b9c291","isMergeCommit":false,"messageTitle":"Update AppParametersTest.java","messageBody":"Added testing for initialisation of main class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":4}}},{"hash":"32071ad430a5e837c4d69e36d93a5533a859e6fb","isMergeCommit":false,"messageTitle":"Create MainAppTest.java","messageBody":"Added testing for initialisaiton of main application class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"bdaf90e552e40b3106d8eebd7cff05dd31cd75d2","isMergeCommit":false,"messageTitle":"Create MainTest.java","messageBody":"Added testing for main.class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"07d9bee5e8b5fb3151b9542b813f2ce6282ebae0","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"Updated the checkstyles for the method names.\n","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":26}}},{"hash":"81f9fbc43f2064f5f7b38d80e7bf8477fe383efa","isMergeCommit":false,"messageTitle":"Update DarkTheme.css","messageBody":"Changed background color and annotated key components.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":17}}}]},{"date":"2023-10-20","commitResults":[{"hash":"b54091fe88d54b8fd2379bfac4f9a8682860d606","isMergeCommit":true,"messageTitle":"Merge pull request #68 from proto-aiken-13/branch-Ui-v1.2b","messageBody":"Amend the UI fxml and css files to create a more complete UI.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"2a3bb778e9840d52cfdf83844eea4029a597c7c0","isMergeCommit":true,"messageTitle":"Merge pull request #70 from Vanessamae23/add-telegram-link","messageBody":"Added telegram link.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"c97506efa52f5961da75bbd5e9226a85377ad136","isMergeCommit":false,"messageTitle":"Update PersonBuilder.java","messageBody":"Use of optionals to make commands optional.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"f76cd1205c93ebede762ed27cf142259f9fd05fc","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest.java","messageBody":"Remove unnecessary optional prefix checks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"ab3158cf27f5d7d899d940ddc2f49b521437e9e8","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson.java","messageBody":"Updated constructor to take in optional model fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"3e6ffa5b25a19176c168c6eb8cd4c0e3a1848e14","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"Updated sample data to follow the current structure of using optionals.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":23}}},{"hash":"97edbf9f53d55ac554a28bfbc148cdbf30fc273e","isMergeCommit":false,"messageTitle":"Update TelegramHandle.java","messageBody":"Added default telegram handle.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"27621128e50c6639536f553384c05c9060e9fa4d","isMergeCommit":false,"messageTitle":"Update Phone.java","messageBody":"Added default phone field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"c11f538bc0fdef159f3c644875906921a6d590ac","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"Updated optional fields to use optional.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":15}}},{"hash":"d9afc5285191c21e23789b334056a9747dd86c91","isMergeCommit":false,"messageTitle":"Update Email.java","messageBody":"Updated default email domain\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"85a86b0a9377a4243e57534363a28eb5a9d62d24","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"Fill in the optional fields with default fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"b6943d3e9fa37d17b69d9047ab467048889c3da7","isMergeCommit":false,"messageTitle":"Update UnmarkAttendanceCommand.java","messageBody":"Use of optionals in the fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"c35ce1d8d724655f996634ee72e07982f23ed8b5","isMergeCommit":false,"messageTitle":"Update MarkAttendanceCommand.java","messageBody":"Use of optionals in the optional fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"2ff91bd764440b39fc55daf4213ce83508805514","isMergeCommit":false,"messageTitle":"Update EditCommand.java","messageBody":"Use of optionals in the fields of Person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"5b491b690243ba980a78f6f8157d424a1b19cc7b","isMergeCommit":false,"messageTitle":"Update AssignmentCommand.java","messageBody":"Use of optionals in the fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"c70d5163ce53547abc03447cc50dd2ae0ab99ec1","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"Updated message_usage to give example of which fields to fill.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"27291e0fddfa1a0a90c0bb205624231751091dca","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Updated my contribution page.\n","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":3}}},{"hash":"00c4d8991f567d1fac9e3babd66a2f484b5a7000","isMergeCommit":false,"messageTitle":"Update checkstyles","messageBody":"Updated checkstyles to pass CLI checks.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}},{"hash":"6007a300e61f787a0339bc2c89c5b1985dfb1317","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Included contributions.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5a11284f04069b27b2b94cbebe41205551026412","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"Added [] to show optionality.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ddcfe84f70319d64d4215afcdbe0fc783aebcda3","isMergeCommit":false,"messageTitle":"Update Person.java","messageBody":"Returns 0 instead of -1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-24","commitResults":[{"hash":"a38525c8e9f95822c01e6d80df37cc523475ed17","isMergeCommit":true,"messageTitle":"Merge pull request #76 from et-irl/telegram-linux","messageBody":"Fix crashing bug in Linux.","fileTypesAndContributionMap":{}},{"hash":"8b5a5042dceddfb4cd84bfaea713882278df2640","isMergeCommit":false,"messageTitle":"Update HelpWindow.java","messageBody":"Changed the link to our user guide instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e36c06b792d3044efa3d07c669a51878626f817","isMergeCommit":false,"messageTitle":"Update Message Usage","messageBody":"Updated the commands of message usage and show it when help is called.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":5}}},{"hash":"54048d03ab2cb2d2dda7dbf4705463bc2bc17fae","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Updated my code contribution.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":17}}},{"hash":"9abc03fd9901dcd08d2a82b7c5f95da4437a598a","isMergeCommit":false,"messageTitle":"Update HelpCommand.java","messageBody":"Adhered to checkstyles.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"24f68950a290265b6be432f08b45a0d17e29b808","isMergeCommit":false,"messageTitle":"Update help documentation","messageBody":"Switched the messages to appear in the UI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15}}},{"hash":"70545a3214217ac369ebd566920840e9fd47b6be","isMergeCommit":false,"messageTitle":"Update HelpWindow.java","messageBody":"Updated import to adhere to checkstyles.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"101e165662a886d2a6325ea402a6d5b343618719","isMergeCommit":true,"messageTitle":"Merge pull request #81 from et-irl/tag-colours","messageBody":"Add tag colours and distinguish the different types of information.","fileTypesAndContributionMap":{}},{"hash":"b5c961c6a982a39cc85ac4178700b5f9e838da65","isMergeCommit":true,"messageTitle":"Merge pull request #83 from et-irl/bug-memory-persistence","messageBody":"Fixed bug where comments and assignments are forgotten upon closing.","fileTypesAndContributionMap":{}},{"hash":"ae2ebc4ef9cf0c0f98acc006a7eb90cefd9d6f59","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Updated edit use case and add person use case to reflect optional fields.\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}},{"hash":"17c2acdc9c98f02267eabb528c700b10a6ab0936","isMergeCommit":true,"messageTitle":"Merge pull request #85 from Vanessamae23/vanessa/add-grade-command","messageBody":"Add the grade command for the assignments .","fileTypesAndContributionMap":{}},{"hash":"197b86191ae3ea3cf1bf05cf35e9c2405d94212f","isMergeCommit":false,"messageTitle":"Update lsyurea.md","messageBody":"Modify my contribution to the help command.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f84a57e1d8bdd4bc402727de56398ce0053a1b66","isMergeCommit":false,"messageTitle":"Update Help UI","messageBody":"Ensures that it opens up the link instead of copying.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":24}}},{"hash":"39e14fb77afe283e579efb3aa156635f0e57b64e","isMergeCommit":false,"messageTitle":"Update checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5}}},{"hash":"eb62f07175ecd238bc0b5ebce2a9d82928cc7dcc","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"Enable assertions for defensive programming.\n","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"e8fdf5891b9f4ce7a09c0a1685e2b39cadd8e9a4","isMergeCommit":false,"messageTitle":"Update LogicManagerTest.java","messageBody":"Added assertion for defensive programming and logging to update opening of link.\n","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"ad1f3954d7f7782bde747b360dc1116e3fa8987e","isMergeCommit":false,"messageTitle":"Update UiUtil.java","messageBody":"Added Assertion.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"2525746f0293d8713a4a555f290a718d665f123c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into help-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f46e207c8aa482bd899d0b7959401080a6829e7f","isMergeCommit":false,"messageTitle":"Update checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"98925a4669359890a3af44509d6aab6f5fa2286d","isMergeCommit":false,"messageTitle":"Update checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"docs":{"insertions":5,"deletions":5}}}]}],"et-irl":[{"date":"2023-10-03","commitResults":[{"hash":"0828e7de8117b7e66dcfcf3f0e74575128f53134","isMergeCommit":false,"messageTitle":"Add a skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":1}}},{"hash":"6abe975131649232e04111ac86a544a8e27120dc","isMergeCommit":false,"messageTitle":"Add use cases to the developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":1}}},{"hash":"751cf06e943d2bebcd976b29a929929b3f40e8c9","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vanessamae23/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"d0b7df39205a1ab75c5b2b113ca963c49ebb16eb","isMergeCommit":true,"messageTitle":"Merge pull request #32 from proto-aiken-13/branch-a-ReadMeUi","messageBody":"Update the Ui.png","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"8604597b2f8e2639db283e773cfb4f441a616f3e","isMergeCommit":true,"messageTitle":"Merge pull request #33 from lsyurea/developer-guide-patch","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"2c878c195e70fe875ab9ae892c496ed5bf98cd98","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Vanessamae23/add-vanessa-pic","messageBody":"Add picture and update markdown","fileTypesAndContributionMap":{}},{"hash":"211d9ec0d3ae21a0518db59ff9bbb9732227f34d","isMergeCommit":false,"messageTitle":"Fix PPP names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2023-10-05","commitResults":[{"hash":"a6a0a68eec6005c337be38f95e2014acf2fd922c","isMergeCommit":false,"messageTitle":"Point CI banners to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfd001499aa4bbb23ec09ce7c620901eea37ac2d","isMergeCommit":false,"messageTitle":"Remove traces of AB3 in README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"61c1da02288c229e1eb446b652e91debea744916","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":28}}}]},{"date":"2023-10-06","commitResults":[{"hash":"120c2c7c9688d5396cb7278cd1e258b91bbe15e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-a-miguelppp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9cc7cdd47be48b36988da31cc29ebf16ab09242d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from proto-aiken-13/branch-a-miguelppp","messageBody":"Update miguel.md","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"220ee2d69346cac7b2a53f7fe9622f5fca6dc24c","isMergeCommit":false,"messageTitle":"Rename package tag to fields","messageBody":"The tag package name is too specialised for only one purpose.\n\nTo accommodate for features such as comments, we need to generalise\nthe package name.\n\nLet\u0027s change the name of the package to be more generic.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":8},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":7}}},{"hash":"a103010d4c668c6864d44ae1154a2341224367da","isMergeCommit":false,"messageTitle":"Add the Comment field to Person","messageBody":"As a teaching assistant, we would like to remember small details\nabout each person.\n\nAs it stands, there is no field associated with people to remember\nlittle details.\n\nLet\u0027s add this field!\n","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":17},"test-code":{"insertions":15,"deletions":2}}}]},{"date":"2023-10-11","commitResults":[{"hash":"71768b0be5a12326bd597063728491dc2bc51d3d","isMergeCommit":false,"messageTitle":"Update the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"367aeea4871f555a11b72b0f049be3ac24318020","isMergeCommit":false,"messageTitle":"Modify edit command to edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":4},"test-code":{"insertions":2,"deletions":1}}},{"hash":"ffb1b04550631287d1737bc37fc338318dd648bb","isMergeCommit":false,"messageTitle":"Update the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":4}}}]},{"date":"2023-10-13","commitResults":[{"hash":"163e7b1f1f1330e663fe524b580ec7f87b6f95bb","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Vanessamae23/change-address-to-telegram","messageBody":"Change address to telegram","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"a5e1c3815f53d00545c90c3e48f762715ed5f5c3","isMergeCommit":false,"messageTitle":"Update project portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"6cd62deab28d84e9cdeabb575284a2fc7589d583","isMergeCommit":false,"messageTitle":"Add Assignment class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":0}}}]},{"date":"2023-10-23","commitResults":[{"hash":"56ec39b748f2f6d2443542d9673700c880d78eaf","isMergeCommit":false,"messageTitle":"Add assignments field to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":132,"deletions":17},"test-code":{"insertions":13,"deletions":4}}},{"hash":"120ccfc1a830d06be5c5a90615e5d9944b8ac6fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65de1ac0e3ba0328a170ada40721d0ce11cba47c","isMergeCommit":false,"messageTitle":"Reorder prefixes in alphabetical order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"eb5d53b70a53f6b6ec7df716058baa61d9dd27ad","isMergeCommit":false,"messageTitle":"Add assignment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":10}}},{"hash":"5fcf9fe07aa2eca215f30386374e117cbc61eddd","isMergeCommit":false,"messageTitle":"Adjust UI to make assignments visible","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"9788f257ed3d7607ddccdf5abbda278a6371e65f","isMergeCommit":false,"messageTitle":"Update message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":11}}},{"hash":"d218df203b25b6a643f9af76769ed1b61195e1cc","isMergeCommit":false,"messageTitle":"Update documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":2}}},{"hash":"87c4eb12b81c0d7286c73acb24a9c76db31d95cd","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"c28894c9e19c69d757edf7156760f2890eeb17ad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"61a5e95f6a85e76a1d4aaa4a795c3248ed302dea","isMergeCommit":false,"messageTitle":"Fix unmarkAtd typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"42272bd5a478199660e0d2fd86e79986b8ad233f","isMergeCommit":false,"messageTitle":"Handle duplicate assignment name case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"ceec79b5024b81c0672da99b1170202c2187e987","isMergeCommit":true,"messageTitle":"Merge pull request #74 from lsyurea/optional-command-branch","messageBody":"Optional command branch","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"bca502d81987af177fe005183e75b983d0a4644b","isMergeCommit":false,"messageTitle":"Fix crashing bug in Linux","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":8}}},{"hash":"56737720c2969be093af12dbfb329a7e6398a271","isMergeCommit":false,"messageTitle":"Differentiate tags, comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}},{"hash":"65b28e3b05f965eb3158bbe23912eb9d727f7189","isMergeCommit":false,"messageTitle":"Reorder comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e1b2b4702d737ae7ff20e58015f6f8f6a611542f","isMergeCommit":false,"messageTitle":"Fixed bug where comments and assignments are forgotten upon closing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"d074d603bf65245c407328ec9afb81f997c708e6","isMergeCommit":false,"messageTitle":"Fix crashing bug in Linux","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":8}}},{"hash":"de4498a6aece7c4ff3f12e75ef09e1db1741385e","isMergeCommit":false,"messageTitle":"Differentiate tags, comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}},{"hash":"6fec8ee438aa0dabef3d90ab1d656c1989f2153c","isMergeCommit":false,"messageTitle":"Reorder comments and assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1f4a34c2e55c5a32413047f137d57f9f87fbf1b6","isMergeCommit":false,"messageTitle":"Fixed bug where comments and assignments are forgotten upon closing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}}]}],"proto-aiken-13":[{"date":"2023-09-24","commitResults":[{"hash":"4be16879f5e2788f50fa7d76d4416d34d6235aa4","isMergeCommit":false,"messageTitle":"Add particulars to miguel.md","messageBody":"In every software engineering project, it is paramount to include\ndeveloper details.\n\nLet\u0027s add my details and my contributions thus far!\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":46}}}]},{"date":"2023-10-04","commitResults":[{"hash":"ea4078d126e04b19026d704f20b6468d9ca3368f","isMergeCommit":false,"messageTitle":"Update miguel.md","messageBody":"We need to keep track of all our contributions (on our end) to the tP.\n\nLet\u0027s add some headers to categorize our contributions! Added headers\nto miguel.md file.\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"a0ba70ec4a92a24684c72a843ecf75081dedfd7d","isMergeCommit":false,"messageTitle":"Update proto-aiken-13","messageBody":"It is paramount to keep track of what contributions I made the tP.\n\nLet\u0027s update my (proto-aiken-13) PPP page!\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}}]},{"date":"2023-10-06","commitResults":[{"hash":"cfb3ac573f435b551919b89984bb3b1893c84480","isMergeCommit":false,"messageTitle":"Delete miguel.md","messageBody":"Deleted miguel.md, the misnamed file.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":28}}}]},{"date":"2023-10-20","commitResults":[{"hash":"50574724a1a4739f67e960c034ec2b0a1e3044b7","isMergeCommit":false,"messageTitle":"Amend the UI fxml and css files to create a more complete UI.","messageBody":"Our application needs to have a unique and functional AI from the\noriginal AB3 design.\n\nLet\u0027s finish the AI for good! Updated DarkTheme and MainWindow.fxml\nto show a more complete UI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":55},"docs":{"insertions":6,"deletions":2}}},{"hash":"61f8b4c8de0c0b461589cac4bb7b9779b7e7b169","isMergeCommit":false,"messageTitle":"Remove trailing WhiteSpace from MainWindow.fxml.","messageBody":"This is to ensure the CLI checks pass when publishing\nthe Pull Request.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"71f01acd31bac3ba79963603e98daa7f52c4b475","isMergeCommit":false,"messageTitle":"Remove trailing WhiteSpace from MainWindow.fxml","messageBody":"This is to ensure the CLI checks pass when publishing\nthe Pull Request.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ed83d3dec0e473847a2194d9463355fff3144a85","isMergeCommit":false,"messageTitle":"Add a comment tag to be displayed in the UI","messageBody":"Previously, comments could not be seen in the UI.\n\nAs such, the PersonCard class has been updated to\nshow comments.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"43d49571021808ccb838a1acad388d72b5198220","isMergeCommit":false,"messageTitle":"Add a comment tag to be displayed in the UI","messageBody":"Previously, comments could not be seen in the UI.\n\nAs such, the PersonCard class has been updated to\nshow comments.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]}],"Choonyan02":[{"date":"2023-10-03","commitResults":[{"hash":"a7e82d09625bf78e80bf18635fbbab37ab85149d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md and team images","messageBody":"Updated target user profile, value proposition, and user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}}]},{"date":"2023-10-05","commitResults":[{"hash":"f695ab90379c26342f0de2503ae952816f721e2a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Updated the priority of some user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"7628f8e95074e6226495dd1b244196b5382c7ca3","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Choonyan02/v1.1-pr","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-11","commitResults":[{"hash":"f56fce14d52350e46ef04eaabe07a8d8663c7939","isMergeCommit":true,"messageTitle":"Merge pull request #55 from et-irl/feature/comment-command","messageBody":"Feature/comment command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"7cf9dcd86c1eb5678295447fdd5c8d20e676352d","isMergeCommit":false,"messageTitle":"Add MarkAttendanceCommand and UnMarkAttendanceCommand","messageBody":"This commit adds the ability to mark and unmark attendance in the MarkAttendanceCommand and UnMarkAttendanceCommand classes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":482,"deletions":8},"test-code":{"insertions":10,"deletions":9}}},{"hash":"a7a8cae50e8d207ebb594714099a035b90408532","isMergeCommit":false,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":9}}},{"hash":"6f63f4d17c055ad7093a1c554c222753e9024c16","isMergeCommit":false,"messageTitle":"Update PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":1}}},{"hash":"3cc8ff0b5442c535d91a0d432e9d51535884d79c","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":9}}},{"hash":"a6113b29408ef75ccab6d714c9dc7cc5e924c6f5","isMergeCommit":false,"messageTitle":"Fix some errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":27,"deletions":12}}},{"hash":"dec171415ef2f46362cda7da8217b4788cdc3b25","isMergeCommit":false,"messageTitle":"Fix some fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":3,"deletions":2}}},{"hash":"c7183f9b25f981fc49c74aa193202d821d378d43","isMergeCommit":false,"messageTitle":"Fix 1 test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"85ea7d11313b7b712173e31b4b28bcbad26a72b8","isMergeCommit":false,"messageTitle":"Fix some errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"225a8aacc273aee2771a6bf6bc7a656a165819f0","isMergeCommit":false,"messageTitle":"Implement equals in Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"3e908cadc5a8a0d51fe7f6942ed621609f83cbcf","isMergeCommit":false,"messageTitle":"Add AttendanceTest, and changed week to tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":58},"test-code":{"insertions":87,"deletions":0}}},{"hash":"fab13ecfb14175c295fbfe217aa18c2943da4fe3","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3},"test-code":{"insertions":18,"deletions":0}}},{"hash":"103e30f277f67784b3a80e1545c74d97fa736c29","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"cbe5e890ca1c2a87420c26f3adfb715a2d606d67","isMergeCommit":false,"messageTitle":"Update ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":23,"deletions":0}}},{"hash":"0de2d80ac3990bc792370406ba15bb9169315ef1","isMergeCommit":false,"messageTitle":"Add tests for mark and unmark attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":14},"test-code":{"insertions":192,"deletions":5}}},{"hash":"876624afa202aabb81dff8f2875776321cefbdf1","isMergeCommit":false,"messageTitle":"Add Mark and Unmark Parser Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":124,"deletions":0}}},{"hash":"455a5f333093abe83ea2ad8ed4e009e674dce261","isMergeCommit":false,"messageTitle":"Update UserGuide.md, Add Mark and Unmark Attendance feature","messageBody":"Closes #48.\nThis commit adds the ability to mark and unmark attendance in the MarkAttendanceCommand and UnMarkAttendanceCommand classes\n","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}},{"hash":"b3efcefc6747ab06bc40f575d96ae5b60ace314c","isMergeCommit":false,"messageTitle":"Rename UnMarkAttendanceParser.java to UnmarkAttendanceParser.java","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"5fee302cfee8c3b3d956255cfcedcb6ab6b0eed9","isMergeCommit":false,"messageTitle":"Rename UnMarkAttendanceCommand.java to UnmarkAttendanceCommand.java","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"f62f39368d4d298c0b75c83f65446c176a88a6a1","isMergeCommit":false,"messageTitle":"Fix typo in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cefb40c8121772d0158c40976a0dda49992c3e4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027attendance-userguide\u0027 of https://github.com/Choonyan02/tp into attendance-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b4357f45386e842e1ed4dd6fcd2fb79388fef52","isMergeCommit":false,"messageTitle":"Fix bug for unmark Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1c427581ae409574ab1ed96b96a72aeb923b1e19","isMergeCommit":false,"messageTitle":"Correct code logic for unmark Attendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"140968b4c216433a2ad3c7a9f658e84962e6e1a0","isMergeCommit":false,"messageTitle":"Update Message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"a968f114e6ed21a8ac971cddeb260d40b1153949","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-15","commitResults":[{"hash":"6f350e0b08ad31c92ee61f9ce125a39148cc0bf8","isMergeCommit":true,"messageTitle":"Merge pull request #66 from lsyurea/testing-branch2","messageBody":"Update Test Coverage","fileTypesAndContributionMap":{}}]}],"Vanessamae23":[{"date":"2023-10-03","commitResults":[{"hash":"914a1cdfeac47ccdacfafcfc1952438405caa819","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":11}}},{"hash":"0369c6e6249d55b39155de5f8adef0e4de22ea2c","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Choonyan02/master","messageBody":"Update DeveloperGuide.md and team images","fileTypesAndContributionMap":{}},{"hash":"2357c3ff18e6a67df14c95a4232c44e61ef44b80","isMergeCommit":true,"messageTitle":"Merge pull request #29 from et-irl/master","messageBody":"Week 7 Tasks","fileTypesAndContributionMap":{}},{"hash":"416502844e3323f025ae9d42b1dd593f1b556f81","isMergeCommit":false,"messageTitle":"Add picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":0}}},{"hash":"97537ed091367af03a0299120d3b60fc18448179","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"e3cc668c0ab6624ce40ea9f58ef153500afd2a6b","isMergeCommit":false,"messageTitle":"Update and remove ab3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":83}}},{"hash":"a6750b42e9da38d45bbb94c56ed9b84b07acb540","isMergeCommit":true,"messageTitle":"Merge pull request #44 from et-irl/v1.1-cleanup","messageBody":"V1.1 cleanup","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"14c5dbec9e58ff3b444290060724cc4686495d3d","isMergeCommit":false,"messageTitle":"Change address to telegram handle.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":82},"other":{"insertions":10,"deletions":10},"docs":{"insertions":57,"deletions":57},"test-code":{"insertions":101,"deletions":107}}}]},{"date":"2023-10-11","commitResults":[{"hash":"61ac6fdb52ffdd15309061359e30b5ba1626b3c0","isMergeCommit":false,"messageTitle":"Change address to telegram handle.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"test-code":{"insertions":110,"deletions":106}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4b96df923c7713c6c4dd85b494194b61baaeac9f","isMergeCommit":true,"messageTitle":"Merge et comments branch.","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a89e13add70c1ccfb5b5a34d61dd7d2083ebc209","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":28},"test-code":{"insertions":42,"deletions":34}}},{"hash":"35a46e9dc8af9a803c1941a4f90cfd388fb6e876","isMergeCommit":false,"messageTitle":"Fix regression","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11},"docs":{"insertions":6,"deletions":4}}},{"hash":"2a8d951c21c2809a4f9d47caa5d7c6ce65eb89f1","isMergeCommit":false,"messageTitle":"Fix markdown details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3e78a5e0d4fcf37932cbd5b3ee4fdd3f6b8ed537","isMergeCommit":false,"messageTitle":"Change wrong directory","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":7}}},{"hash":"832a98bf60c8d1871147e7072f9a6e0d94d8e368","isMergeCommit":false,"messageTitle":"Change broken links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":37}}},{"hash":"4b65707d9a0c00316223148007858bbd62bff434","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Choonyan02/attendance-userguide","messageBody":"Update UserGuide.md, Add Mark and Unmark Attendance feature","fileTypesAndContributionMap":{}},{"hash":"ff6be18b1c4d28e5a37cb658a20c2744e6309047","isMergeCommit":false,"messageTitle":"Change address book phrase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"0744f5b0888473d2454dcb7449de74b5290b60e2","isMergeCommit":true,"messageTitle":"Merge Choon Yan attendance feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9f4cc8445771f4b33aa5b8f3c976f2eea502aa6","isMergeCommit":false,"messageTitle":"Fix regression","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d58bf71e94fbd74db8d96b127eb47bdd9ac41cd7","isMergeCommit":false,"messageTitle":"Add some minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-21","commitResults":[{"hash":"31c940f4c6273ab084412ea9a4aa0d18e02bccd9","isMergeCommit":false,"messageTitle":"Add telegram link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":7}}},{"hash":"666bc5db3c89bcf0a4d5a42b7c24e0a6f58b15be","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":8}}}]},{"date":"2023-10-23","commitResults":[{"hash":"fd06b3ea23825b1553c0d0f990e4272c1e7e92db","isMergeCommit":true,"messageTitle":"Merge pull request #71 from et-irl/v1.3","messageBody":"Add Distribute Assignments Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"23a98cf92ada1b258c749bfe953ebc9b20c8e182","isMergeCommit":true,"messageTitle":"Merge pull request #78 from lsyurea/help-branch","messageBody":"Update Help Command","fileTypesAndContributionMap":{}},{"hash":"a7de6493f52d86fbc186ff423ed7cd4c044bb906","isMergeCommit":false,"messageTitle":"Add grade command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0},"docs":{"insertions":13,"deletions":5},"test-code":{"insertions":227,"deletions":0}}},{"hash":"5501c714a1f08fe023703836b56106c9335d5ecc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-T12-1/tp into vanessa/add-grade-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"64b53eb22c284c12ee8f03be3e9640faa58cf9ed","isMergeCommit":false,"messageTitle":"Update DG and UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"docs":{"insertions":40,"deletions":4}}},{"hash":"3ff75fe8b7c277f2e1cccf26838073c399be5cfc","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":13},"test-code":{"insertions":2,"deletions":3}}},{"hash":"5791cceb5f87a849cb7a2ec8c95d2817865985dc","isMergeCommit":false,"messageTitle":"Add grade command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0},"docs":{"insertions":13,"deletions":5},"test-code":{"insertions":227,"deletions":0}}},{"hash":"f42e56678c7901674a84eeb13d6efed59ab7b245","isMergeCommit":false,"messageTitle":"Update DG and UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"docs":{"insertions":40,"deletions":4}}},{"hash":"44ce73692eef1c415888957645906fe1aaf8046a","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":13},"test-code":{"insertions":2,"deletions":3}}},{"hash":"53aec2c7ec7a354c4122fa38f481ce1ee362e9c6","isMergeCommit":true,"messageTitle":"Merge pull request #86 from lsyurea/help-branch","messageBody":"Update help command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lsyurea":{"docs":55,"functional-code":198,"test-code":372,"other":4},"et-irl":{"docs":131,"functional-code":670,"test-code":31},"proto-aiken-13":{"docs":33,"functional-code":82,"test-code":0},"Choonyan02":{"docs":34,"functional-code":512,"test-code":476},"Vanessamae23":{"docs":153,"functional-code":322,"test-code":424}},"authorContributionVariance":{"lsyurea":10828.612,"et-irl":8128.8345,"proto-aiken-13":900.1212,"Choonyan02":57209.777,"Vanessamae23":42231.016},"authorDisplayNameMap":{"lsyurea":"CS2103T-T12-1 LEE ..YUAN","et-irl":"CS2103T-T12-1 TAN ..LUNA","proto-aiken-13":"CS2103T-T12-1 JOSE..CENA","Choonyan02":"CS2103T-T12-1 NAH .. YAN","Vanessamae23":"CS2103T-T12-1 VANE.. MAE"}} diff --git a/AY2324S1-CS2103T-T15-1_tp_master/authorship.json b/AY2324S1-CS2103T-T15-1_tp_master/authorship.json index 07ecbdd2..036112fa 100644 --- a/AY2324S1-CS2103T-T15-1_tp_master/authorship.json +++ b/AY2324S1-CS2103T-T15-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-1/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"* This is **a one-stop platform for CS1101S Avengers**.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Track tasks and assignments to do","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Record attendance of students","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"* It is named `F.A.K.E.J.A.R.V.I.S.` because it was inspired by our favourite `Marvel` movie, (`Avengers`).","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"* For the detailed documentation of this project, see the **[F.A.K.E.J.A.R.V.I.S. Product Website](https://ay2324s1-cs2103t-t15-1.github.io/tp/)**.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"Respirayson":6,"raydenlim":1,"-":4}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2023-10-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2023-10-05"},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2023-10-05"},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Respirayson":4,"-":430}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"## Project FAKEJARVIS\u0027 Team","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/fakejarvis.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"### Yeap Rayson","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/respirayson.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"[[homepage](http://linkedin.com/in/rayson-yeap)]","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"[[github](https://github.com/respirayson)]","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"[[portfolio](team/respirayson.md)]","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"* Role: Git expert, Documentation","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"### Jian Song","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/raydenlim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"[[github](http://github.com/raydenlim)]","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"[[portfolio](team/raydenlim.md)]","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"* Role: Morale Booster, Debugger","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"* Responsibilities: *","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"### Ding Han","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"\u003cimg src\u003d\"images/ldinghan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"[[github](http://github.com/ldinghan)] [[portfolio](team/ldinghan.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"### Ryan Pang","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":"\u003cimg src\u003d\"images/originalidk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"[[github](https://github.com/Originalidk)]","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":"[[portfolio](team/originalidk.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"* Responsibilities: Fullstack","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"### Ho Jia Cheng","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"\u003cimg src\u003d\"images/wesho1107.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"[[github](http://github.com/wesho1107)]","lastModifiedDate":"2023-10-03"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":"[[portfolio](team/wesho1107.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"ldinghan":3,"Respirayson":5,"raydenlim":9,"Originalidk":5,"-":36,"wesho1107":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"# F.A.K.E.J.A.R.V.I.S. Developer Guide","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":"**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram.puml\" alt\u003d\"UndoSequenceDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"Respirayson"},"content":"* CS1101S Avengers","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"Respirayson"},"content":"* has a need to manage a significant number of classes, tutorials and assignments","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Respirayson"},"content":"**Value proposition**: track assignment gradings, student participation and plan their tutorials, consultations and mastery checks","lastModifiedDate":"2023-10-03"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"Respirayson"},"content":"|----------|--------------------------------------------|-------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-10-03"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"Respirayson"},"content":"| `* * *` | busy avenger | keep track of what needs to be done | better guide my students. |","lastModifiedDate":"2023-10-03"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"Respirayson"},"content":"(For all use cases below, the **System** is the `FAKEJARVIS` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-03"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"Respirayson"},"content":"2. FAKEJARVIS shows a list of persons","lastModifiedDate":"2023-10-03"},{"lineNumber":308,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Respirayson"},"content":"4. FAKEJARVIS deletes the person","lastModifiedDate":"2023-10-03"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Respirayson"},"content":" * 3a1. FAKEJARVIS shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":322,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"Respirayson"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"Respirayson"},"content":"**Use case: Delete a task**","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":328,"author":{"gitId":"Respirayson"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":329,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":330,"author":{"gitId":"Respirayson"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-03"},{"lineNumber":331,"author":{"gitId":"Respirayson"},"content":"2. FAKEJARVIS shows a list of persons","lastModifiedDate":"2023-10-03"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":333,"author":{"gitId":"Respirayson"},"content":"4. FAKEJARVIS deletes the person","lastModifiedDate":"2023-10-03"},{"lineNumber":334,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":335,"author":{"gitId":"Respirayson"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":336,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":337,"author":{"gitId":"Respirayson"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":338,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":339,"author":{"gitId":"Originalidk"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-05"},{"lineNumber":340,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"Originalidk"},"content":" Use case ends.","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":343,"author":{"gitId":"Originalidk"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"Originalidk"},"content":" * 3a1. FAKEJARVIS shows an error message.","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"Originalidk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"Originalidk"},"content":"**Use case: Grade an assignment**","lastModifiedDate":"2023-10-05"},{"lineNumber":351,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"Originalidk"},"content":"**MSS**","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"Originalidk"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-05"},{"lineNumber":355,"author":{"gitId":"Originalidk"},"content":"2. FAKEJARVIS shows a list of persons","lastModifiedDate":"2023-10-05"},{"lineNumber":356,"author":{"gitId":"Originalidk"},"content":"3. User requests to grade an assignment for a specific person in the list","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"Originalidk"},"content":"4. FAKEJARVIS assigns given grade to the student","lastModifiedDate":"2023-10-05"},{"lineNumber":358,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":" Use case ends.","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":"**Extensions**","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"Respirayson"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-03"},{"lineNumber":364,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":365,"author":{"gitId":"Respirayson"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":366,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":367,"author":{"gitId":"Respirayson"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-10-03"},{"lineNumber":368,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":369,"author":{"gitId":"Respirayson"},"content":" * 3a1. FAKEJARVIS shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"raydenlim"},"content":"**Use case: Find Student Profile**","lastModifiedDate":"2023-10-06"},{"lineNumber":374,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":375,"author":{"gitId":"raydenlim"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"raydenlim"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-06"},{"lineNumber":378,"author":{"gitId":"raydenlim"},"content":"2. FAKEJARVIS shows a list of persons","lastModifiedDate":"2023-10-06"},{"lineNumber":379,"author":{"gitId":"raydenlim"},"content":"3. User request a search query to find a student\u0027s profile","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"raydenlim"},"content":"4. FAKEJARVIS returns matching results from the database","lastModifiedDate":"2023-10-06"},{"lineNumber":381,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":382,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"raydenlim"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":385,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":386,"author":{"gitId":"raydenlim"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-06"},{"lineNumber":387,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":388,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":389,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":390,"author":{"gitId":"raydenlim"},"content":"* 3a. No matching profiles.","lastModifiedDate":"2023-10-06"},{"lineNumber":391,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":392,"author":{"gitId":"raydenlim"},"content":" * 3a1. FAKEJARVIS shows an error message.","lastModifiedDate":"2023-10-06"},{"lineNumber":393,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":394,"author":{"gitId":"raydenlim"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-06"},{"lineNumber":395,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":396,"author":{"gitId":"raydenlim"},"content":"**Use case: Filter Results**","lastModifiedDate":"2023-10-06"},{"lineNumber":397,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":398,"author":{"gitId":"raydenlim"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":399,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":400,"author":{"gitId":"raydenlim"},"content":"1. User requests to list persons.","lastModifiedDate":"2023-10-06"},{"lineNumber":401,"author":{"gitId":"raydenlim"},"content":"2. FAKEJARVIS shows a list of persons.","lastModifiedDate":"2023-10-06"},{"lineNumber":402,"author":{"gitId":"raydenlim"},"content":"3. User requests to apply filters to the results via attribute `FILTER_ATTRIBUTE`, or description `FILTER_DESCRIPTION`.","lastModifiedDate":"2023-10-06"},{"lineNumber":403,"author":{"gitId":"raydenlim"},"content":"4. FAKEJARVIS shows the filter results.","lastModifiedDate":"2023-10-06"},{"lineNumber":404,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":405,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":406,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":407,"author":{"gitId":"raydenlim"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":408,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":409,"author":{"gitId":"raydenlim"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-06"},{"lineNumber":410,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":411,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":412,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":413,"author":{"gitId":"raydenlim"},"content":"* 3a. No filtered results.","lastModifiedDate":"2023-10-06"},{"lineNumber":414,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":415,"author":{"gitId":"raydenlim"},"content":" * 3a1. FAKEJARVIS shows an error message.","lastModifiedDate":"2023-10-06"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":417,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-06"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":419,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"Respirayson"},"content":"4. System should respond within 2 seconds to ensure smooth and efficient user interactions.","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"Respirayson"},"content":"5. The system should be able to handle an increasing number of users and data without a significant decrease in performance.","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"Respirayson"},"content":"6. The system should be user-friendly, with a clean and intuitive interface.","lastModifiedDate":"2023-10-05"},{"lineNumber":429,"author":{"gitId":"Respirayson"},"content":"7. Regular automated backups of data should be performed, and there should be a clear disaster recovery plan in place.","lastModifiedDate":"2023-10-05"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":446,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":447,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Respirayson":44,"raydenlim":43,"Originalidk":24,"-":380}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"# F.A.K.E.J.A.R.V.I.S. User Guide","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" \u003cimg src\u003d\"images/fakejarvis.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"_Say goodbye to chaos and hello to an organized and efficient classroom experience._","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"F.A.K.E.J.A.R.V.I.S. is the **ultimate solution for CS1101S Avengers who manage a multitude of tutoring tasks.** This platform empowers you to efficiently track assignment gradings, monitor student participation, and seamlessly plan tutorials, consultations, and mastery checks. This is your one-stop solution to managing your time and students as a CS1101S Avenger!","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"1. Download the latest `fakejarvis.jar` from [here](https://github.com/AY2324S1-CS2103T-T15-1/tp/releases). _[Coming Soon]_","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your FAKEJARVIS.","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fakejarvis.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":"FAKEJARVIS data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":172,"author":{"gitId":"Respirayson"},"content":"FAKEJARVIS data are saved automatically as a JSON file `[JAR file location]/data/fakejarvis.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"Respirayson"},"content":"If your changes to the data file makes its format invalid, FAKEJARVIS will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-05"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":"### 📝Adding a Task: `addtask`","lastModifiedDate":"2023-10-06"},{"lineNumber":184,"author":{"gitId":"Respirayson"},"content":"Adds a task to your tasklist","lastModifiedDate":"2023-10-03"},{"lineNumber":185,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":186,"author":{"gitId":"Respirayson"},"content":"Format: `addtask n/TASK_NAME d/DUE_DATE p/PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":187,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":188,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":"* TASK_NAME The name or description of the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":"* DUE_DATE The due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":"* PRIORITY The priority level of the task (e.g., high, medium, low).","lastModifiedDate":"2023-10-03"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"Respirayson"},"content":"* `addtask n/Prepare Lecture slides d/2023-09-30 p/high` creates a task to prepare lecture slides with a high priority due on September 30, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":195,"author":{"gitId":"Respirayson"},"content":"* `addtask n/Read Chapter 5` creates a task to read Chapter 5 without specifying a due date or priority.","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing Tasks: `viewtasks`","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":"Views the list of tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":"Format: `viewtasks d/DUE_DATE p/PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":"* DUE_DATE The due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":"* PRIORITY The priority level of the task (e.g., high, medium, low).","lastModifiedDate":"2023-10-03"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":"* `viewtasks` displays all tasks in the user\u0027s task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":"* `viewtasks p/high` displays only high-priority tasks.","lastModifiedDate":"2023-10-03"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":"* `viewtasks d/2023-09-30` displays tasks due on September 30, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":"### ✅Completing a Task: `completetask`","lastModifiedDate":"2023-10-06"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":"Marks a task as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":"Format: `completetask TASK_INDEX`","lastModifiedDate":"2023-10-03"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to mark as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":"* `completetask 1` marks the task with index 1 as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":"* `completetask 3` marks the task with index 1 as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing a Task: `edittask`","lastModifiedDate":"2023-10-06"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":"Edits the details of a task","lastModifiedDate":"2023-10-03"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":"Format: `edittask TASK_INDEX n/NEW_TASK_NAME d/NEW_DUE_DATE p/NEW_PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":231,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to edit.","lastModifiedDate":"2023-10-03"},{"lineNumber":232,"author":{"gitId":"Respirayson"},"content":"* NEW_TASK_NAME The new name or description for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":233,"author":{"gitId":"Respirayson"},"content":"* NEW_DUE_DATE The new due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":234,"author":{"gitId":"Respirayson"},"content":"* NEW_PRIORITY The new priority level for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":235,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":236,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":237,"author":{"gitId":"Respirayson"},"content":"* `edittask 1 n/Updated TaskName` edits the name of the task with index 1.","lastModifiedDate":"2023-10-03"},{"lineNumber":238,"author":{"gitId":"Respirayson"},"content":"* `edittask 2 d/2023-10-15` updates the due date of the task with index 2 to October 15, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":239,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":240,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a Task: `deletetask`","lastModifiedDate":"2023-10-06"},{"lineNumber":242,"author":{"gitId":"Respirayson"},"content":"Deletes a task from the tasklist","lastModifiedDate":"2023-10-03"},{"lineNumber":243,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":244,"author":{"gitId":"Respirayson"},"content":"Format: `deletetask TASK_INDEX`","lastModifiedDate":"2023-10-03"},{"lineNumber":245,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":246,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":247,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to delete.","lastModifiedDate":"2023-10-03"},{"lineNumber":248,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":249,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":250,"author":{"gitId":"Respirayson"},"content":"* `deletetask 3` deletes the task with index 3 from the task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":251,"author":{"gitId":"Respirayson"},"content":"* `deletetask 2` deletes the task with index 2 from the task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":252,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"### 📆Taking attendance: `takeattendance`","lastModifiedDate":"2023-10-06"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":"Takes the attendance of a student","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"Format: `takeattendance n/STUDENT_NAME s/SESSION p/PRESENCE`","lastModifiedDate":"2023-10-06"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":"* SESSION - The session number.","lastModifiedDate":"2023-10-06"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"* PRESENCE - The attendance status of the student (e.g., present, absent).","lastModifiedDate":"2023-10-06"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":"* `takeattendance n/John Doe s/5 present` Marks John Doe as present on the 5th session.","lastModifiedDate":"2023-10-06"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":"* `takeattendance n/Foo Bar s/2 absent` Marks Foo Bar as absent on the 2nd session.","lastModifiedDate":"2023-10-06"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing attendance: viewattendance","lastModifiedDate":"2023-10-06"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":"Views the attendance list","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":"Format: `viewattendance n/STUDENT_NAME s/SESSION`","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":"* SESSION - The session number.","lastModifiedDate":"2023-10-06"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":"* `viewattendance` Displays the overall attendance across all students and sessions.","lastModifiedDate":"2023-10-06"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":"* `viewattendance n/Rayan` Displays Rayan’s overall attendance.","lastModifiedDate":"2023-10-06"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":"* `viewattendance s/3` Displays all students’ attendance for the 3rd session.","lastModifiedDate":"2023-10-06"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":"### 🔎Finding a Student: find","lastModifiedDate":"2023-10-06"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":"Finds a student’s profile","lastModifiedDate":"2023-10-06"},{"lineNumber":283,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":284,"author":{"gitId":"raydenlim"},"content":"Format: `find n/STUDENT_NAME`","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":287,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student you want to find.","lastModifiedDate":"2023-10-06"},{"lineNumber":288,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":"* `find n/John Doe` Finds and displays the profile of students with the name “John Doe”.","lastModifiedDate":"2023-10-06"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":"* `find n/Jane Doe` Finds and displays the profile of students with the name “Jane Doe”.","lastModifiedDate":"2023-10-06"},{"lineNumber":292,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":293,"author":{"gitId":"raydenlim"},"content":"### 🥅Filtering results: filter","lastModifiedDate":"2023-10-06"},{"lineNumber":294,"author":{"gitId":"raydenlim"},"content":"Filters the results displayed on the dashboard","lastModifiedDate":"2023-10-06"},{"lineNumber":295,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"Format:","lastModifiedDate":"2023-10-06"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":"* `filter_add n/FILTER_ATTRIBUTE n/FILTER_DESCRIPTION`","lastModifiedDate":"2023-10-06"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":"* `filter_delete n/FILTER_ATTRIBUTE n/FILTER_DESCRIPTION`","lastModifiedDate":"2023-10-06"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":"* `FILTER_ATTRIBUTE` - The filter type filter_studentScores","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" * `filter_studentScores`","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" * `filter_studentGrades`","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":"* `FILTER_DESCRIPTION` - The conditions for the filter","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":"* `filter_add n/filter_studentGrades n/A` Sets the dashboard to display students who have an “A” grade.","lastModifiedDate":"2023-10-06"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":"* `Filter_add n/filter_studentScores n/\u003e80` Sets the dashboard to show students with test scores above 80.","lastModifiedDate":"2023-10-06"},{"lineNumber":309,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":310,"author":{"gitId":"Originalidk"},"content":"### 📝Adding a grade to an assignment: `addgrade`","lastModifiedDate":"2023-10-13"},{"lineNumber":311,"author":{"gitId":"Originalidk"},"content":"Adds a grade to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":312,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"Originalidk"},"content":"Format: `addgrade INDEX as/ASSIGNMENT g/GRADE`","lastModifiedDate":"2023-10-19"},{"lineNumber":314,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":316,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":317,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":318,"author":{"gitId":"Originalidk"},"content":"* GRADE The grade of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":319,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":320,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"Originalidk"},"content":"* `addgrade 1 as/Functional Expressionism g/1300` adds a grade of 1300 to student 1\u0027s Functional Expressionism assignment.","lastModifiedDate":"2023-10-19"},{"lineNumber":322,"author":{"gitId":"Originalidk"},"content":"* `addgrade 2 as/Rune Reading g/600` adds a grade of 600 to student 2\u0027s Rune Reading assignment.","lastModifiedDate":"2023-10-19"},{"lineNumber":323,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":324,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing an assignment grade: `viewgrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":326,"author":{"gitId":"Originalidk"},"content":"Shows a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":327,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":328,"author":{"gitId":"Originalidk"},"content":"Format: `viewgrade INDEX as/ASSIGNMENT`","lastModifiedDate":"2023-10-19"},{"lineNumber":329,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":330,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":332,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":335,"author":{"gitId":"Originalidk"},"content":"* `viewgrade 1 as/Functional Expressionism` shows student 1\u0027s Functional Expressionism grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":336,"author":{"gitId":"Originalidk"},"content":"* `viewgrade 2 as/Rune Reading` shows student 2\u0027s Rune Reading grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":337,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":338,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing an assignment grade: `editgrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":340,"author":{"gitId":"Originalidk"},"content":"Edits a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":341,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"Originalidk"},"content":"Format: `editgrade INDEX as/ASSIGNMENT g/GRADE`","lastModifiedDate":"2023-10-19"},{"lineNumber":343,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":346,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"Originalidk"},"content":"* GRADE The score of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":348,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"Originalidk"},"content":"* `editgrade 1 as/Functional Expressionism g/1200` edits the grade of student 1\u0027s Functional Expressionism assignment to 1200.","lastModifiedDate":"2023-10-19"},{"lineNumber":351,"author":{"gitId":"Originalidk"},"content":"* `editgrade 2 as/Rune Reading g/1000` edits the grade of student 2\u0027s Rune Reading assignment to 1000.","lastModifiedDate":"2023-10-19"},{"lineNumber":352,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting an assignment grade: `deletegrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":355,"author":{"gitId":"Originalidk"},"content":"Deletes a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":356,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"Originalidk"},"content":"Format: `deletegrade INDEX as/ASSIGNMENT`","lastModifiedDate":"2023-10-19"},{"lineNumber":358,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"Originalidk"},"content":"* `deletegrade 1 as/Functional Expressionism` deletes student 1\u0027s Functional Expressionism grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":365,"author":{"gitId":"Originalidk"},"content":"* `deletegrade 2 as/Rune Reading` deletes student 2\u0027s Rune Reading grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":366,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":367,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":368,"author":{"gitId":"Originalidk"},"content":"### 📝Adding a comment to an assignment: `addcomment`","lastModifiedDate":"2023-10-13"},{"lineNumber":369,"author":{"gitId":"Originalidk"},"content":"Adds a comment to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":370,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":371,"author":{"gitId":"Originalidk"},"content":"Format: `addcomment n/STUDENT_NAME a/ASSIGNMENT c/COMMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":372,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":373,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":374,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":375,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":376,"author":{"gitId":"Originalidk"},"content":"* COMMENT The comment.","lastModifiedDate":"2023-10-05"},{"lineNumber":377,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":378,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":379,"author":{"gitId":"Originalidk"},"content":"* `addcomment n/Rayson a/Functional Expressionism c/Excellent` adds the comment “Excellent” on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":380,"author":{"gitId":"Originalidk"},"content":"* `addcomment n/Wesley a/Rune Reading c/Not bad` adds the comment “Not bad” on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":381,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing a comment: `viewcomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"Originalidk"},"content":"Shows the comment tagged to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":385,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":386,"author":{"gitId":"Originalidk"},"content":"Format: `viewcomment n/STUDENT_NAME a/ASSIGNMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":387,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":388,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":389,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":390,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":391,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":392,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"Originalidk"},"content":"* `viewcomment n/Rayson a/Functional Expressionism` shows the comment on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":394,"author":{"gitId":"Originalidk"},"content":"* `viewcomment n/Wesley a/Rune Reading` shows the comment on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":395,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":397,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing a comment: `editcomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":398,"author":{"gitId":"Originalidk"},"content":"Edits the comment on a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":399,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":400,"author":{"gitId":"Originalidk"},"content":"Format: `editcomment n/STUDENT_NAME a/ASSIGNMENT c/COMMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":401,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":403,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":404,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"Originalidk"},"content":"* COMMENT The new comment.","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":407,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"Originalidk"},"content":"* `editcomment n/Rayson a/Functional Expressionism c/Decent` changes the comment on Rayson’s Functional Expressionism assignment to “Decent”.","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"Originalidk"},"content":"* `editcomment n/Wesley a/Rune Reading c/Great` changes the comment on Wesley’s Rune Reading assignment to “Great”.","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":411,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":412,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a comment: `deletecomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":413,"author":{"gitId":"Originalidk"},"content":"Deletes the comment tagged to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":414,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"Originalidk"},"content":"Format: `deletecomment n/STUDENT_NAME a/ASSIGNMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":419,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"Originalidk"},"content":"* `deletecomment n/Rayson a/Functional Expressionism` deletes the comment on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":423,"author":{"gitId":"Originalidk"},"content":"* `deletecomment n/Wesley a/Rune Reading` deletes the comment on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":424,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"raydenlim"},"content":"### 📆Creating a Consult: `createconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":427,"author":{"gitId":"wesho1107"},"content":"Creates a consultation into upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":428,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":429,"author":{"gitId":"wesho1107"},"content":"Format: `addconsult d/DATE t/TIME n/STUDENT_NAME n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":430,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":431,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":432,"author":{"gitId":"wesho1107"},"content":"* DATE The date of consultation","lastModifiedDate":"2023-10-04"},{"lineNumber":433,"author":{"gitId":"wesho1107"},"content":"* TIME The time of consultation","lastModifiedDate":"2023-10-04"},{"lineNumber":434,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of the student(s)","lastModifiedDate":"2023-10-04"},{"lineNumber":435,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":436,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":437,"author":{"gitId":"wesho1107"},"content":"* `addconsult d/2023-10-30 t/12:30 n/John Doe` creates a consultation for John Doe on 2023-10-30 12:30.","lastModifiedDate":"2023-10-04"},{"lineNumber":438,"author":{"gitId":"wesho1107"},"content":"* `addconsult d/2023-09-30 t/15:30 n/John Doe n/Foo Bar n/Rayson n/Wesley` creates a consultation for John Doe, Foo Bar","lastModifiedDate":"2023-10-04"},{"lineNumber":439,"author":{"gitId":"wesho1107"},"content":" , Rayson and Wesley on 2023-09-30 15:30.","lastModifiedDate":"2023-10-04"},{"lineNumber":440,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":441,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":442,"author":{"gitId":"raydenlim"},"content":"### 👀Showing list of consultations: `showconsults`","lastModifiedDate":"2023-10-06"},{"lineNumber":443,"author":{"gitId":"wesho1107"},"content":"Shows the list of upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":444,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":445,"author":{"gitId":"wesho1107"},"content":"Format: `showconsults`","lastModifiedDate":"2023-10-04"},{"lineNumber":446,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":447,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":448,"author":{"gitId":"wesho1107"},"content":"* `showconsults` displays a list of upcoming consultations","lastModifiedDate":"2023-10-04"},{"lineNumber":449,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":450,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":451,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing details of a consultation: `viewconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":452,"author":{"gitId":"wesho1107"},"content":"Shows the details of a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":453,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":454,"author":{"gitId":"wesho1107"},"content":"Format: `viewconsult INDEX`","lastModifiedDate":"2023-10-04"},{"lineNumber":455,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":456,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":457,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":458,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":459,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":460,"author":{"gitId":"wesho1107"},"content":"* `viewconsult 1` shows the details of the consultation (if there is a consult scheduled).","lastModifiedDate":"2023-10-04"},{"lineNumber":461,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003e2023-09-30 15:30","lastModifiedDate":"2023-10-04"},{"lineNumber":462,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eJohn Doe","lastModifiedDate":"2023-10-04"},{"lineNumber":463,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eFoo Bar","lastModifiedDate":"2023-10-04"},{"lineNumber":464,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eRayson","lastModifiedDate":"2023-10-04"},{"lineNumber":465,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eWesley","lastModifiedDate":"2023-10-04"},{"lineNumber":466,"author":{"gitId":"wesho1107"},"content":"* `viewconsult -1`shows an error message “Consultation not found” (if there is no consult scheduled).","lastModifiedDate":"2023-10-04"},{"lineNumber":467,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":468,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":469,"author":{"gitId":"raydenlim"},"content":"### 🛠️Adding students to a consultation: `addtoconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":470,"author":{"gitId":"wesho1107"},"content":"Adds student(s) into a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":471,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":472,"author":{"gitId":"wesho1107"},"content":"Format: `addtoconsult INDEX n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":473,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":474,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":475,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":476,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of student to be added into the consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":477,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":478,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":479,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult 2 n/Foo Bar`.","lastModifiedDate":"2023-10-04"},{"lineNumber":480,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult 1 n/Rayson n/Ryan Pang`.","lastModifiedDate":"2023-10-04"},{"lineNumber":481,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult -1 n/Foo Bar`shows an error message “Consultation not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":482,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":483,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":484,"author":{"gitId":"raydenlim"},"content":"### ❌Remove students from a consultation: `removefromconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":485,"author":{"gitId":"wesho1107"},"content":"Removes student(s) from a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":486,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":487,"author":{"gitId":"wesho1107"},"content":"Format: `removefromconsult INDEX n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":488,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":489,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":490,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":491,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of student to be added into the consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":492,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":493,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":494,"author":{"gitId":"wesho1107"},"content":"* `removefromconsult 2 n/Foo Bar`.","lastModifiedDate":"2023-10-04"},{"lineNumber":495,"author":{"gitId":"wesho1107"},"content":"* `removefromconsult 1 n/NOTINCONSULT` shows an error message “Student not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":496,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":497,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":498,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a consultation: `deleteconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":499,"author":{"gitId":"wesho1107"},"content":"Deletes the consultation specified by the index.","lastModifiedDate":"2023-10-04"},{"lineNumber":500,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":501,"author":{"gitId":"wesho1107"},"content":"Format: `deleteconsult INDEX`","lastModifiedDate":"2023-10-04"},{"lineNumber":502,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":503,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":504,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":505,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":506,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":507,"author":{"gitId":"wesho1107"},"content":"* `deleteconsult 1` deletes the first consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":508,"author":{"gitId":"wesho1107"},"content":"* `deleteconsult -1` shows an error message “Consultation not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":509,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":510,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":511,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"Respirayson"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous FAKEJARVIS home folder.","lastModifiedDate":"2023-10-05"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":522,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":524,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":526,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":530,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Respirayson":82,"raydenlim":77,"Originalidk":110,"-":191,"wesho1107":76}},{"path":"docs/team/ldinghan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"layout: default.md","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"title: \"Ding Han\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"ldinghan":32}},{"path":"docs/team/originalidk.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"layout: default.md","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"title: \"Ryan Pang\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"Originalidk":32}},{"path":"docs/team/raydenlim.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"layout: default.md","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"title: \"Jian Song (rayden)\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"### Name: Rayden","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"**Bio:** \u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"* I am interested in cybersecurity","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"* I believe that laughter is the best medicine","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"### **Joke of the day**\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"**QNS :** Why did the programmer constantly run into bugs? \u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"**ANS :** Because he used light mode, and bugs are attracted to the light.","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"### Project: FAKEJARVIS","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"![Logo](images/fakejarvis.png)","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"FAKEJARVIS is a brownfield project built on Address Book 3 (AB3), with the intention to help CS1101S Avengers manage their Teaching Assistant (TA) duties.","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"* **New Feature 1**:","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Highlights:","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" * Credits:","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"* **New Feature 2**:","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"* **Code contributed**: [RepoSense link](https://tinyurl.com/CS2103T15raydenlim)","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"* **Project management**:","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * User Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"* **Community**:","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"* **Tools**:","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"raydenlim":44}},{"path":"docs/team/respirayson.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"---","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"layout: default.md","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"title: \"Rayson Yeap\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"---","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"### Project: FAKEJARVIS","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"FAKEJARVIS is a project to help CS1101S Avengers manage their time and job more effectively.","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"* **New Feature**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"* **New Feature**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"* **Code contributed**: [RepoSense](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003drespirayson\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * User Guide: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":32}},{"path":"docs/team/wesho1107.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"layout: default.md","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"title: \"Ho Jia Cheng\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"wesho1107":32}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" \"people\": [ {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Originalidk":1,"-":114}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":211,"author":{"gitId":"Originalidk"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ people.\u003cbr\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":212,"author":{"gitId":"Originalidk"},"content":" FYI, The \u0027filtered list\u0027 is the list of people resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the people so that the user can see the edited person along with all other people. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":213,"author":{"gitId":"Originalidk"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of people is being tracked.","lastModifiedDate":"2023-10-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"Originalidk"},"content":" people.addAll(","lastModifiedDate":"2023-10-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Originalidk":4,"-":307}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.ConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.GradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonGradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.JsonSessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.SessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" SessionListStorage sessionListStorage \u003d new JsonSessionListStorage(userPrefs.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" ConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(userPrefs","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" .getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" GradedTestListStorage gradedTestListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(userPrefs.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, taskListStorage,","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Using task list file : \" + storage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Using consultation list file : \" + storage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Using session list file : \" + storage.getSessionListFilePath());","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e taskListOptional;","lastModifiedDate":"2023-09-28"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList initialTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e gradedTestListOptional;","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList initialGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyConsultationList\u003e consultationListOptional;","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList initialConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e sessionListOptional;","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList initialSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-09-28"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath()","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" + \" populated with a sample TaskList.\");","lastModifiedDate":"2023-09-28"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" initialTaskList \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" + \" Will be starting with an empty TaskList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" initialTaskList \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" gradedTestListOptional \u003d storage.readGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" if (!gradedTestListOptional.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" + \" populated with a sample GradedTest.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList \u003d gradedTestListOptional.orElseGet(SampleDataUtil::getSampleGradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" consultationListOptional \u003d storage.readConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" if (!consultationListOptional.isPresent()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Creating a new data file \" + storage.getConsultationListFilePath()","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" + \" populated with a sample ConsultationList.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" initialConsultationList \u003d consultationListOptional.orElseGet(SampleDataUtil::getSampleConsultationList);","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" logger.warning(\"Data file at \" + storage.getConsultationListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" + \" Will be starting with an empty ConsultationList.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" initialConsultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" sessionListOptional \u003d storage.readSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" if (!sessionListOptional.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Creating a new data file \" + storage.getSessionListFilePath()","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":" + \" populated with a sample SessionList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" initialSessionList \u003d sessionListOptional.orElseGet(SampleDataUtil::getSampleSessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" logger.warning(\"Data file at \" + storage.getSessionListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":" + \" Will be starting with an empty SessionList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" initialSessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" return new ModelManager(initialData, userPrefs, initialTaskList, initialSessionList, initialConsultationList,","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":206,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":211,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":216,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":218,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":223,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":224,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":225,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":226,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":227,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":237,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":238,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":239,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":241,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":242,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":243,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":245,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":247,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":248,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":249,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":250,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":255,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":256,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":258,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":264,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":274,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":275,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":276,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":22,"Respirayson":15,"raydenlim":55,"-":187}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" /** Returns an unmodifiable view of the filtered list of consultations */","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cConsultation\u003e getFilteredConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" /** Returns an unmodifiable view of the filtered list of sessions */","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":4,"Respirayson":4,"-":50,"wesho1107":5}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" storage.saveConsultationList(model.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" return model.getFilteredConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" return model.getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ldinghan":6,"Respirayson":7,"-":88,"wesho1107":7}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_DATE_TIME \u003d \"The date or time provided is invalid\";","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_ASSIGNMENT_GRADED \u003d \"The assignment has already been graded\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_ASSIGNMENT_UNGRADED \u003d \"The assignment has not been graded\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" builder.append(\"; Graded Tests: \");","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" person.getGradedTest().forEach(gradedTest -\u003e builder.append(person.getGradedTest()).append(\", \"));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code consultation} for display to the user.","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public static String format(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" builder.append(\"; Date: \")","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" .append(consultation.getDate())","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" .append(\"; Time: \")","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" .append(consultation.getTime())","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" .append(\"; Students: \");","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" consultation.getStudents().forEach(student -\u003e builder.append(student.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" return builder.toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" * Formats the {@code session} for display to the user.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" public static String format(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" builder.append(\"Session: \")","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" .append(session.getSessionNumber())","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" .append(\";\");","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" session.getStudents().forEach(builder::append);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" return builder.toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public static String format(Task task) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" return task.getName()","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" + \"; Description: \"","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" + task.getDescription()","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" + \"; isDone: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" + task.getIsDone()","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" + \"; Priority: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" + task.getPriority();","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code gradedTest} for display to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public static String format(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" builder.append(\"Graded Test:\")","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" .append(\"; Reading Assessment 1: \").append(gradedTest.getRA1())","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" .append(\"; Reading Assessment 2: \").append(gradedTest.getRA2())","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" .append(\"; MidTerms: \").append(gradedTest.getMidTerms())","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" .append(\"; Final: \").append(gradedTest.getFinals())","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" .append(\"; Practical Exam: \").append(gradedTest.getPracticalExam());","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" return builder.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":13,"Respirayson":14,"raydenlim":33,"Originalidk":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" + PREFIX_TAG + \"owesMoney\"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" + PREFIX_GRADED_TEST + \"Reading Assessment 1: 0\" + \"Reading Assessment 2: 0\"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms: 0\" + \"Finals: 0\" + \"Practical Exam: 0\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raydenlim":4,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" * Adds a grade to a person\u0027s assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static final String COMMAND_WORD \u003d \"addgrade\";","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a grade to a person’s assignment identified \"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" + PREFIX_ASSIGNMENT + \"ASSIGNMENT \"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" + PREFIX_GRADE + \"GRADE \";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Added grade to assignment: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_DUPLICATE_ASSIGNMENT \u003d \"This assignment has already been graded\";","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" private final AssignmentName assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" private final String gradeString;","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" * Creates an AddGradeCommand to add the specified grade to a person\u0027s assignment","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" public AddGradeCommand(Index index, AssignmentName assignmentName, String grade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" requireNonNull(assignmentName);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" this.gradeString \u003d grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentName.isValidName(this.assignmentName.toString())) {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" throw new CommandException(AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" Assignment assignmentToGrade \u003d personToEdit.getAssignment(this.assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" Grade newGrade \u003d new Grade(this.gradeString, assignmentToGrade.maxGrade());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" Person editedPerson \u003d createGradedPerson(personToEdit, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, this.assignmentName));","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" * Creates a new Person with the newly graded assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" * @param reference The person to be graded.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" * @param newGrade The new grade to be given to the person\u0027s assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" * @return New person with a graded assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" public Person createGradedPerson(Person reference, Grade newGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" Name name \u003d reference.getName();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" Phone phone \u003d reference.getPhone();","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" Email email \u003d reference.getEmail();","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" Address address \u003d reference.getAddress();","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" Set\u003cTag\u003e tags \u003d reference.getTags();","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTest \u003d reference.getGradedTest();","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" AssignmentMap updatedAssignmentMap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" reference.getAllAssignments().createUpdatedMap(this.assignmentName, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" return new Person(name, phone, email, address, tags, updatedAssignmentMap, gradedTest);","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AddGradeCommand)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand otherAddGradeCommand \u003d (AddGradeCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" boolean sameAssignmentName \u003d this.assignmentName.equals(otherAddGradeCommand.assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" boolean sameGrade \u003d this.gradeString.equals(otherAddGradeCommand.gradeString);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":" boolean samePersonIndex \u003d this.index.equals(otherAddGradeCommand.index);","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"Originalidk"},"content":" return sameAssignmentName \u0026\u0026 sameGrade \u0026\u0026 samePersonIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":3,"Originalidk":118}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" + \": Adds a new task with the specified description.\\n\"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_NAME + \"NAME \"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"[\" + PREFIX_TASK_DESCRIPTION + \"DESCRIPTION]\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" + \"[\" + PREFIX_TASK_PRIORITY + \"PRIORITY]\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_NAME + \"Do laundry \"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_DESCRIPTION + \"Wash the clothes and pants in basket\"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_PRIORITY + \"medium\";","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Task has been added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" private final Task task;","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(task);","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (model.hasTask(task)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" model.addTask(task);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(task)));","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" AddTaskCommand e \u003d (AddTaskCommand) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" return task.equals(e.task);","lastModifiedDate":"2023-09-27"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":74}},{"path":"src/main/java/seedu/address/logic/commands/CompleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as completed.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"completetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \": Marks the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Marked Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public CompleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" true, taskToMark.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof CompleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand otherMarkCommand \u003d (CompleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherMarkCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":76}},{"path":"src/main/java/seedu/address/logic/commands/CreateConsultCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" * Creates a consultation to the consultation list.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public static final String COMMAND_WORD \u003d \"createconsult\";","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a consultation with the student(s). \"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" + PREFIX_DATE + \"DATE \"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" + PREFIX_TIME + \"TIME \"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" + \"[\" + PREFIX_NAME + \"NAME]...\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" + PREFIX_DATE + \"10/10/2023 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" + PREFIX_TIME + \"15:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" + PREFIX_NAME + \"Foo Bar\";","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New consultation added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" private final LocalDate date;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" private final LocalTime time;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" private Set\u003cName\u003e names;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" private Consultation consultationToAdd;","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" * Creates an CreateConsultCommand to with the specified {@code date, time, names}","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public CreateConsultCommand(LocalDate date, LocalTime time, Set\u003cName\u003e names) {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(date, time, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" this.names \u003d names;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" Set\u003cPerson\u003e studentsToAdd \u003d names.stream().map(model::getMatchingStudentName).collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" this.consultationToAdd \u003d new Consultation(date, time, studentsToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" model.addConsultation(this.consultationToAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(this.consultationToAdd)));","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" // instanceof handles null case","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof CreateConsultCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" CreateConsultCommand otherCreateConsultCommand \u003d (CreateConsultCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" return this.date.equals(otherCreateConsultCommand.date)","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 this.time.equals(otherCreateConsultCommand.time)","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 this.names.equals(otherCreateConsultCommand.names);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" .add(\"toAdd\", consultationToAdd)","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":86}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Deletes a task identified using it\u0027s displayed index from the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, Messages.format(taskToDelete)));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" + \"[\" + PREFIX_GRADED_TEST + \"GRADED TEST]...\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e updatedGrades \u003d editPersonDescriptor.getGradedTests().orElse(personToEdit.getGradedTest());","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedGrades);","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment ra1;","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment ra2;","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" private MidTerms midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" private Finals finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" private PracticalExam pe;","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" private Set\u003cGradedTest\u003e gradedTests;","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" setGradedTest(toCopy.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" public void setReadingAssessment1(ReadingAssessment ra1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":" this.ra1 \u003d ra1;","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" public void setReadingAssessment2(ReadingAssessment ra2) {","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" this.ra2 \u003d ra2;","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" public void setMidTerms(MidTerms midTerms) {","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" public void setFinals(Finals finals) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" public void setPracticalExam(PracticalExam pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" this.pe \u003d pe;","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" * Sets {@code gradedTests} to this object\u0027s {@code gradedTests}.","lastModifiedDate":"2023-10-13"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" * A defensive copy of {@code gradedTests} is used internally.","lastModifiedDate":"2023-10-13"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" this.gradedTests \u003d (gradedTests !\u003d null) ? new HashSet\u003c\u003e(gradedTests) : null;","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable gradedTest set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-13"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-13"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" * Returns {@code Optional#empty()} if {@code gradedTest} is null.","lastModifiedDate":"2023-10-13"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cSet\u003cGradedTest\u003e\u003e getGradedTests() {","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" return (gradedTests !\u003d null) ? Optional.of(Collections.unmodifiableSet(gradedTests)) : Optional.empty();","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":277,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-13"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 Objects.equals(gradedTests, otherEditPersonDescriptor.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-13"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"raydenlim":56,"-":239}},{"path":"src/main/java/seedu/address/logic/commands/IncompleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as incomplete.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"incompletetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \": Unmarks the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Unmarked Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public IncompleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" false, taskToMark.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof IncompleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand otherMarkCommand \u003d (IncompleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherMarkCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":76}},{"path":"src/main/java/seedu/address/logic/commands/session/CreateSessionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.commands.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * Command to create a session with the specified student(s).","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public static final String COMMAND_WORD \u003d \"createsession\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a session with the student(s). \"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" + PREFIX_SESSION + \"SESSION_NUMBER \"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" + \"[\" + PREFIX_NAME + \"NAME]...\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" + PREFIX_NAME + \"Foo Bar\";","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New session added: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" private Name name;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" private Set\u003cName\u003e names;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" private Session sessionToAdd;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Creates a new CreateSessionCommand with a single student to be added to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param name The name of the student to add to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand(SessionNumber sessionNumber, Name name) {","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, name);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Creates a new CreateSessionCommand with multiple students to be added to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param names A set of names of the students to add to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand(SessionNumber sessionNumber, Set\u003cName\u003e names) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" this.names \u003d names;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" * Executes the CreateSessionCommand to create a new session in the model.","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" * @param model The model to execute the command on.","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @return A CommandResult containing the success message.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * @throws CommandException If an error occurs during execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" if (name !\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" // Get the student to add to the session","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" Person studentToAdd \u003d model.getMatchingStudentName(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" // Create the session to add","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber, studentToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" if (names !\u003d null \u0026\u0026 !names.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" SessionStudents studentsToAdd \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" for (Name name : names) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" Person studentToAdd \u003d model.getMatchingStudentName(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" studentsToAdd.add(studentToAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber, studentsToAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" // Add the session to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" model.addSession(this.sessionToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" // Return a success message","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(this.sessionToAdd)));","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" * Checks if this CreateSessionCommand is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof CreateSessionCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand otherCreateSessionCommand \u003d (CreateSessionCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" if (names !\u003d null \u0026\u0026 otherCreateSessionCommand.names !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" // Compare when both \u0027names\u0027 are not null","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" return this.names.equals(otherCreateSessionCommand.names)","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 this.sessionNumber.equals(otherCreateSessionCommand.sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" } else if (names \u003d\u003d null \u0026\u0026 otherCreateSessionCommand.names \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" // Compare when both \u0027names\u0027 are null","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" return this.name \u003d\u003d null ? otherCreateSessionCommand.name \u003d\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" : this.name.equals(otherCreateSessionCommand.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 this.sessionNumber.equals(otherCreateSessionCommand.sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" // \u0027names\u0027 is null in one of the objects","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the CreateSessionCommand.","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" .add(\"toCreate\", sessionToAdd)","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" .toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":148}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e sessionList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTestList \u003d ParserUtil.parseGradedTests(argMultimap.getAllValues(PREFIX_GRADED_TEST));","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, gradedTestList);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ldinghan":3,"raydenlim":6,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" * Parses the given {@code String} of arguments in the context of the AddGradeCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * and returns an AddGradeCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_ASSIGNMENT, PREFIX_GRADE);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_ASSIGNMENT, PREFIX_GRADE)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" Index index;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_ASSIGNMENT, PREFIX_GRADE);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" String actualGrade \u003d argMultimap.getValue(PREFIX_GRADE).get();","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" return new AddGradeCommand(index, assignmentName, actualGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":54}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TASK_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TASK_NAME)","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TASK_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_TASK_NAME).get());","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" TaskDescription taskDescription \u003d ParserUtil.parseTaskDescription(argMultimap","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" .getValue(PREFIX_TASK_DESCRIPTION).orElse(\"\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" TaskPriority priority \u003d ParserUtil.parseTaskPriority(argMultimap","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" .getValue(PREFIX_TASK_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Task(name, taskDescription, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":56}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" // TASKS","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-09-27"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" case CompleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" return new CompleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" case IncompleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" return new IncompleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" case CreateConsultCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" return new CreateConsultCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" case CreateSessionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" return new CreateSessionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":4,"Respirayson":17,"raydenlim":5,"Originalidk":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_GRADED_TEST \u003d new Prefix(\"gt/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_READING_ASSESSMENT \u003d new Prefix(\"gt/ra/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_MIDTERMS \u003d new Prefix(\"gt/m/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_FINALS \u003d new Prefix(\"gt/f/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_PRACTICAL_EXAM \u003d new Prefix(\"gt/pe/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"as/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public static final Prefix PREFIX_GRADE \u003d new Prefix(\"g/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_TIME \u003d new Prefix(\"tt/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" public static final Prefix PREFIX_SESSION \u003d new Prefix(\"s/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_NAME \u003d new Prefix(\"tn/\");","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"td/\");","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_PRIORITY \u003d new Prefix(\"tp/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ldinghan":1,"Respirayson":3,"raydenlim":7,"Originalidk":2,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/CompleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new CompleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandParser implements Parser\u003cCompleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the CompleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a CompleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public CompleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new CompleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CompleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/CreateConsultCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" * Parses input arguments and creates a new CreateConsultationCommand object","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultCommandParser implements Parser\u003cCreateConsultCommand\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * Parses the given `args` string and returns a CreateConsultCommand object if the input is valid.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" * @return A CreateConsultCommand object.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * @throws ParseException If the input arguments are not in the correct format or if parsing fails.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" public CreateConsultCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_TIME, PREFIX_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_DATE, PREFIX_TIME, PREFIX_NAME)","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateConsultCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_DATE, PREFIX_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" LocalDate date \u003d ParserUtil.parseDate(argMultimap.getValue(PREFIX_DATE).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" LocalTime time \u003d ParserUtil.parseTime(argMultimap.getValue(PREFIX_TIME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" Set\u003cName\u003e names \u003d ParserUtil.parseNames(argMultimap.getAllValues(PREFIX_NAME));","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" return new CreateConsultCommand(date, time, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Checks if the specified prefixes are present in the given ArgumentMultimap.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * @param argumentMultimap The ArgumentMultimap to check for prefix presence.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" * @param prefixes The prefixes to be checked.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * @return `true` if all specified prefixes are present, `false` otherwise.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":57}},{"path":"src/main/java/seedu/address/logic/parser/CreateSessionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Parses input arguments and creates a new CreateSessionCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandParser implements Parser\u003cCreateSessionCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * Parses the given `args` string and returns a CreateSessionCommand object if the input is valid.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" * @return A CreateSessionCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * @throws ParseException If the input arguments are not in the correct format or if parsing fails.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SESSION, PREFIX_NAME);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_SESSION, PREFIX_NAME)","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateSessionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SESSION);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d ParserUtil.parseSessionNumber(argMultimap.getValue(PREFIX_SESSION).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" return new CreateSessionCommand(sessionNumber, name);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Checks if the specified prefixes are present in the given ArgumentMultimap.","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param argumentMultimap The ArgumentMultimap to check for prefix presence.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * @param prefixes The prefixes to be checked.","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" * @return `true` if all specified prefixes are present, `false` otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":53}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a DeleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" parseGradedTestForEdit(argMultimap.getAllValues(PREFIX_GRADED_TEST))","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" .ifPresent(editPersonDescriptor::setGradedTest);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" * Parses {@code Collection\u003cString\u003e gradedTest} into a {@code Set\u003cGradedTest\u003e}","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" * if {@code gradedTestIndv} is non-empty.","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" * If {@code gradedTestIndv} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" * {@code Set\u003cGradedTest\u003e} containing zero gradedTestIndv.","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" private Optional\u003cSet\u003cGradedTest\u003e\u003e parseGradedTestForEdit(Collection\u003cString\u003e gradedTestIndv) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" assert gradedTestIndv !\u003d null;","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" if (gradedTestIndv.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" Collection\u003cString\u003e gradedTestIndvSet \u003d gradedTestIndv.size() \u003d\u003d 1","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTestIndv.contains(\"\") ? Collections.emptySet() : gradedTestIndv;","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" return Optional.of(ParserUtil.parseGradedTests(gradedTestIndvSet));","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"raydenlim":23,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/IncompleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new IncompleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandParser implements Parser\u003cIncompleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the IncompleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a IncompleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public IncompleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new IncompleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, IncompleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_DATE \u003d \"Date is needs to be in the format dd/MM/yyyy.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_TIME \u003d \"Time is needs to be in the format HH:mm.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Parses {@code Collection\u003cString\u003e names} into a {@code Set\u003cName\u003e}.","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public static Set\u003cName\u003e parseNames(Collection\u003cString\u003e names) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" requireNonNull(names);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" final Set\u003cName\u003e nameSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" for (String studentName : names) {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" if (!Name.isValidName(studentName)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" nameSet.add(parseName(studentName));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" return nameSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" * Parses {@code String date} into an {@code LocalDate} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" * trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" public static LocalDate parseDate(String date) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" requireNonNull(date);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" return LocalDate.parse(trimmedDate, formatter);","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MESSAGE_INVALID_DATE);","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" * Parses {@code String time} into an {@code LocalTime} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" * trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" public static LocalTime parseTime(String time) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" requireNonNull(time);","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" String trimmedTime \u003d time.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" return LocalTime.parse(trimmedTime, formatter);","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MESSAGE_INVALID_TIME);","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" * Parses the input session number as a string and returns it as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to be parsed.","lastModifiedDate":"2023-10-13"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" * @return The parsed session number as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" * @throws NumberFormatException If the session number is not a valid integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" public static SessionNumber parseSessionNumber(String sessionNumber) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" String trimmedSessionNumber \u003d sessionNumber.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":" if (!SessionNumber.isValidSessionNumber(trimmedSessionNumber)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":" return new SessionNumber(trimmedSessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String taskName} into a {@code TaskName}.","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-09-27"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":" public static TaskName parseTaskName(String name) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-09-27"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":" if (!TaskName.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":" return new TaskName(trimmedName);","lastModifiedDate":"2023-09-27"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String taskDescription} into a {@code TaskDescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-09-27"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" public static TaskDescription parseTaskDescription(String name) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":225,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-09-27"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":" if (!TaskDescription.isValidDescription(trimmedName)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":" return new TaskDescription(trimmedName);","lastModifiedDate":"2023-09-27"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String gradedTest} into a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code gradedTest} is invalid.","lastModifiedDate":"2023-10-13"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public static GradedTest parseGradedTest(String gradedTest) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-13"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" String trimmedGradedTest \u003d gradedTest.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" String[] components \u003d trimmedGradedTest.split(\"\\\\|\");","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" if (components.length !\u003d 5) {","lastModifiedDate":"2023-10-13"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(\"Invalid GradedTest format. Expected 5 components.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" String ra1Score \u003d components[0].replaceAll(\"Reading Assessment 1:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" String ra2Score \u003d components[1].replaceAll(\"Reading Assessment 2:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" String midTermsScore \u003d components[2].replaceAll(\"MidTerms:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" String finalsScore \u003d components[3].replaceAll(\"Finals:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":" String peScore \u003d components[4].replaceAll(\"Practical Exam:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment readingAssessment1 \u003d new ReadingAssessment(ra1Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment readingAssessment2 \u003d new ReadingAssessment(ra2Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms \u003d new MidTerms(midTermsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" Finals finals \u003d new Finals(finalsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" PracticalExam practicalExam \u003d new PracticalExam(peScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" if (!GradedTest.isValidGradeTestName(trimmedGradedTest)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(GradedTest.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(trimmedGradedTest);","lastModifiedDate":"2023-10-19"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" * Parses {@code Collection\u003cString\u003e gradedTest} into a {@code Set\u003cGradedTest\u003e}.","lastModifiedDate":"2023-10-13"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cGradedTest\u003e parseGradedTests(Collection\u003cString\u003e gradedTests) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":" final Set\u003cGradedTest\u003e gradedTestSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" for (String gradedTestName : gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":" gradedTestSet.add(parseGradedTest(gradedTestName));","lastModifiedDate":"2023-10-13"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":" return gradedTestSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String readingAssessment} into a {@code readingAssessment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"raydenlim"},"content":" public static ReadingAssessment parseReadingAssessment(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"raydenlim"},"content":" return new ReadingAssessment(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String readingAssessment} into a {@code readingAssessment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" public static MidTerms parseMidTerms(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":" if (!MidTerms.isValidMidTermResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MidTerms.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" return new MidTerms(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String finals} into a {@code finals}.","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" public static Finals parseFinals(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":321,"author":{"gitId":"raydenlim"},"content":" if (!Finals.isValidFinalsResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(Finals.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" return new Finals(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String practicalExam} into a {@code practicalExam}.","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"raydenlim"},"content":" public static PracticalExam parsePracticalExam(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"raydenlim"},"content":" if (!PracticalExam.isValidPeResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(PracticalExam.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"raydenlim"},"content":" return new PracticalExam(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":342,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String priority} into a {@code TaskPriority}.","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"Respirayson"},"content":" * String will be uppercase.","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"Respirayson"},"content":" public static TaskPriority parseTaskPriority(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":351,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim().toUpperCase();","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"Respirayson"},"content":" for (TaskPriority priority : TaskPriority.values()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"Respirayson"},"content":" if (trimmedName.equals(priority.name())) {","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"Respirayson"},"content":" return TaskPriority.valueOf(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":356,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":357,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":358,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":" * Parses a {@code String assignmentName} into a {@code AssignmentName}.","lastModifiedDate":"2023-10-19"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":363,"author":{"gitId":"Originalidk"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":364,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":365,"author":{"gitId":"Originalidk"},"content":" public static AssignmentName parseAssignmentName(String name) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":366,"author":{"gitId":"Originalidk"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":367,"author":{"gitId":"Originalidk"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-14"},{"lineNumber":368,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentName.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":369,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-14"},{"lineNumber":370,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":371,"author":{"gitId":"Originalidk"},"content":" return new AssignmentName(trimmedName);","lastModifiedDate":"2023-10-14"},{"lineNumber":372,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":373,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ldinghan":32,"Respirayson":49,"raydenlim":153,"Originalidk":15,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" * Replaces the contents of the person list with {@code people}.","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" * {@code people} must not contain duplicate persons.","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public void setPersons(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" this.persons.setPersons(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * Returns person if a {@code person} with the same name exists in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" public Person matchName(Name name) {","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" return persons.matchName(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":9,"Originalidk":4,"-":126}},{"path":"src/main/java/seedu/address/model/AssignmentMapBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Represents a collection of assignments. This class is responsible for managing and manipulating assignment data.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMapBook implements ReadOnlyAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" private final AssignmentMap assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public AssignmentMapBook() {}","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" * Creates an AssignmentMapBook using the AssignmentMap in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public AssignmentMapBook(ReadOnlyAssignmentMap toBeCopied) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this();","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" * Replaces the contents of the assignment map with {@code newAssignments}.","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" public void setAssignments(Map\u003cAssignmentName, Assignment\u003e newAssignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" this.assignments.setAssignmentMap(newAssignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * Resets the existing data of this {@code AssignmentMapBook} with {@code newData}.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" public void resetData(ReadOnlyAssignmentMap newData) {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" setAssignments(newData.getAssignmentMap());","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" public Assignment getAssignment(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" return assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" public ObservableMap\u003cAssignmentName, Assignment\u003e getAssignmentMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" return assignments.asUnmodifiableObservableMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":57}},{"path":"src/main/java/seedu/address/model/ConsultationListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.ConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Represents a collection of consultations. This class is responsible for managing and manipulating","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * consultation data.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListBook implements ReadOnlyConsultationList {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private final ConsultationList consultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" * Initializes a new instance of ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" consultationList \u003d new ConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Initializes a new instance of ConsultationListBook by copying data from an existing ReadOnlyConsultationList.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * @param toBeCopied The ReadOnlyConsultationList to copy data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook(ReadOnlyConsultationList toBeCopied) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" * Sets the consultations list with the provided list of consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" * @param consultations The list of consultations to set.","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" public void setConsultationList(List\u003cConsultation\u003e consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" this.consultationList.setConsultationList(consultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * Resets the data in the ConsultationListBook by replacing it with the data from a ReadOnlyConsultationList.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * @param newData The ReadOnlyConsultationList to copy data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void resetData(ReadOnlyConsultationList newData) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" setConsultationList(newData.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" * Checks if the ConsultationListBook contains the provided consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" * @param consultation The consultation to check for existence.","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" * @return True if the consultation exists in the list, false otherwise.","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" return consultationList.contains(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" * Adds a consultation to the ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" * @param consultation The consultation to add.","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" * Returns an observable list of consultations from the ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" * @return An unmodifiable observable list of consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e getConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" return consultationList.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof ConsultationListBook)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook otherConsultationList \u003d (ConsultationListBook) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" return consultationList.equals(otherConsultationList.consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":97}},{"path":"src/main/java/seedu/address/model/GradedTestListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" * Wraps all data at the gradedTest-list level","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" * Duplicates are not allowed (by .isSameGradedTest comparison)","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListBook implements ReadOnlyGradedTestList {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" private final GradedTestList gradedTests;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * among constructors.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new GradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook() {}","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * Creates an GradedTestList using the GradedTest in the {@code toBeCopied}","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook(ReadOnlyGradedTestList toBeCopied) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" this();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" * Replaces the contents of the GradedTest list with {@code gradedTEst}.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTests} must not contain duplicate gradedTest.","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.setGradedTests(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" * Replaces the given gradedTest {@code target} in the list with {@code editedGradedTest}.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same as another existing","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * gradedTest in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" requireNonNull(editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" gradedTests.editGradedTest(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" * Resets the existing data of this {@code GradedTestList} with {@code newData}.","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void resetData(ReadOnlyGradedTestList newData) {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" setGradedTests(newData.getGradedTestList());","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" //// gradedTest-level operations","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" * Returns the gradedTest at the given index.","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" return gradedTests.getGradedTest(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" * Returns true if a gradedTest with the same identity as {@code gradedTest} exists in the gradedTest list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" return gradedTests.contains(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" * Adds a gradedTest to the gradedTest list.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gt) {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" gradedTests.add(gt);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" * Removes {@code key} from this {@code GradedTestListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" * {@code key} must exist in the gradedTest list book.","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public void removeGradedTest(GradedTest key) {","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" gradedTests.remove(key);","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" //// util methods","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e getGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" return gradedTests.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d null | getClass() !\u003d other.getClass()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook otherGradedTestList \u003d (GradedTestListBook) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" return gradedTests.equals(otherGradedTestList.gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" return gradedTests.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":138}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Predicate\u003cSession\u003e PREDICATE_SHOW_ALL_SESSIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" Predicate\u003cGradedTest\u003e PREDICATE_SHOW_ALL_GRADED_TEST \u003d unused -\u003e true;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" Predicate\u003cConsultation\u003e PREDICATE_SHOW_ALL_CONSULTATIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" void setTaskListFilePath(Path taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" * Returns the AddressBook","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" Session findSessionBySessionNumber(SessionNumber sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" * Adds the given sesssion.","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" void addSession(Session session);","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" /** Returns an unmodifiable view of the filtered session list */","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" /** Returns the SessionList */","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList getSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" * Updates the filter of the filtered session list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" void updateFilteredSessionList(Predicate\u003cSession\u003e predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" void setTaskList(ReadOnlyTaskList taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" /** Returns the TaskList */","lastModifiedDate":"2023-09-28"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList getTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2023-09-28"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" * Deletes the given task.","lastModifiedDate":"2023-09-28"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" * The task must exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" void deleteTask(Task target);","lastModifiedDate":"2023-09-28"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" * Adds the given task.","lastModifiedDate":"2023-09-28"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" void addTask(Task task);","lastModifiedDate":"2023-09-28"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" * Returns task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" * {@code index} must be within the size of the task list.","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" Task getTask(int index);","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2023-09-28"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-09-28"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" void setGradedTestList(ReadOnlyGradedTestList gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" /** Returns the GradeTestList */","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList getGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" boolean hasGradedTest(GradedTest gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" * Deletes the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" void deleteGradedTest(GradedTest target);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" * Adds the given task.","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" void addGradedTest(GradedTest gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" * Returns gradedTest at the given index.","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" * {@code index} must be within the size of the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" GradedTest getGradedTest(int index);","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" * Replaces the given task {@code target} with {@code editedGradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" * as another existing gradedTest in the gradedTest List.","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" void setGradedTest(GradedTest target, GradedTest editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" * Returns the user prefs\u0027 gradedTest list file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" Path getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" void setGradedTestListFilePath(Path gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":223,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" * Returns true if a consultation with the same identity as {@code task} exists in the consultation list.","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" boolean hasConsultation(Consultation consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" * Adds the given consultation.","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" void addConsultation(Consultation consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" /** Returns the ConsultationList */","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList getConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" /** Returns an unmodifiable view of the filtered consultation list */","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" ObservableList\u003cConsultation\u003e getFilteredConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" * Updates the filter of the filtered consultation list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":250,"author":{"gitId":"ldinghan"},"content":" Person getMatchingStudentName(Name name);","lastModifiedDate":"2023-10-13"},{"lineNumber":251,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"Respirayson"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2023-09-28"},{"lineNumber":253,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":254,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":255,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":256,"author":{"gitId":"Respirayson"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2023-09-28"},{"lineNumber":257,"author":{"gitId":"Respirayson"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-09-28"},{"lineNumber":258,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":259,"author":{"gitId":"Respirayson"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":260,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":38,"Respirayson":63,"raydenlim":75,"-":85}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" private final SessionListBook sessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final TaskListBook taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" private final GradedTestListBook gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private final ConsultationListBook consultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" private final FilteredList\u003cGradedTest\u003e filteredGradedTest;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" private final FilteredList\u003cConsultation\u003e filteredConsultations;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private final FilteredList\u003cSession\u003e filteredSessions;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs, ReadOnlyTaskList taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" ReadOnlySessionList sessionList, ReadOnlyConsultationList consultationList,","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" this.consultationList \u003d new ConsultationListBook(consultationList);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.sessionList \u003d new SessionListBook(sessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" this.taskList \u003d new TaskListBook(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" this.gradedTestList \u003d new GradedTestListBook(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getTaskList());","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" filteredGradedTest \u003d new FilteredList\u003c\u003e(this.gradedTestList.getGradedTestList());","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" filteredConsultations \u003d new FilteredList\u003c\u003e(this.consultationList.getConsultationList());","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" filteredSessions \u003d new FilteredList\u003c\u003e(this.sessionList.getSessionList());","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" * Initializes a ModelManager with default data.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" this(new AddressBook(), new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" return userPrefs.getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" userPrefs.setGradedTestListFilePath(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":158,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" return sessionList.getSession(sessionNumber);","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" requireNonNull(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" public ReadOnlySessionList getSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" return sessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the list of {@code Session} backed by the internal list of","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" return filteredSessions;","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" public void updateFilteredSessionList(Predicate\u003cSession\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" filteredSessions.setPredicate(predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskListBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":198,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":" public void setTaskList(ReadOnlyTaskList taskList) {","lastModifiedDate":"2023-09-28"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":" this.taskList.resetData(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" public ReadOnlyTaskList getTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" return taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":" requireNonNull(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" return taskList.getTask(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2023-09-28"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":" taskList.removeTask(target);","lastModifiedDate":"2023-09-28"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":225,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-09-28"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":231,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":232,"author":{"gitId":"Respirayson"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-28"},{"lineNumber":233,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":234,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":235,"author":{"gitId":"Respirayson"},"content":" taskList.setTask(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":236,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":237,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Graded Test List Book \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestList(ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" this.gradedTestList.resetData(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyGradedTestList getGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" return gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" * Returns true if a task with the same identity as {@code gradedTest} exists in the gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" return gradedTestList.hasGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" return gradedTestList.getGradedTest(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" public void deleteGradedTest(GradedTest target) {","lastModifiedDate":"2023-10-15"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":" gradedTestList.removeGradedTest(target);","lastModifiedDate":"2023-10-15"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" * Adds the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-15"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":286,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":288,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":289,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":290,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":291,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":294,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":295,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":296,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":297,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Consultations \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" return consultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":" return consultationList.hasConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" return filteredConsultations;","lastModifiedDate":"2023-10-20"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" filteredConsultations.setPredicate(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-20"},{"lineNumber":330,"author":{"gitId":"raydenlim"},"content":" return addressBook.matchName(name);","lastModifiedDate":"2023-10-20"},{"lineNumber":331,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":334,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Task List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":335,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":336,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":337,"author":{"gitId":"Respirayson"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2023-09-28"},{"lineNumber":338,"author":{"gitId":"Respirayson"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-09-28"},{"lineNumber":339,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":340,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"Respirayson"},"content":" return filteredTasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":345,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":346,"author":{"gitId":"Respirayson"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2023-09-28"},{"lineNumber":347,"author":{"gitId":"Respirayson"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":348,"author":{"gitId":"Respirayson"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":349,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":350,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":351,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":352,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":353,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":357,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":358,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":359,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":360,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":362,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":363,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":364,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":365,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2023-09-28"},{"lineNumber":366,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2023-09-28"},{"lineNumber":367,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 filteredTasks.equals(otherModelManager.filteredTasks)","lastModifiedDate":"2023-10-15"},{"lineNumber":368,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 filteredGradedTest.equals(otherModelManager.filteredGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":371,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered GradedTest List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":372,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":373,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":374,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2023-10-15"},{"lineNumber":375,"author":{"gitId":"raydenlim"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-15"},{"lineNumber":376,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":377,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":378,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e getFilteredGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":379,"author":{"gitId":"raydenlim"},"content":" return filteredGradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":380,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":381,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":382,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":" * Updates the filtered task list with the given predicate.","lastModifiedDate":"2023-10-15"},{"lineNumber":384,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":385,"author":{"gitId":"raydenlim"},"content":" * @param predicate The filtering predicate to apply.","lastModifiedDate":"2023-10-15"},{"lineNumber":386,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":387,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredGradedTestList(Predicate\u003cGradedTest\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":388,"author":{"gitId":"raydenlim"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":389,"author":{"gitId":"raydenlim"},"content":" filteredGradedTest.setPredicate(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":390,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":391,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":40,"Respirayson":79,"raydenlim":128,"-":144}},{"path":"src/main/java/seedu/address/model/ReadOnlyAssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Unmodifiable view of an assignment map.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public interface ReadOnlyAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Returns an unmodifiable view of the assignment map.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" ObservableMap\u003cAssignmentName, Assignment\u003e getAssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" * Unmodifiable view of a consultation list","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public interface ReadOnlyConsultationList {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Returns an unmodifiable view of the consultation list.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * This list will not contain any duplicate consultation.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cConsultation\u003e getConsultationList();","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyGradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Unmodified view of a gradedTest List","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"public interface ReadOnlyGradedTestList {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable view of the task list.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * This list will not contain any duplicate tasks.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" ObservableList\u003cGradedTest\u003e getGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":15}},{"path":"src/main/java/seedu/address/model/ReadOnlySessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Unmodifiable view of a session list","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"public interface ReadOnlySessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the session list.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * This list will not contain any duplicate session.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Unmodifiable view of a task list","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public interface ReadOnlyTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" * Returns an unmodifiable view of the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * This list will not contain any duplicate tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":17}},{"path":"src/main/java/seedu/address/model/SessionListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Represents a collection of sessions. This class is responsible for managing and manipulating","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * session data.","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"public class SessionListBook implements ReadOnlySessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" private final SessionList sessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" * Initializes a new instance of SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public SessionListBook() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" * Initializes a new instance of SessionListBook by copying data from an existing ReadOnlySessionList.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * @param toBeCopied The ReadOnlySessionList to copy data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public SessionListBook(ReadOnlySessionList toBeCopied) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" this();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" * Sets the session list with the provided list of sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * @param sessions The list of sessions to set.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void setSessionList(List\u003cSession\u003e sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" this.sessionList.setSessionList(sessions);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Resets the data in the SessionListBook by replacing it with the data from a ReadOnlySessionList.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param newData The ReadOnlySessionList to copy data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" public void resetData(ReadOnlySessionList newData) {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" setSessionList(newData.getSessionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * Retrieves a session with the specified session number.","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to search for.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" * @return The session with the specified session number, or null if not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" public Session getSession(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" return sessionList.findSessionBySessionNumber(sessionNumber);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Checks if the SessionListBook contains the provided session.","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @param session The session to check for existence.","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * @return True if the session exists in the list, false otherwise.","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public boolean hasSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" requireNonNull(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" return sessionList.contains(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" * Adds a session to the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" * @param session The session to add.","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" * Sets a session with the specified session number to a new session.","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" * @param targetSession The session to be modified.","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" * @param editedSession The modified session information.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" public void setSession(Session targetSession, Session editedSession) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" requireNonNull(editedSession);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" sessionList.setSession(targetSession, editedSession);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * Removes a session from the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" * @param session The session to remove.","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" public void removeSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" sessionList.remove(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" .add(\"sessions\", sessionList)","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" * Returns an observable list of sessions from the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" * @return An unmodifiable observable list of sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" return sessionList.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionListBook)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" SessionListBook otherSessionList \u003d (SessionListBook) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" return sessionList.equals(otherSessionList.sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" return sessionList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":143}},{"path":"src/main/java/seedu/address/model/TaskListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * Wraps all data at the task-list level","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * Duplicates are not allowed (by .isSameTask comparison)","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class TaskListBook implements ReadOnlyTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * among constructors.","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" {","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public TaskListBook() {}","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" * Creates an TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public TaskListBook(ReadOnlyTaskList toBeCopied) {","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" this();","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" //// list overwrite operations","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" * Resets the existing data of this {@code TaskList} with {@code newData}.","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void resetData(ReadOnlyTaskList newData) {","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" // task-level operations","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" * Returns the task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return tasks.getTask(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" requireNonNull(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return tasks.contains(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" * The task must not already exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-28"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2023-09-28"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-28"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" tasks.editTask(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" * Removes {@code key} from this {@code TaskListBook}.","lastModifiedDate":"2023-09-28"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" * {@code key} must exist in the task list book.","lastModifiedDate":"2023-09-28"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" public void removeTask(Task key) {","lastModifiedDate":"2023-09-28"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" tasks.remove(key);","lastModifiedDate":"2023-09-28"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" //// util methods","lastModifiedDate":"2023-09-28"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-28"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-28"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2023-09-28"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-09-28"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2023-09-28"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-28"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-28"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-28"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-28"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskListBook)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-28"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" TaskListBook otherTaskList \u003d (TaskListBook) other;","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" return tasks.equals(otherTaskList.tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" return tasks.hashCode();","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"ldinghan":1,"Respirayson":136}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\" , \"tasklist.json\");","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private Path sessionListFilePath \u003d Paths.get(\"data\", \"sessionlist.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private Path consultationListFilePath \u003d Paths.get(\"data\", \"consultationlist.json\");","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private Path gradedTestListFilePath \u003d Paths.get(\"data\" , \"gradedtestlist.json\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" return sessionListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" return consultationListFilePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" public void setSessionListFilePath(Path sessionListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" this.sessionListFilePath \u003d sessionListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" return taskListFilePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" return gradedTestListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" this.gradedTestListFilePath \u003d gradedTestListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" sb.append(\"\\nTask list file location : \" + taskListFilePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" sb.append(\"\\nSession list file location : \" + sessionListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" sb.append(\"\\nConsultation list file location : \" + consultationListFilePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" sb.append(\"\\nGradedTask list file location : \" + gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":11,"Respirayson":11,"raydenlim":16,"-":88}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * Utility class for managing attendance records.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"public abstract class Attendance {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * Marks a student as present in a specific session and updates their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * @param session The session in which the student is marked present.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * @param student The student to be marked present.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public static void markPresent(Session session, Person student) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" student.attendSession(session);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" session.addStudent(student);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * Marks a student as absent in a specific session and updates their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" * @param session The session in which the student is marked absent.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * @param student The student to be marked absent.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" public static void markAbsent(Session session, Person student) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" student.missSession(session);","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" session.removeStudent(student);","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * Retrieves the list of students attending a specific session.","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * @param session The session for which attendance is requested.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * @return A set of students attending the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public static SessionStudents getAttendanceBySession(Session session) {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" return session.getStudents();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Retrieves the list of sessions attended by a specific student.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param student The student for which attendance records are requested.","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the sessions attended by the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public static Set\u003cSession\u003e getAttendanceByStudent(Person student, SessionList sessionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" return sessionList.findSessionsByStudent(student);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":57}},{"path":"src/main/java/seedu/address/model/consultation/Consultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Represents a Consultation with a date, time and specified students.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class Consultation {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private LocalDate date;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private LocalTime time;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" private Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" * Constructs an {@code Consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * @param date A valid date object.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" * @param time A valid time object.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @param students A set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public Consultation(LocalDate date, LocalTime time, Set\u003cPerson\u003e students) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof Consultation)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" Consultation otherConsultation \u003d (Consultation) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" return students.equals(otherConsultation.students)","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 date.equals(otherConsultation.date)","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 time.equals(otherConsultation.time);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * Returns true if both consultations have the same details.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" public boolean isSameConsultation(Consultation other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" return other !\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getDate().equals(getDate())","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getTime().equals(getTime())","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getStudents().equals(getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" public LocalDate getDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" return date;","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" public LocalTime getTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" return time;","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" public Set\u003cPerson\u003e getStudents() {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" return students;","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" public Set\u003cName\u003e getStudentsNames() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" return students.stream().map(Person::getName).collect(Collectors.toSet());","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":75}},{"path":"src/main/java/seedu/address/model/consultation/ConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.ConsultationNotFoundException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.DuplicateConsultationException;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" * A list of Consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class ConsultationList implements Iterable\u003cConsultation\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private ObservableList\u003cConsultation\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" private final ObservableList\u003cConsultation\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public void setConsultationList(List\u003cConsultation\u003e consultationList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" internalList.setAll(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * Returns true if the list contains an equivalent consultation as the given argument.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public boolean contains(Consultation toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" return internalList.stream().anyMatch(toCheck::isSameConsultation);","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" * Adds a consultation to the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" throw new DuplicateConsultationException();","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * Removes the equivalent consultation from the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * The consultation must exist in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void remove(Consultation toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" throw new ConsultationNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public Iterator\u003cConsultation\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" return true; // Same object, equal","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof ConsultationList)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" return false; // Not the same class, not equal","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" ConsultationList otherList \u003d (ConsultationList) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" // Check if the lists have the same sessions in the same order","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":86}},{"path":"src/main/java/seedu/address/model/consultation/ReadOnlyConsultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" * Unmodifiable view of a Consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public interface ReadOnlyConsultation {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/seedu/address/model/consultation/exceptions/ConsultationNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" * Signals that the operation is unable to find the specified consultation.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class ConsultationNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public ConsultationNotFoundException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" super(\"Consultation not found\");","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":10}},{"path":"src/main/java/seedu/address/model/consultation/exceptions/DuplicateConsultationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" * Signals that the operation will result in duplicate Consultations.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class DuplicateConsultationException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public DuplicateConsultationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" super(\"Operation would result in duplicate consultations\");","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":10}},{"path":"src/main/java/seedu/address/model/gradedtest/Finals.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Final result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Final result is a positive number and indicates the score achieved in the exam.","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class Finals {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * @param finalResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public Finals(String finalResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" requireNonNull(finalResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidFinalsResult(finalResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" this.value \u003d finalResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid finals result.","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidFinalsResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof Finals)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" Finals otherFinals \u003d (Finals) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherFinals.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":62}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTest.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class GradedTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"GradedTest Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"Reading Assessment 1:[-\\\\d]+ \\\\| Reading Assessment 2:[-\\\\d]+ \\\\| \"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms:[-\\\\d]+ \\\\| Finals:[-\\\\d]+ \\\\| Practical Exam:[-\\\\d]+\";","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_VALUE \u003d \"-\";","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" // Identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public final String gradedTestsIndv;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private final ReadingAssessment readingAssessment1;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final ReadingAssessment readingAssessment2;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private final MidTerms midTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private final Finals finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private final PracticalExam practicalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" * @param readingAssessment1 The first reading assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" * @param readingAssessment2 The second reading assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * @param midTerms The mid-terms.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" * @param finals The finals.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" * @param practicalExam The practical exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public GradedTest(ReadingAssessment readingAssessment1, ReadingAssessment readingAssessment2,","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms, Finals finals, PracticalExam practicalExam) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" this.gradedTestsIndv \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:\" + readingAssessment1.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" + \"Reading Assessment 2:\" + readingAssessment2.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms:\" + midTerms.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" + \"Finals:\" + finals.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" + \"Practical Exam:\" + practicalExam.toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" * @param gradedTestsIndv A valid gradedTest name.","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public GradedTest(String gradedTestsIndv) {","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" this.gradedTestsIndv \u003d gradedTestsIndv;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestsIndv);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" if (!isValidGradeTestName(gradedTestsIndv)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" String[] components \u003d gradedTestsIndv.split(\"\\\\|\");","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" if (components.length !\u003d 5) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(\"Invalid GradedTest format. Expected 5 components.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" String ra1Score \u003d components[0].replaceAll(\"Reading Assessment 1:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String ra2Score \u003d components[1].replaceAll(\"Reading Assessment 2:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" String midTermsScore \u003d components[2].replaceAll(\"MidTerms:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" String finalsScore \u003d components[3].replaceAll(\"Finals:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String peScore \u003d components[4].replaceAll(\"Practical Exam:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d new ReadingAssessment(ra1Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d new ReadingAssessment(ra2Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d new MidTerms(midTermsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d new Finals(finalsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d new PracticalExam(peScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment getRA1() {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" return readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment getRA2() {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" return readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public MidTerms getMidTerms() {","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" return midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" public Finals getFinals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" return finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public PracticalExam getPracticalExam() {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" return practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public String getGradedTests() {","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" return gradedTestsIndv;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid gradedTest name.","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidGradeTestName(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" * Returns true if both tasks have the same name and description.","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public boolean isSameGradedTest(GradedTest otherGradedTest) {","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" if (otherGradedTest \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" return otherGradedTest !\u003d null","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getGradedTests().equals(gradedTestsIndv)","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getRA1().equals(readingAssessment1)","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getRA2().equals(readingAssessment2)","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getMidTerms().equals(midTerms)","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getFinals().equals(finals)","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getPracticalExam().equals(practicalExam);","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTest)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" GradedTest otherTest \u003d (GradedTest) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" return readingAssessment1.equals(otherTest.readingAssessment1)","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 readingAssessment2.equals(otherTest.readingAssessment2)","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 midTerms.equals(otherTest.midTerms)","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 finals.equals(otherTest.finals)","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 practicalExam.equals(otherTest.practicalExam)","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTestsIndv.equals(otherTest.gradedTestsIndv);","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" return Objects.hash(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" .add(\"Reading Assessment 1\", readingAssessment1)","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" .add(\"Reading Assessment 2\", readingAssessment2)","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" .add(\"MidTerms\", midTerms)","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" .add(\"Finals\", finals)","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" .add(\"Practical Exam\", practicalExam)","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" .toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":176}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.DuplicateGradedTestException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.GradedTestNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" * A list of gradedTest that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" * A gradedTest is considered unique by comparing using {@code GradedTest#isSameGradedTest(gradedTest)}.","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" * As such, adding and updating of gradedTest uses GradedTest#isSameGradedTest(gradedTest) for equality","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * so as to ensure that the gradedTest being added or updated is unique in terms of identity in the GradedTestList.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * However, the removal of a gradedTest uses GradedTest#equals(Object) so as to ensure that the gradedTest with exactly","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * the same fields will be removed.","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * @see GradedTest#isSameGradedTest(GradedTest)","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"public class GradedTestList implements Iterable\u003cGradedTest\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" private final ObservableList\u003cGradedTest\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private final ObservableList\u003cGradedTest\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * Returns true if the list contains an equivalent gradedTest as the given argument.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public boolean contains(GradedTest toCheck) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" return internalList.stream().anyMatch(toCheck::isSameGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * Returns the gradedTest at the given index.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" if (index \u003e\u003d internalList.size()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" throw new IllegalArgumentException(\"Index is out of bounds\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" return internalList.get(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" * Adds a gradedTest to the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must not already exist in the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public void add(GradedTest toAdd) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" * Replaces the gradedTest {@code target} in the list with {@code editedGradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same as another","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" * existing gradedTest in the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" throw new GradedTestNotFoundException();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" if (!target.isSameGradedTest(editedGradedTest) \u0026\u0026 contains(editedGradedTest)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" internalList.set(index, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" * Removes the equivalent gradedTest from the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must exist in the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void remove(GradedTest toRemove) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" throw new GradedTestNotFoundException();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(GradedTestList replacement) {","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Replaces the contents of this list with {@code gradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not contain duplicate gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" if (!isUniqueGradedTest(gradedTests)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" internalList.setAll(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public Iterator\u003cGradedTest\u003e iterator() {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTestList)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" GradedTestList otherList \u003d (GradedTestList) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" * Returns true if {@code gradedTest} contains only unique gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" private boolean isUniqueGradedTest(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" for (int i \u003d 0; i \u003c gradedTests.size() - 1; i++) {","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" for (int j \u003d i + 1; j \u003c gradedTests.size(); j++) {","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" if (gradedTests.get(i).isSameGradedTest(gradedTests.get(j))) {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":163}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTestNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" * Tests that a {@code GradedTest}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNameContainsKeywordsPredicate implements Predicate\u003cGradedTest\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public GradedTestNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public boolean test(GradedTest gradedTest) {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" return keywords.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" StringUtil.containsWordIgnoreCase(gradedTest.getRA1().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getRA2().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getMidTerms().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getFinals().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getPracticalExam().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" );","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTestNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" (GradedTestNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this).add(\"gradedTest keywords\", keywords).toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":50}},{"path":"src/main/java/seedu/address/model/gradedtest/MidTerms.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a MidTerm result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A MidTerm result is a positive number that indicates the score achieved in the exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class MidTerms {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param midTermResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public MidTerms(String midTermResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(midTermResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidMidTermResult(midTermResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d midTermResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid PE result.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidMidTermResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof MidTerms)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" MidTerms otherMidTerm \u003d (MidTerms) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherMidTerm.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":63}},{"path":"src/main/java/seedu/address/model/gradedtest/PracticalExam.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Practical Exam result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Practical Exam result is a positive number that indicates the score achieved in the exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class PracticalExam {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param peResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public PracticalExam(String peResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(peResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidPeResult(peResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d peResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid PE result.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidPeResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof PracticalExam)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" PracticalExam otherPE \u003d (PracticalExam) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherPE.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":64}},{"path":"src/main/java/seedu/address/model/gradedtest/ReadingAssessment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Reading Assessment result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Reading Assessment result is a positive number that indicates the score achieved in the assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class ReadingAssessment {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param raResult A valid raResult number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment(String raResult) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(raResult);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidRaResult(raResult), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d raResult;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid RA result.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidRaResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof ReadingAssessment)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment otherRA \u003d (ReadingAssessment) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherRA.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":64}},{"path":"src/main/java/seedu/address/model/gradedtest/exceptions/DuplicateGradedTestException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" * Signals that the operation will result in duplicate Graded Test","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" * (Graded Tests are considered duplicates if they have the same identity).","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"public class DuplicateGradedTestException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" public DuplicateGradedTestException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" super(\"Operation would result in duplicate graded tests\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":11}},{"path":"src/main/java/seedu/address/model/gradedtest/exceptions/GradedTestNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" * Signals that the operation is unable to find the specified gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" public GradedTestNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" super(\"Graded Test not found.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":10}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private final Set\u003cGradedTest\u003e gradedTests \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" private final AssignmentMap assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" * Creates a new Person object with a pre-set map of assignments.","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" AssignmentMap assignments, Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" requireAllNonNull(name, phone, email, address, tags, assignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" * Returns an immutable gradedTests set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public Set\u003cGradedTest\u003e getGradedTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" return Collections.unmodifiableSet(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" * Adds a student to a session and a session to a student.","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * @param session The session to attend.","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public void attendSession(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" session.addStudent(this);","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" * Removes a student from a session and a session from a student.","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" * @param session The session to miss.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" public void missSession(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" session.removeStudent(this);","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap getAllAssignments() {","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":" return assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" public Assignment getAssignment(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"Originalidk"},"content":" return assignments.get(assignmentName);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" public boolean isSameName(Name otherName) {","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" if (otherName \u003d\u003d this.getName()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" return otherName.equals(getName());","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-13"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 assignments.equals(otherPerson.assignments)","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTests.equals(otherPerson.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" return Objects.hash(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":32,"raydenlim":21,"Originalidk":26,"-":113}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * Returns student in the list that matches the name {@code toCheck}.","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public Person matchName(Name toCheck) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" Optional\u003cPerson\u003e matchingStudent \u003d internalList.stream().filter(p -\u003e p.isSameName(toCheck)).findAny();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" if (matchingStudent.isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" return matchingStudent.get();","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" public void setPersons(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" requireAllNonNull(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" if (!personsAreUnique(people)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" internalList.setAll(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"Originalidk"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c people.size() - 1; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Originalidk"},"content":" for (int j \u003d i + 1; j \u003c people.size(); j++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"Originalidk"},"content":" if (people.get(i).isSamePerson(people.get(j))) {","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":14,"Originalidk":8,"-":142}},{"path":"src/main/java/seedu/address/model/person/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" * Represents an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Assignment {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" // Identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" private final AssignmentName assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private final Grade grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Creates an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public Assignment(AssignmentName name, Grade grade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.grade \u003d grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public String name() {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" return this.assignmentName.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public String gradeToString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" return this.grade.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public String maxGrade() {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" return this.grade.getMax();","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" public Assignment copyAssignment() {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" return new Assignment(this.assignmentName, this.grade.copyGrade());","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof Assignment)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" Assignment otherName \u003d (Assignment) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return assignmentName.equals(otherName.assignmentName) \u0026\u0026 grade.equals(otherName.grade);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":48}},{"path":"src/main/java/seedu/address/model/person/assignment/AssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static javafx.collections.FXCollections.observableHashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static javafx.collections.FXCollections.unmodifiableObservableMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" * Stores the list of assignments a person has.","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" private final ObservableMap\u003cAssignmentName, Assignment\u003e assignments \u003d observableHashMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" private final ObservableMap\u003cAssignmentName, Assignment\u003e unmodifiableAssignments \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" unmodifiableObservableMap(assignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" * Creates an AssignmentMap to store all assignments a person has.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentInitialise.getInitialisationStatus()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.init();","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" Grade assignmentMaxGrade \u003d AssignmentInitialise.getAssignmentMaxGrade(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" assignments.put(assignmentName, new Assignment(assignmentName, assignmentMaxGrade));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public void setAssignmentMap(Map\u003cAssignmentName, Assignment\u003e assignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" Assignment replaceAssignment \u003d assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" this.assignments.replace(assignmentName, replaceAssignment.copyAssignment());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" * Creates a new AssignmentMap with the updated grade being given to an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" * @param toBeGraded Name of assignment being graded.","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" * @param newGrade Grade being given to the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" * @return New AssignmentMap with the updated grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap createUpdatedMap(AssignmentName toBeGraded, Grade newGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" AssignmentMap updateTo \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" if (assignmentName.equals(toBeGraded)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" Assignment gradedAssignment \u003d new Assignment(toBeGraded, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" updateTo.assignments.replace(assignmentName, gradedAssignment);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" Assignment originalAssignment \u003d this.assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" updateTo.assignments.replace(assignmentName, originalAssignment.copyAssignment());","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" return updateTo;","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" public boolean contains(AssignmentName key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" return assignments.containsKey(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" public Assignment get(AssignmentName key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" return assignments.get(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" public ObservableMap\u003cAssignmentName, Assignment\u003e asUnmodifiableObservableMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" return unmodifiableAssignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AssignmentMap)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" AssignmentMap otherMap \u003d (AssignmentMap) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" return this.assignments.equals(otherMap.assignments);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":88}},{"path":"src/main/java/seedu/address/model/person/assignment/AssignmentName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentNameInitialise;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" * Represents an assignment name.","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"public class AssignmentName {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" \"Assignment does not exist\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" private static final AssignmentNameInitialise checkIfValid \u003d new AssignmentNameInitialise();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public final String assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" * Creates an assignment name.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" public AssignmentName(String name) {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" * Checks if the assignment name exists.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" * @param test The assignment name as a string.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" * @return Whether the assignment exists.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.init();","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" return checkIfValid.contains(new AssignmentName(test));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" return this.assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AssignmentName)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" AssignmentName otherName \u003d (AssignmentName) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" return assignmentName.equals(otherName.assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" return assignmentName.hashCode();","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":61}},{"path":"src/main/java/seedu/address/model/person/assignment/Grade.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" * Represents the Grade given to an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" * Consists of the maximum grade as well as the actual grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"public class Grade {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private String actualGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" private final String maxGrade;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private boolean isGraded;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Creates a Grade for an assignment with only the maximum grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" * @param maxGrade The maximum grade for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public Grade(String maxGrade) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" this.maxGrade \u003d maxGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" this.isGraded \u003d false;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * Creates a Grade for an assignment with both the actual grade and the maximum grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" * @param actualGrade The grade the person scores for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" * @param maxGrade The maximum grade for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public Grade(String actualGrade, String maxGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this.actualGrade \u003d actualGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" this.maxGrade \u003d maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" this.isGraded \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" public String getMax() {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" return this.maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" * Creates a new copy of the Grade of an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * @return New copy of the Grade of an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" public Grade copyGrade() {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" return new Grade(this.actualGrade, this.maxGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" return new Grade(this.maxGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" return this.actualGrade + \"/\" + this.maxGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" return \"UNGRADED/\" + this.maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof Grade)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" Grade otherGrade \u003d (Grade) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" boolean sameMaxGrade \u003d this.maxGrade.equals(otherGrade.maxGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded \u0026\u0026 otherGrade.isGraded) {","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" boolean sameGrade \u003d this.actualGrade.equals(otherGrade.actualGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" return sameMaxGrade \u0026\u0026 sameGrade;","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" return sameMaxGrade \u0026\u0026 !otherGrade.isGraded;","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":80}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create assignments for each person.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class AssignmentInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private static boolean isInitialised \u003d false;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static AssignmentNameInitialise nameInitialise;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" private static AssignmentMaxGradeInitialise maxGradeInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" * Initializes all assignment names and maximum grades if they have yet to be initialized.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public static void init() {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise \u003d new AssignmentNameInitialise();","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise.initMissions();","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise.initQuests();","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise \u003d new AssignmentMaxGradeInitialise();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise.missionGrades();","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise.questGrades();","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" isInitialised \u003d true;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" public static AssignmentName getAssignmentName(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.nameInitialise.getName(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static Grade getAssignmentMaxGrade(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.maxGradeInitialise.getGrade(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public static boolean getInitialisationStatus() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" return isInitialised;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" public static int size() {","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.nameInitialise.size();","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":44}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentMaxGradeInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create grades for each assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMaxGradeInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static ArrayList\u003cGrade\u003e maxGrades \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * Initialises mission grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void missionGrades() {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1000\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"700\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"950\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1300\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"720\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"950\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1000\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" * Initialises quest grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public void questGrades() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"400\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"500\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"500\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"670\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"750\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public Grade getGrade(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" return this.maxGrades.get(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":51}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentNameInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create names for each assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class AssignmentNameInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static ArrayList\u003cAssignmentName\u003e assignmentNames \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * Initialises mission names.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void initMissions() {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Rune Trials\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Rune Reading\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Beyond the Second Dimension\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curve Introduction\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curve Manipulation\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Beyond the First Dimension\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Premorseal Communications\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"POTS and Pans\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Musical Diversions\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Search and Rescue\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Sorting Things Out\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Robotic Trials\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Moving about on Planet Y\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Finding ELDRIC\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Know Your Environment\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" * Initialises quest names.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public void initQuests() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Runic Carpets\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Colorful Carpets\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Functional Expressionism\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Cardioid Arrest\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curvaceous Wizardry\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"The Magical Tone Matrix\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Echoes of the Past\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Grading a Sort\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public AssignmentName getName(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.get(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public boolean contains(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.contains(assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" public int size() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.size();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":59}},{"path":"src/main/java/seedu/address/model/session/ReadOnlySession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"public interface ReadOnlySession {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":15}},{"path":"src/main/java/seedu/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Represents a class for managing a session, which can hold a list of students and session-specific details.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"public class Session {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" private final SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" private SessionStudents students;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * Creates a session with a session number and an initial set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * @param presentStudents The set of students present in this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber, SessionStudents presentStudents) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, presentStudents);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" this.students \u003d presentStudents;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * Creates a session with a session number and a single student. Useful for adding students individually.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber, Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, student);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Creates a session with just a session number. Useful for creating empty sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" * Adds a student to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add.","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" * @return","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void addStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" * Removes a student from the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" * @param student The student to remove.","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" public void removeStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" this.students.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * Checks if this session is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.equals(otherSession.sessionNumber) \u0026\u0026 students.equals(otherSession.students);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Checks if this session is the same as another session.","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" * @param other The session to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" * @return True if the sessions are the same, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" public boolean isSameSession(Session other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" return other !\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 other.getSessionNumber().equals(sessionNumber)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 other.getStudents().equals(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" * Retrieves the set of students in this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" * @return The set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" public SessionStudents getStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" if (students \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" return students.getStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" * Retrieves the session number, a unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" * @return The session number.","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" public SessionNumber getSessionNumber() {","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" return sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" * Generates a human-readable representation of the session, including the session number and the set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" public String getSessionInfo() {","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" String studentNames \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" studentNames \u003d students.toStudentNames();","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" return String.format(\"%s - %s\", sessionNumber, studentNames);","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" return this.getSessionInfo();","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" return Objects.hash(sessionNumber, students);","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":152}},{"path":"src/main/java/seedu/address/model/session/SessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.DuplicateSessionException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.SessionNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * A list of sessions that can be used to manage and manipulate session data.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class SessionList implements Iterable\u003cSession\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private ObservableList\u003cSession\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private final ObservableList\u003cSession\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void setSessionList(List\u003cSession\u003e sessionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" internalList.setAll(sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * Checks if the list contains a specific session.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param toCheck The session to check for existence.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * @return True if the session exists in the list, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public boolean contains(Session toCheck) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" return internalList.stream().anyMatch(toCheck::isSameSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Adds a session to the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param toAdd The session to add.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session toAdd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" if (this.contains(toAdd)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" throw new DuplicateSessionException();","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Sets the information of a session in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param target The session to be modified.","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param editedSession The modified session information.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @throws SessionNotFoundException If the target session is not found in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @throws DuplicateSessionException If the edited session information duplicates an existing session.","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public void setSession(Session target, Session editedSession) {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(target, editedSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" throw new SessionNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" if (!target.isSameSession(editedSession) \u0026\u0026 contains(editedSession)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" throw new DuplicateSessionException();","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" internalList.set(index, editedSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" * Finds a session in the list based on its session number.","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to search for.","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" * @return The session with the specified session number, or null if not found.","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" for (Session session : internalList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" if (session.getSessionNumber().equals(sessionNumber)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return session;","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" // Session not found, return null or handle the situation as needed.","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" return null;","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" * Finds and returns a set of sessions attended by a specific student.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" * @param student The student for whom to find attended sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * @return A set of sessions that the specified student has attended.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public Set\u003cSession\u003e findSessionsByStudent(Person student) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e sessionsAttendedByStudent \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" for (Session session : internalList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" if (session.getStudents().contains(student)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" sessionsAttendedByStudent.add(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" return sessionsAttendedByStudent;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" * Removes a session from the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" * @param toRemove The session to remove.","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" * @throws SessionNotFoundException If the session to remove is not found in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" public void remove(Session toRemove) {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" throw new SessionNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" * @return An unmodifiable list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" * Provides an iterator to iterate through the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * @return An iterator for the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" public Iterator\u003cSession\u003e iterator() {","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the sessions in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"ldinghan"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"ldinghan"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":" return true; // Same object, equal","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionList)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" return false; // Not the same class, not equal","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" SessionList otherList \u003d (SessionList) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" // Check if the lists have the same sessions in the same order","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":176}},{"path":"src/main/java/seedu/address/model/session/SessionNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Represents a session number, ensuring it adheres to certain constraints.","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" * A valid session number consists of one or more digits and should not be blank.","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"public class SessionNumber {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" \"Session numbers must only contain numbers, and it should not be blank\";","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]\\\\d*$\";","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" public final String sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionNumber with the given session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public SessionNumber(String sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" checkArgument(isValidSessionNumber(sessionNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" * Checks whether the provided string is a valid session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * @param test The string to test for validity.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * @return True if the string is a valid session number, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public static boolean isValidSessionNumber(String test) {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * Returns the session number as a string.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * @return The session number as a string.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" return sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Checks whether this SessionNumber is equal to another object.","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionNumber)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" SessionNumber otherSessionNumber \u003d (SessionNumber) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.equals(otherSessionNumber.sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Returns the hash code of this SessionNumber.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @return The hash code of the session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":78}},{"path":"src/main/java/seedu/address/model/session/SessionNumberContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Tests that a {@code Session}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberContainsKeywordsPredicate implements Predicate\u003cSession\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" public SessionNumberContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" public boolean test(Session session) {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" .anyMatch(keyword -\u003e containsSubstringIgnoreCase(","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" session.getSessionNumber().sessionNumber, keyword));","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" private boolean containsSubstringIgnoreCase(String str, String substring) {","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" // Convert both the main string and substring to lowercase for a case-insensitive match","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" String lowerCaseStr \u003d str.toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" String lowerCaseSubstring \u003d substring.toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" // Check if the main string contains the substring","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" return lowerCaseStr.contains(lowerCaseSubstring);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionNumberContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate otherNumberContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" (SessionNumberContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" return keywords.equals(otherNumberContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this).add(\"session keywords\", keywords).toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":53}},{"path":"src/main/java/seedu/address/model/session/SessionStudents.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * Represents a collection of students in a session. This class provides methods for managing and manipulating","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * the set of students within a session.","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"public class SessionStudents implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" \"Session students must not be null\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" /** The set of students in the session. */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" public final Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * Constructs an empty SessionStudents object.","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public SessionStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with a given set of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * @param students The set of students to initialize the object with.","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Set\u003cPerson\u003e students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" requireNonNull(students);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with a single student.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" requireNonNull(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with an array of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Person ...students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" * Adds a student to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public void add(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" * Removes a student from the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" * @param student The student to remove.","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" public void remove(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" this.students.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * Returns a string containing the names of the students in the session, sorted alphabetically.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" * @return A string with student names.","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" public String toStudentNames() {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" List\u003cPerson\u003e studentsArray \u003d new ArrayList\u003c\u003e(students);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" studentsArray.sort(Comparator.comparing(p -\u003e p.getName().toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" StringBuilder studentNames \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" for (Person student : studentsArray) {","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" studentNames.append(String.format(\"%s, \", student.getName()));","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" if (!students.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" studentNames.delete(studentNames.length() - 2, studentNames.length());","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" return studentNames.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" * Creates and returns a new SessionStudents object with the same students as this one.","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" * @return A new SessionStudents object with a copy of the students.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" public SessionStudents getStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" SessionStudents anotherSet \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" anotherSet.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" return anotherSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" * Checks if the session contains a specific student.","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" * @param student The student to check for existence.","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" * @return True if the student exists in the session, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" public boolean contains(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" return students.contains(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" * Provides a stream of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" * @return A stream of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" public Stream\u003cPerson\u003e stream() {","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" return students.stream();","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" * Returns the number of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * @return The number of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" public int size() {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" return students.size();","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" * Provides an iterator to iterate through the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" * @return An iterator for the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":" return students.iterator();","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the students.","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"ldinghan"},"content":" return students.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":" * Checks if this SessionStudents object is equal to another object.","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionStudents)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" SessionStudents otherSessionStudents \u003d (SessionStudents) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" return students.equals(otherSessionStudents.students);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" * Returns the hash code of this SessionStudents object.","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" * @return The hash code of the session students.","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" return students.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":196}},{"path":"src/main/java/seedu/address/model/session/exceptions/DuplicateSessionException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":" * Exception to indicate that an operation would result in duplicate sessions in the session list.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"public class DuplicateSessionException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Constructs a DuplicateSessionException with a default error message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" public DuplicateSessionException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" super(\"Operation would result in duplicate sessions\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" // You can also add additional constructors or methods if needed","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":16}},{"path":"src/main/java/seedu/address/model/session/exceptions/SessionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":" * Exception to indicate that a requested session was not found in the session list.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"public class SessionNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionNotFoundException with a default error message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" public SessionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" super(\"Session not found\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" // You can also add additional constructors or methods if needed","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":16}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Represents a Task in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class Task {","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" // Identity fields","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" private final TaskName taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // Data fields","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private final TaskDescription taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private final boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final TaskPriority priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Creates a new task with the given name, description, and completion status.","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" * @param taskName The name of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" * @param taskDescription The description of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public Task(TaskName taskName, TaskDescription taskDescription, boolean isDone, TaskPriority priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(taskName, taskDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" * Creates a new task with the given name and description.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * This task is initially marked as not done.","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" * @param taskName The name of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" * @param taskDescription The description of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public Task(TaskName taskName, TaskDescription taskDescription, TaskPriority priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(taskName, taskDescription);","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" public TaskName getName() {","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" return taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" return isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public TaskPriority getPriority() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * Returns true if both tasks have the same name and description.","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" return otherTask !\u003d null","lastModifiedDate":"2023-09-27"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 otherTask.getName().equals(getName())","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 otherTask.getDescription().equals(getDescription());","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" return taskName.equals(otherTask.taskName)","lastModifiedDate":"2023-09-27"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 taskDescription.equals(otherTask.taskDescription);","lastModifiedDate":"2023-09-27"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" return Objects.hash(taskName, taskDescription, isDone, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" .add(\"name\", taskName)","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" .add(\"description\", taskDescription)","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" .add(\"isDone\", isDone)","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":118}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"public class TaskDescription {","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Description should not only consist of whitespace\";","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s+$).*$\";","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public final String description;","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" * @param description A valid description.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public TaskDescription(String description) {","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" requireNonNull(description);","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" return description.equals(otherTaskDescription.description);","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return description.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" return description.equals(\"\") ? \"No Description Provided\" : description;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":63}},{"path":"src/main/java/seedu/address/model/task/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * A list of tasks that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * A task is considered unique by comparing using {@code Task#isSameTask(Task)}. As such, adding and updating of","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * tasks uses Task#isSameTask(Task) for equality so as to ensure that the task being added or updated is","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * unique in terms of identity in the TaskList. However, the removal of a task uses Task#equals(Object) so","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" * as to ensure that the task with exactly the same fields will be removed.","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * @see Task#isSameTask(Task)","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" return internalList.stream().anyMatch(toCheck::isSameTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * Returns the task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" if (index \u003e\u003d internalList.size()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" throw new IllegalArgumentException(\"Index is out of bounds\");","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" return internalList.get(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" * The task must not already exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void add(Task toAdd) {","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" public void editTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-27"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-09-27"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2023-09-27"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" if (!target.isSameTask(editedTask) \u0026\u0026 contains(editedTask)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" * The task must exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2023-09-27"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-09-27"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2023-09-27"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" public void setTasks(TaskList replacement) {","lastModifiedDate":"2023-09-27"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-09-27"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" * Replaces the contents of this list with {@code tasks}.","lastModifiedDate":"2023-09-27"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2023-09-27"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(tasks);","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" if (!tasksAreUnique(tasks)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-09-27"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-09-27"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" return internalList.iterator();","lastModifiedDate":"2023-09-27"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" TaskList otherUniquePersonList \u003d (TaskList) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" return internalList.toString();","lastModifiedDate":"2023-09-27"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" * Returns true if {@code tasks} contains only unique tasks.","lastModifiedDate":"2023-09-27"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" private boolean tasksAreUnique(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-27"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" for (int i \u003d 0; i \u003c tasks.size() - 1; i++) {","lastModifiedDate":"2023-09-27"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" for (int j \u003d i + 1; j \u003c tasks.size(); j++) {","lastModifiedDate":"2023-09-27"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" if (tasks.get(i).isSameTask(tasks.get(j))) {","lastModifiedDate":"2023-09-27"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":161}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"public class TaskName {","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" \"Task Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * The task names should ony consist of letters (both uppercase and lowercase),","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * digits, spaces, underscores, and hyphens","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?\u003d.*[A-Za-z0-9_-])[-A-Za-z0-9\\\\s_-]*$\";","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public final String taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" * @param name A valid name.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" public TaskName(String name) {","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" taskName \u003d name;","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" return taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" return taskName.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":67}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Tests that a {@code Task}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public boolean test(Task task) {","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().taskName, keyword));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this).add(\"task keywords\", keywords).toString();","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":45}},{"path":"src/main/java/seedu/address/model/task/TaskPriority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Enum representing the priority levels of tasks.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public enum TaskPriority {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" * Priority levels","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" LOW, MEDIUM, HIGH;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * A constant message indicating the constraints for valid task priorities.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"TaskPriority should only be low, medium, or high\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":17}},{"path":"src/main/java/seedu/address/model/task/exceptions/DuplicateTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Signals that the operation will result in duplicate Tasks (Tasks are considered duplicates if they have the same","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" * identity).","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class DuplicateTaskException extends RuntimeException {","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public DuplicateTaskException() {","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(\"Operation would result in duplicate tasks\");","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":11}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class TaskNotFoundException extends RuntimeException {}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_1 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:- | Reading Assessment 2:- | MidTerms:3 | Finals:4 | Practical Exam:5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_2 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:100 | Reading Assessment 2:100 | MidTerms:100 | Finals:100 | Practical Exam:100\";","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_ALEX \u003d new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"friends\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_BERNICE \u003d new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"colleagues\", \"friends\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_CHARLOTTE \u003d new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"neighbours\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_DAVID \u003d new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"family\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_IRFAN \u003d new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"classmates\"), getGradedTestSet(VALID_GRADED_TEST_2));","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_ROY \u003d new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"colleagues\"), getGradedTestSet(VALID_GRADED_TEST_2));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" return new Person[] { PERSON_ALEX, PERSON_BERNICE, PERSON_CHARLOTTE, PERSON_DAVID, PERSON_IRFAN, PERSON_ROY };","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" return new Task[] {","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do 2103T\"), new TaskDescription(\"Homework assignment\"), TaskPriority.HIGH),","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do cs2101\"), new TaskDescription(\"Practice script\"), TaskPriority.HIGH),","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do cs2100\"), new TaskDescription(\"Remember mips\"), TaskPriority.HIGH)","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" };","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public static Consultation[] getSampleConsultations() {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" return new Consultation[] { new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"11/11/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"11:11\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_ALEX, PERSON_BERNICE)","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" ), new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"01/11/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"10:00\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_ALEX)","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" ), new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"11/12/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"15:00\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_DAVID, PERSON_IRFAN, PERSON_ROY)","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" ),","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" };","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" public static Session[] getSampleSessions() {","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" return new Session[] {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" new Session(new SessionNumber(\"1\"), new SessionStudents(getSamplePersons())),","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" new Session(new SessionNumber(\"2\"), new SessionStudents(getSamplePersons()))","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" };","lastModifiedDate":"2023-09-28"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public static GradedTest[] getSampleGradedTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" return new GradedTest[] {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" new GradedTest(new ReadingAssessment(\"1\"), new ReadingAssessment(\"2\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" new MidTerms(\"3\"), new Finals(\"4\"), new PracticalExam(\"5\"))","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" public static ReadOnlyTaskList getSampleTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" TaskListBook sampleTl \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" sampleTl.addTask(sampleTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" return sampleTl;","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public static ReadOnlyConsultationList getSampleConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook sampleClb \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" for (Consultation sampleConsultation : getSampleConsultations()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" sampleClb.addConsultation(sampleConsultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" return sampleClb;","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" public static ReadOnlySessionList getSampleSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" SessionListBook sampleSl \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" for (Session sampleSession : getSampleSessions()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" sampleSl.addSession(sampleSession);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return sampleSl;","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" * Returns a student set containing the list of person given.","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cPerson\u003e getStudentSet(Person ... students) {","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(students)","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" * Returns a names set containing the list of string names given.","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cName\u003e getNamesSet(String ... names) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(names)","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" .map(Name::new)","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" public static ReadOnlyGradedTestList getSampleGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook sampleTl \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" for (GradedTest sampleGradedTest : getSampleGradedTest()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" sampleTl.addGradedTest(sampleGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" return sampleTl;","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" * Returns a gradedTest set containing the list of strings given.","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cGradedTest\u003e getGradedTestSet(String... strings) {","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-13"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" .map(GradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ldinghan":17,"Respirayson":23,"raydenlim":105,"-":44}},{"path":"src/main/java/seedu/address/storage/ConsultationListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" * Represents a storage for {@link seedu.address.model.ConsultationListBook}.","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"public interface ConsultationListStorage {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" * @return The file path of the data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" Path getConsultationListFilePath();","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * Reads the consultation list data from the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlyConsultationList},","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" * Reads the consultation list data from the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlyConsultationList},","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" * Saves the consultation list data to the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The {@link ReadOnlyConsultationList} to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Saves the consultation list data to the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The {@link ReadOnlyConsultationList} to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path to which the data should be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":55}},{"path":"src/main/java/seedu/address/storage/GradedTestListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * Represents a storage for {@link seedu.address.model.GradedTestListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"public interface GradedTestListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" Path getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" * Returns GradedTest data as a {@link ReadOnlyGradedTestList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * @see #getGradedTestListFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" * Saves the given {@link ReadOnlyGradedTestList} to the storage.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * @param gradedTestList cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" * @see #saveGradedTestList(ReadOnlyGradedTestList, Path)","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAssignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Jackson-friendly version of {@link Assignment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"public class JsonAdaptedAssignment {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Assignment\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" private final String assignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" private final String grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * Constructs a {@code JsonAdaptedAssignment} with the given person details.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" @JsonCreator","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" public JsonAdaptedAssignment(@JsonProperty(\"assignmentName\") String assignmentName,","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" @JsonProperty(\"grade\") String grade) {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this.grade \u003d grade;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" * Converts a given {@code Assignment} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public JsonAdaptedAssignment(Assignment source) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" assignmentName \u003d source.name();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" grade \u003d source.gradeToString();","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * Converts this Jackson-friendly adapted assignment object into the model\u0027s {@code Assignment} object.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" public Assignment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" if (assignmentName \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" AssignmentName.class.getSimpleName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" final AssignmentName modelName \u003d new AssignmentName(assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" if (grade \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" // Add valid grade checker later","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" final Grade modelGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" if (grade.startsWith(\"UNGRADED/\")) {","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" String maxGradeString \u003d grade.substring(9);","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" modelGrade \u003d new Grade(maxGradeString);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" String[] arrOfGradeStrings \u003d grade.split(\"/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" String actualGradeString \u003d arrOfGradeStrings[0];","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" String maxGradeString \u003d arrOfGradeStrings[1];","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" modelGrade \u003d new Grade(actualGradeString, maxGradeString);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" return new Assignment(modelName, modelGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":71}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedConsultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" * Jackson-friendly version of {@link Consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"public class JsonAdaptedConsultation {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" private final String date;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" private final String time;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" * * Constructs a {@code JsonAdaptedConsultation} with the given consultation details.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public JsonAdaptedConsultation(@JsonProperty(\"date\") String date, @JsonProperty(\"time\") String time,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" this.students.addAll(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" * Converts a given {@code Consultation} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" public JsonAdaptedConsultation(Consultation source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" date \u003d source.getDate().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" time \u003d source.getTime().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * Converts this Jackson-friendly adapted consultation object into the model\u0027s {@code Consultation} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" * @throws DateTimeParseException if there were date and time format constraints violated in the adapted","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" * consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public Consultation toModelType() throws DateTimeParseException, IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" // TODO check for invalid values of date and time","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" LocalDate formattedDate \u003d LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" LocalTime formattedTime \u003d LocalTime.parse(time, timeFormatter);","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" final List\u003cPerson\u003e studentsList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" for (JsonAdaptedPerson student : students) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" studentsList.add(student.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" final Set\u003cPerson\u003e studentSet \u003d new HashSet\u003c\u003e(studentsList);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" return new Consultation(formattedDate, formattedTime, studentSet);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":75}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGradedTest.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" * Jackson-friendly version of {@link GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"class JsonAdaptedGradedTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"GradedTest\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private final String readingAssessment1;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private final String readingAssessment2;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private final String midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final String finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private final String practicalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code JsonAdaptedGradedTest} with the given gradedTest details","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedGradedTest(@JsonProperty(\"Reading Assessment 1\") String readingAssessment1,","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Reading Assessment 2\") String readingAssessment2,","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"MidTerms\") String midTerms,","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Finals\") String finals,","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Practical Exam\") String practicalExam) {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" * Converts a given {@code GradedTest} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedGradedTest(GradedTest source) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" readingAssessment1 \u003d source.getRA1().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" readingAssessment2 \u003d source.getRA2().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" midTerms \u003d source.getMidTerms().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" finals \u003d source.getFinals().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" practicalExam \u003d source.getPracticalExam().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code GradedTest} object.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted gradedTest.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public GradedTest toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" if (readingAssessment1 \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(readingAssessment1)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" final ReadingAssessment modelRA1 \u003d new ReadingAssessment(readingAssessment1);","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" if (readingAssessment2 \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(readingAssessment2)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" final ReadingAssessment modelRA2 \u003d new ReadingAssessment(readingAssessment2);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" if (midTerms \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" MidTerms.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" if (!MidTerms.isValidMidTermResult(midTerms)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(MidTerms.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" final MidTerms modelMidTerms \u003d new MidTerms(midTerms);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" if (finals \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" Finals.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" if (!Finals.isValidFinalsResult(finals)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(Finals.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" final Finals modelFinals \u003d new Finals(finals);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" if (practicalExam \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" PracticalExam.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" if (!PracticalExam.isValidPeResult(practicalExam)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(PracticalExam.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" final PracticalExam modelPE \u003d new PracticalExam(practicalExam);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(modelRA1, modelRA2, modelMidTerms, modelFinals, modelPE);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" private final List\u003cJsonAdaptedGradedTest\u003e gradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" private final JsonSerializableAssignmentMap assignmentMap;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"assignmentMap\") JsonSerializableAssignmentMap assignmentMap,","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"gradedTests\") List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" if (gradedTests !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" this.assignmentMap \u003d assignmentMap;","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedPerson(String name, String phone, String email, String address, List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" String assignmentName \u003d AssignmentInitialise.getAssignmentName(i).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" String assignmentGrade \u003d AssignmentInitialise.getAssignmentMaxGrade(i).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" jsonMap.put(assignmentName, new JsonAdaptedAssignment(assignmentName, assignmentGrade));","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" this.assignmentMap \u003d new JsonSerializableAssignmentMap(jsonMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" Assignment assignment \u003d source.getAllAssignments().get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" jsonMap.put(assignmentName.toString(),","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" new JsonAdaptedAssignment(assignment));","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" this.assignmentMap \u003d new JsonSerializableAssignmentMap(jsonMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" gradedTests.addAll(source.getGradedTest().stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" .map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" final List\u003cGradedTest\u003e personGradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" for (JsonAdaptedGradedTest gradedTest : gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" personGradedTests.add(gradedTest.toModelType());","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" final Set\u003cGradedTest\u003e modelGradedTests \u003d new HashSet\u003c\u003e(personGradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"Originalidk"},"content":" final AssignmentMap assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d assignmentMap.getAssignments();","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cAssignmentName, Assignment\u003e actualMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"Originalidk"},"content":" Assignment assignment \u003d jsonMap.get(assignmentName.toString()).toModelType();","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"Originalidk"},"content":" actualMap.put(assignmentName, assignment);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"Originalidk"},"content":" assignments.setAssignmentMap(actualMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, assignments, modelGradedTests);","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"raydenlim":24,"Originalidk":32,"-":117}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * Jackson-friendly version of {@link Session}.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"public class JsonAdaptedSession {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final String sessionNumber;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * Constructs a {@code JsonAdaptedSession} with the given {@code sessionInfo}.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public JsonAdaptedSession(@JsonProperty(\"sessionNumber\") String sessionNumber,","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" this.students.addAll(students);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" * Converts a given {@code Session} into this class for Jackson use.","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" public JsonAdaptedSession(Session source) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d source.getSessionNumber().toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" if (source.getStudents() !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" * Converts this Jackson-friendly adapted session object into the model\u0027s {@code Session} object.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted session.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public Session toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" if (sessionNumber \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" throw new IllegalValueException(SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" final SessionNumber modelSessionNumber \u003d new SessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" final List\u003cPerson\u003e studentsList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" for (JsonAdaptedPerson student : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" studentsList.add(student.toModelType());","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" final Set\u003cPerson\u003e studentSet \u003d new HashSet\u003c\u003e(studentsList);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" sessionStudents \u003d new SessionStudents(studentSet);","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" return new Session(modelSessionNumber, sessionStudents);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":74}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"class JsonAdaptedTask {","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private final String name;","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private final String description;","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private final String priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given task details.","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" @JsonCreator","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" public JsonAdaptedTask(@JsonProperty(\"name\") String name, @JsonProperty(\"description\") String description,","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" @JsonProperty(\"isDone\") boolean isDone, @JsonProperty(\"priority\") String priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" name \u003d source.getName().taskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" isDone \u003d source.getIsDone();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted task.","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" if (!TaskName.isValidName(name)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" final TaskName modelName \u003d new TaskName(name);","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" if (!TaskDescription.isValidDescription(description)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-28"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" final TaskDescription modelDescription \u003d new TaskDescription(description);","lastModifiedDate":"2023-09-28"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" final TaskPriority modelPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" TaskPriority.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" modelPriority \u003d TaskPriority.valueOf(priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" return new Task(modelName, modelDescription, isDone, modelPriority);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":84}},{"path":"src/main/java/seedu/address/storage/JsonConsultationListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" * A class to access ConsultationList data stored as a JSON file on the hard disk.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"public class JsonConsultationListStorage implements ConsultationListStorage {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonConsultationListStorage.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private Path filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Constructs a JsonConsultationListStorage with the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path for storing the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public JsonConsultationListStorage(Path filePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * Returns the file path of the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" * @return The file path of the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" return filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * Reads the ConsultationList data from the file specified during construction.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read ConsultationList data, or an empty","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Optional if the file does not exist.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data or the","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * data does not conform to the expected format.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException {","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return readConsultationList(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" * Reads the ConsultationList data from the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path to read the ConsultationList data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read ConsultationList data,","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" * or an empty Optional if the file does not exist.","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data or","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" * the data does not conform to the expected format.","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" Optional\u003cJsonSerializableConsultationList\u003e jsonConsultationList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" filePath, JsonSerializableConsultationList.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" if (!jsonConsultationList.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" return Optional.of(jsonConsultationList.get().toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + e.getMessage());","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" * Saves the given ConsultationList data to the file specified during construction.","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The ConsultationList data to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" saveConsultationList(consultationList, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" * Saves the given ConsultationList data to the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The ConsultationList data to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path where the data should be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(consultationList, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"wesho1107"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"wesho1107"},"content":" JsonUtil.saveJsonFile(new JsonSerializableConsultationList(consultationList), filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":109}},{"path":"src/main/java/seedu/address/storage/JsonGradedTestListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * A class to access GradedTestList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"public class JsonGradedTestListStorage implements GradedTestListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonGradedTestListStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" public JsonGradedTestListStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" return readGradedTestList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" * Similar to {@link #readGradedTestList()}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" Optional\u003cJsonSerializableGradedTestList\u003e jsonGradedTestList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" filePath, JsonSerializableGradedTestList.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" if (!jsonGradedTestList.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" return Optional.of(jsonGradedTestList.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(gradedTestList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" * Similar to {@link #saveGradedTestList(ReadOnlyGradedTestList)}.","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" JsonUtil.saveJsonFile(new JsonSerializableGradedTestList(gradedTestList), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":78}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ReadOnlyAssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * An Immutable AssignmentMap that is serializable to JSON format.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"@JsonRootName(\"assignmentMap\")","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"public class JsonSerializableAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" private final HashMap\u003cString, JsonAdaptedAssignment\u003e assignments;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * Constructs a {@code JsonSerializableAssignmentMap} with the given persons.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" @JsonCreator","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public JsonSerializableAssignmentMap(","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" @JsonProperty(\"assignments\") HashMap\u003cString, JsonAdaptedAssignment\u003e assignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d assignments;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" * Converts a given {@code ReadOnlyAssignmentMap} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAssignmentMap}.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public JsonSerializableAssignmentMap(ReadOnlyAssignmentMap source) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d new HashMap\u003cString, JsonAdaptedAssignment\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" JsonAdaptedAssignment assignmentToBeAdded \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" new JsonAdaptedAssignment(source.getAssignmentMap().get(assignmentName));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" this.assignments.put(assignmentName.toString(), assignmentToBeAdded);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" public HashMap\u003cString, JsonAdaptedAssignment\u003e getAssignments() {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return this.assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" * An Immutable ConsultationList that is serializable to JSON format.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"@JsonRootName(value \u003d \"consultationlist\")","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"public class JsonSerializableConsultationList {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_DUPLICATE_CONSULTATION \u003d \"Consultation list contains duplicate consultation(s).\";","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private final List\u003cJsonAdaptedConsultation\u003e consultations \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" @JsonCreator","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public JsonSerializableConsultationList(@JsonProperty(\"consultations\")","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" List\u003cJsonAdaptedConsultation\u003e consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.consultations.addAll(consultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * Converts a given {@code ReadOnlyConsultationList} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableConsultationList}.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public JsonSerializableConsultationList(ReadOnlyConsultationList source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" consultations.addAll(source.getConsultationList().stream().map(JsonAdaptedConsultation::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" * Converts this consultation list into the model\u0027s {@code ConsultationListBook} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" for (JsonAdaptedConsultation jsonAdaptedConsultation : consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" Consultation consultation \u003d jsonAdaptedConsultation.toModelType();","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" if (consultationList.hasConsultation(consultation)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CONSULTATION);","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" return consultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":58}},{"path":"src/main/java/seedu/address/storage/JsonSerializableGradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"@JsonRootName(value \u003d \"gradedtestlist\")","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"class JsonSerializableGradedTestList {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_DUPLICATE_GRADED_TEST \u003d \"Graded list contains duplicate gradedTest(s).\";","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private final List\u003cJsonAdaptedGradedTest\u003e gradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code JsonSerializableGradedTestList} with the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public JsonSerializableGradedTestList(@JsonProperty(\"gradedTests\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Converts a given {@code ReadOnlyGradedTestList} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableGradedTestList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" public JsonSerializableGradedTestList(ReadOnlyGradedTestList source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" gradedTests.addAll(source.getGradedTestList().stream().map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" * Converts this gradedTest list into the model\u0027s {@code GradedTestListBook} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" for (JsonAdaptedGradedTest jsonAdaptedGradedTest : gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTest \u003d jsonAdaptedGradedTest.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" if (gradedTestList.hasGradedTest(gradedTest)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GRADED_TEST);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" return gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":62}},{"path":"src/main/java/seedu/address/storage/JsonSerializableSessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * An Immutable SessionList that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"@JsonRootName(value \u003d \"sessionlist\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class JsonSerializableSessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_DUPLICATE_SESSION \u003d \"Session list contains duplicate session(s).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final List\u003cJsonAdaptedSession\u003e sessions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public JsonSerializableSessionList(@JsonProperty(\"sessions\") List\u003cJsonAdaptedSession\u003e sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" this.sessions.addAll(sessions);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * Converts a given {@code ReadOnlySessionList} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableSessionList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public JsonSerializableSessionList(ReadOnlySessionList source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" sessions.addAll(source.getSessionList().stream().map(JsonAdaptedSession::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * Converts this session list into the model\u0027s {@code SessionListBook} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public SessionListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" for (JsonAdaptedSession jsonAdaptedSession : sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" Session session \u003d jsonAdaptedSession.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" if (sessionList.hasSession(session)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_SESSION);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" return sessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":56}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" @JsonCreator","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * Converts a given {@code ReadOnlyTaskList} into this class for Jackson use.","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableTaskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public JsonSerializableTaskList(ReadOnlyTaskList source) {","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" * Converts this task list into the model\u0027s {@code TaskListBook} object.","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" public TaskListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskList \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" return taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/main/java/seedu/address/storage/JsonSessionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * A class to access SessionList data stored as a JSON file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class JsonSessionListStorage implements SessionListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonSessionListStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Constructs a JsonSessionListStorage with the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path for storing the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public JsonSessionListStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * Returns the file path of the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" * @return The file path of the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Reads the SessionList data from the file specified during construction.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read SessionList data, or an empty","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * Optional if the file does not exist.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data or the","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * data does not conform to the expected format.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" return readSessionList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" * Reads the SessionList data from the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path to read the SessionList data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read SessionList data,","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * or an empty Optional if the file does not exist.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data or","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" * the data does not conform to the expected format.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Optional\u003cJsonSerializableSessionList\u003e jsonSessionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" filePath, JsonSerializableSessionList.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" if (!jsonSessionList.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" return Optional.of(jsonSessionList.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + e.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" * Saves the given SessionList data to the file specified during construction.","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The SessionList data to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" saveSessionList(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Saves the given SessionList data to the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The SessionList data to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path where the data should be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" JsonUtil.saveJsonFile(new JsonSerializableSessionList(sessionList), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":106}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private Path filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" return filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" return readTaskList(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" return Optional.empty();","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" * Similar to {@link #saveTaskList(ReadOnlyTaskList)}.","lastModifiedDate":"2023-09-28"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":80}},{"path":"src/main/java/seedu/address/storage/SessionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Represents a storage for {@link seedu.address.model.SessionListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"public interface SessionListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * @return The file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" Path getSessionListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * Reads the session list data from the default file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlySessionList},","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * Reads the session list data from the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path from which to read the session list data.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlySessionList},","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * Saves the session list data to the default file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The {@link ReadOnlySessionList} to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Saves the session list data to the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The {@link ReadOnlySessionList} to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path to which the data should be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":56}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" TaskListStorage, SessionListStorage, ConsultationListStorage, GradedTestListStorage {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":7,"Respirayson":6,"raydenlim":17,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" private GradedTestListStorage gradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" private SessionListStorage sessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private ConsultationListStorage consultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage}, {@code UserPrefStorage},","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * {@code TaskListStorage}, {@code SessionListStorage} and {@code ConsultationListStorage}.","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public StorageManager(AddressBookStorage addressBookStorage,","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" UserPrefsStorage userPrefsStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" SessionListStorage sessionListStorage, ConsultationListStorage consultationListStorage,","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" GradedTestListStorage gradedTestListStorage) {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" this.sessionListStorage \u003d sessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" this.consultationListStorage \u003d consultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" this.gradedTestListStorage \u003d gradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" return sessionListStorage.getSessionListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" return readSessionList(sessionListStorage.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" return sessionListStorage.readSessionList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" saveSessionList(sessionList, sessionListStorage.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" sessionListStorage.saveSessionList(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ConsultationList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" return consultationListStorage.getConsultationListFilePath();","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException {","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" return readConsultationList(consultationListStorage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" return consultationListStorage.readConsultationList(filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException {","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" saveConsultationList(consultationList, consultationListStorage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" consultationListStorage.saveConsultationList(consultationList, filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2023-09-28"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":172,"author":{"gitId":"Respirayson"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":173,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":174,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":175,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":176,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":177,"author":{"gitId":"Respirayson"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":178,"author":{"gitId":"Respirayson"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":179,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":180,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GradedTest methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" return gradedTestListStorage.getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" return readGradedTestList(gradedTestListStorage.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" return gradedTestListStorage.readGradedTestList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(gradedTestList, gradedTestListStorage.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" gradedTestListStorage.saveGradedTestList(gradedTestList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":31,"Respirayson":34,"raydenlim":68,"-":76}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * Represents a storage for {@link seedu.address.model.TaskListBook}.","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public interface TaskListStorage {","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * Returns TaskList data as a {@link ReadOnlyTaskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" * Saves the given {@link ReadOnlyTaskList} to the storage.","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" * @see #saveTaskList(ReadOnlyTaskList)","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":45}},{"path":"src/main/java/seedu/address/ui/ConsultationCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * A UI component that displays information of a {@code Consultation}.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private static final String FXML \u003d \"ConsultationListCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public final Consultation consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private Label id;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private Label date;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" private Label time;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" private FlowPane students;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationCard} with the given {@code Consultation} and index to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public ConsultationCard(Consultation consultation, int displayedIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" this.consultation \u003d consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" date.setText(consultation.getDate().toString() + \", \");","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" time.setText(consultation.getTime().toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" consultation.getStudents().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" .sorted(Comparator.comparing(student -\u003e student.getName().fullName))","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.getName().fullName)));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":43}},{"path":"src/main/java/seedu/address/ui/ConsultationListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" * Panel containing the list of consultations","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" private static final String FXML \u003d \"ConsultationListPanel.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ConsultationListPanel.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" private ListView\u003cConsultation\u003e consultationListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationListPanel} with the given {@code ObservableList}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public ConsultationListPanel(ObservableList\u003cConsultation\u003e consultationList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" consultationListView.setItems(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" consultationListView.setCellFactory(listView -\u003e new ConsultationListViewCell());","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Consultation} using a {@code ConsultationCard}.","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" class ConsultationListViewCell extends ListCell\u003cConsultation\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" protected void updateItem(Consultation consultation, boolean empty) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" super.updateItem(consultation, empty);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" if (empty || consultation \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" setText(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" setGraphic(new ConsultationCard(consultation, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" private ConsultationListPanel consultationListPanel;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private SessionListPanel sessionListPanel;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" private StackPane consultationListPanelPlaceholder;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" private StackPane sessionListPanelPlaceholder;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"wesho1107"},"content":" consultationListPanel \u003d new ConsultationListPanel(logic.getFilteredConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"wesho1107"},"content":" consultationListPanelPlaceholder.getChildren().add(consultationListPanel.getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" sessionListPanel \u003d new SessionListPanel(logic.getFilteredSessionList());","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" sessionListPanelPlaceholder.getChildren().add(sessionListPanel.getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":213,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"ldinghan":7,"Respirayson":7,"-":196,"wesho1107":7}},{"path":"src/main/java/seedu/address/ui/SessionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" * Represents a UI component that displays information about a session in the user interface.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"public class SessionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" private static final String FXML \u003d \"SessionListCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" /** The session associated with this card. */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" public final Session session;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" private Label sessionNumberLabel;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private Label studentListLabel;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Creates a `SessionCard` object to display information about a session.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param session The session to display information about.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public SessionCard(Session session) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" this.session \u003d session;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" sessionNumberLabel.setText(session.getSessionNumber() + \". \");","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" studentListLabel.setText(session.getStudents().toStudentNames());","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":36}},{"path":"src/main/java/seedu/address/ui/SessionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Represents a UI component that displays a list of sessions in the user interface.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class SessionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" private static final String FXML \u003d \"SessionListPanel.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(SessionListPanel.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private ListView\u003cSession\u003e sessionListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" * Creates a `SessionListPanel` with the given `ObservableList` of sessions.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The list of sessions to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public SessionListPanel(ObservableList\u003cSession\u003e sessionList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" sessionListView.setItems(sessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" sessionListView.setCellFactory(listView -\u003e new SessionListViewCell());","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * Custom `ListCell` that displays the graphics of a `Session` using a `SessionCard`.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" class SessionListViewCell extends ListCell\u003cSession\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" protected void updateItem(Session session, boolean empty) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" super.updateItem(session, empty);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" if (empty || session \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" setText(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" setGraphic(new SessionCard(session).getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":51}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * A UI component that displays information of a {@code Task}.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public final Task task;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private Text name;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private Label id;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" private Text description;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private Text priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskCard} with the given {@code Task} and index to display.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" this.task \u003d task;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" description.setText(task.getDescription().description);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" priority.setText(task.getPriority().name());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" switch(task.getPriority()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" case LOW:","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: green\");","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" case MEDIUM:","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: yellow\");","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" case HIGH:","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: red\");","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" default:","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: white\");","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" name.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" description.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" priority.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskCard}.","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" setText(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":49}},{"path":"src/main/resources/view/ConsultationListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"date\" text\u003d\"\\$date\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"time\" text\u003d\"\\$time\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" \u003cFlowPane fx:id\u003d\"students\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":39}},{"path":"src/main/resources/view/ConsultationListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" \u003cListView fx:id\u003d\"consultationListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"wesho1107"},"content":"#tags, #students {","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"wesho1107"},"content":"#tags .label, #students .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"-":350,"wesho1107":2}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background: #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":".section-label {","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" -fx-padding: 10px;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":6,"-":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" title\u003d\"Address App\" minWidth\u003d\"600\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" \u003cHBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" \u003cLabel text\u003d\"Person List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" \u003cLabel text\u003d\"Task List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"taskListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"consultationList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" \u003cLabel text\u003d\"Consultation List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"consultationListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"sessionList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" \u003cLabel text\u003d\"Session List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"sessionListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"ldinghan":4,"Respirayson":9,"raydenlim":9,"-":55}},{"path":"src/main/resources/view/SessionListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"\u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"sessionNumberLabel\" text\u003d\"\\$sessionNumberLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"studentListLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentListLabel\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":34}},{"path":"src/main/resources/view/SessionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"\u003cListView fx:id\u003d\"sessionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":8}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"name\" text\u003d\"\\$name\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"priority\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$priority\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":37}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonGradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.JsonSessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(temporaryFolder.resolve(\"taskList.json\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d new JsonGradedTestListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" temporaryFolder.resolve(\"gradedTestList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d new JsonSessionListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" temporaryFolder.resolve(\"sessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" temporaryFolder.resolve(\"consultationList.json\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public void getFilteredConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredConsultationList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" public void getFilteredSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredSessionList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"ExceptionTaskList.json\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(temporaryFolder.resolve(\"ExceptionGradedTestList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" new JsonSessionListStorage(temporaryFolder.resolve(\"ExceptionSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" new JsonConsultationListStorage(temporaryFolder.resolve(\"ExceptionConsultationList.json\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ldinghan":11,"Respirayson":5,"raydenlim":23,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":7,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":123,"wesho1107":1}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GRADE_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public void execute_addGrade_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" Grade actualGrade \u003d new Grade(GRADE_400, personToEdit.getAssignment(assignmentName).maxGrade());","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(targetIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" Person editedPerson \u003d addGradeCommand.createGradedPerson(personToEdit, actualGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" String expectedMessage \u003d String.format(AddGradeCommand.MESSAGE_SUCCESS, VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" assertCommandSuccess(addGradeCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidAssignment_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, assignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(outOfBoundIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" * but smaller than size of address book","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(outOfBoundIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" public void test_sameObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" assertEquals(addGradeCommand, addGradeCommand);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" public void test_differentObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" assertFalse(addGradeCommand.equals(assignmentName));","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" public void test_differentObjectSameContent_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommandFirst \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommandSecond \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" assertEquals(addGradeCommandFirst, addGradeCommandSecond);","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"raydenlim":4,"Originalidk":113}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":7,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINALS;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MIDTERMS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRACTICAL_EXAM;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_READING_ASSESSMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_RA1 \u003d \"1.0\";","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_RA2 \u003d \"2\";","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_MIDTERMS \u003d \"3\";","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_FINALS \u003d \"4\";","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_PE \u003d \"5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_1 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:- | Reading Assessment 2:- | MidTerms:3 | Finals:4 | Practical Exam:5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_2 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:100 | Reading Assessment 2:100 | MidTerms:100 | Finals:100 | Practical Exam:100\";","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public static final String VALID_TASK_NAME \u003d \"Do cs2103t\";","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public static final String VALID_TASK_DESCRIPTION \u003d \"Complete PRS\";","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" public static final String VALID_ASSIGNMENT_NAME \u003d \"Finding ELDRIC\";","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" public static final String INVALID_ASSIGNMENT_NAME \u003d \"Finding BOYD\";","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" public static final String GRADE_400 \u003d \"400\";","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_DATE \u003d \"11/11/2023\";","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_TIME \u003d \"11:11\";","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" public static final LocalDate VALID_DATE_OBJ \u003d LocalDate.parse(VALID_DATE,","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public static final LocalTime VALID_TIME_OBJ \u003d LocalTime.parse(VALID_TIME,","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter.ofPattern(\"HH:mm\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_DEFAULT \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_100 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_RA1 \u003d \" \" + PREFIX_READING_ASSESSMENT + VALID_GT_RA1;","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_RA2 \u003d \" \" + PREFIX_READING_ASSESSMENT + VALID_GT_RA2;","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_MIDTERMS \u003d \" \" + PREFIX_MIDTERMS + VALID_GT_MIDTERMS;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_FINALS \u003d \" \" + PREFIX_FINALS + VALID_GT_FINALS;","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_PE \u003d \" \" + PREFIX_PRACTICAL_EXAM + VALID_GT_PE;","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" public static final String ASSIGNMENT_DESC \u003d \" \" + PREFIX_ASSIGNMENT + \"Finding ELDRIC\";","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" public static final String GRADE_DESC_400 \u003d \" \" + PREFIX_GRADE + \"400\";","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_RA_DESC \u003d \"-1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_MIDTERMS_DESC \u003d \"wergwrg\"; // only numerics","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_FINALS_DESC \u003d \"-43\"; // no negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_PE_DESC \u003d \"%#\u0026@%$^@#\"; // no special symbols","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" public static final String INVALID_ASSIGNMENT_DESC \u003d \" \" + PREFIX_ASSIGNMENT + \"Finding BOYD\";","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_DESC_1 \u003d \"Reading Assessment 1:-1 | Reading Assessment 2:0 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" + \"| MidTerms:0 | Finals:-1 | Practical Exam:0\"; // No negative scores","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_DESC_2 \u003d \"Reading Assessment 1:0 | Reading Assessment 2:0 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" + \"| MidTerms:0 | Finals:0 | Practical Exam:*\"; // No special char * allowed","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_NAME_TASK1 \u003d \" \" + PREFIX_TASK_NAME + VALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_DESCRIPTION_TASK1 \u003d \" \" + PREFIX_TASK_DESCRIPTION + VALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_NAME_TASK2 \u003d \" \" + PREFIX_TASK_NAME + \"Read quant guide\";","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_DESCRIPTION_TASK2 \u003d \" \" + PREFIX_TASK_DESCRIPTION + \"The green book\";","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" public static final String INVALID_TASK_NAME \u003d \" \" + PREFIX_TASK_NAME + \"@@@@HER\"; // \u0027@\u0027 not allowed in name","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" public static final String GRADED_TEST_1 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" public static final String GRADED_TEST_2 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_1 \u003d \" \" + PREFIX_GRADED_TEST + INVALID_GRADED_TEST_DESC_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_2 \u003d \" \" + PREFIX_GRADED_TEST + INVALID_GRADED_TEST_DESC_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_RA_TEST \u003d \" \" + PREFIX_READING_ASSESSMENT + INVALID_GT_RA_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_MIDTERMS_TEST \u003d \" \" + PREFIX_MIDTERMS + INVALID_GT_MIDTERMS_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_FINALS_TEST \u003d \" \" + PREFIX_FINALS + INVALID_GT_FINALS_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_PE_TEST \u003d \" \" + PREFIX_PRACTICAL_EXAM + INVALID_GT_PE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" public static final String INVALID_TASK_DESCRIPTION \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_DESCRIPTION + \"\\\\ \"; // whitespaces only not allowed in description","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_DATE_DESC \u003d \" \" + PREFIX_DATE + \"1/1/2002\";","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_TIME_DESC \u003d \" \" + PREFIX_TIME + \"0:30\";","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_DATE_DESC \u003d \" \" + PREFIX_DATE + VALID_DATE;","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_TIME_DESC \u003d \" \" + PREFIX_TIME + VALID_TIME;","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" public static final String SESSION_NUMBER_SESSION1 \u003d \" \" + PREFIX_SESSION + \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" public static final String INVALID_SESSION_NUMBER \u003d \" \" + PREFIX_SESSION + \"abc\";","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" public static final String SESSION_STUDENTS_STUDENTS1 \u003d \" \" + PREFIX_NAME + \"Bob\";","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" public static final String INVALID_SESSION_STUDENTS \u003d \" \" + PREFIX_NAME + \"Charlie123@abc\";","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" // public static final EditCommand.EditPersonDescriptor DESC_AMY2;","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_FRIEND).withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" * Updates {@code model}\u0027s filtered list to show only the task at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":" * {@code model}\u0027s task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":" public static void showTaskAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":" Task task \u003d model.getFilteredTaskList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" final String[] splitName \u003d task.getName().taskName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(new TaskNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"ldinghan":5,"Respirayson":27,"raydenlim":60,"Originalidk":7,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/CompleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" * {@code CompleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" getTypicalTaskList(), getTypicalSessionList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(CompleteTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(completeTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(completeTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(CompleteTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(completeTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(completeTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeFirstCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeSecondCommand \u003d new CompleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" assertEquals(completeFirstCommand, completeFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeFirstCommandCopy \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" assertEquals(completeFirstCommand, completeFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" assertFalse(completeFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, completeFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(completeFirstCommand, completeSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" String expected \u003d CompleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, completeTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":109,"raydenlim":12}},{"path":"src/test/java/seedu/address/logic/commands/CreateConsultationCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultationCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" public void constructor_nullDetails_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateConsultCommand(null, null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void execute_consultationAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" ModelStubAcceptingConsultationAdded modelStub \u003d new ModelStubAcceptingConsultationAdded();","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" Consultation validConsultation \u003d new ConsultationBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" CommandResult commandResult \u003d new CreateConsultCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" validConsultation.getDate(),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" validConsultation.getTime(),","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" validConsultation.getStudentsNames()).execute(modelStub);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertEquals(String.format(CreateConsultCommand.MESSAGE_SUCCESS, Messages.format(validConsultation)),","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" assertEquals(Arrays.asList(validConsultation), modelStub.consultationAdded);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" LocalDate date \u003d VALID_DATE_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" LocalTime time \u003d VALID_TIME_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" Set\u003cName\u003e students \u003d SampleDataUtil.getNamesSet(VALID_NAME_AMY);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" CreateConsultCommand createConsultCommand \u003d new CreateConsultCommand(date, time, students);","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" assertTrue(createConsultCommand.equals(createConsultCommand));","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" assertFalse(createConsultCommand.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" assertFalse(createConsultCommand.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" * A Model stub that always accept the consultation being added.","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" private class ModelStubAcceptingConsultationAdded extends ModelStub {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" final ArrayList\u003cConsultation\u003e consultationAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" final AddressBook addressBook \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" return consultationAdded.stream().anyMatch(consultation::isSameConsultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" consultationAdded.add(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" return addressBook.matchName(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" return new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":101}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":10,"-":116}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * {@code DeleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" getTypicalSessionList(), getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, deleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(deleteFirstCommand, deleteSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(p -\u003e false);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":116,"raydenlim":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_successWithValidGradedTest1() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND).withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" .withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_successWithValidGradedTest2() {","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND).withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" .withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"ldinghan":1,"Respirayson":5,"raydenlim":39,"-":182}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", gradedTests\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" + editPersonDescriptor.getGradedTests().orElse(null) + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"raydenlim":2,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":6,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/IncompleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" * {@code IncompleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" getTypicalSessionList(), getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(IncompleteTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(incompleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(incompleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(IncompleteTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(incompleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(incompleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteFirstCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteSecondCommand \u003d new IncompleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" assertEquals(incompleteFirstCommand, incompleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteFirstCommandCopy \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" assertEquals(incompleteFirstCommand, incompleteFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" assertFalse(incompleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, incompleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(incompleteFirstCommand, incompleteSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" String expected \u003d IncompleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, incompleteTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":109,"raydenlim":10}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":6,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/session/CreateSessionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.commands.session;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void execute_createSessionWithSingleStudent_success() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" model.addPerson(student);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(sessionNumber, new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" Session createdSession \u003d model.findSessionBySessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertEquals(1, createdSession.getStudents().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(student));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" public void execute_createSessionWithMultipleStudents_success() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" model.addPerson(alice);","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" model.addPerson(bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e studentNames \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" studentNames.add(new Name(\"Alice\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" studentNames.add(new Name(\"Bob\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(new SessionNumber(\"1\"), studentNames);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" Session createdSession \u003d model.findSessionBySessionNumber(new SessionNumber(\"1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertEquals(2, createdSession.getStudents().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(alice));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(bob));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" public void equals_sameCommands_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command1 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command2 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command1 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command2 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Bob\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" String name \u003d \"Bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder().withName(name).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" model.addPerson(bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(sessionNumber, new Name(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" // Before execution, session has not been created and is null","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" String expectedBeforeExecute \u003d CreateSessionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" + \"{toCreate\u003dnull}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedBeforeExecute, command.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" // Execute creates the session to be added","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" String expectedAfterExecute \u003d CreateSessionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" + \"{toCreate\u003d\" + sessionNumber + \" - \" + name + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedAfterExecute, command.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":98}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ASSIGNMENT_DESC;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" private AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" // no index specified","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" // no field specified","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" // negative index","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"-5\" + ASSIGNMENT_DESC + GRADE_DESC_400, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" // zero index","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"0\" + ASSIGNMENT_DESC + GRADE_DESC_400, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" // invalid order of prefix","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"0\" + GRADE_DESC_400 + ASSIGNMENT_DESC, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" public void parse_invalidAssignment_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" \"1\" + INVALID_ASSIGNMENT_DESC + GRADE_DESC_400, AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" String userInput \u003d targetIndex.getOneBased() + ASSIGNMENT_DESC + GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" assertParseSuccess(parser, userInput, new AddGradeCommand(targetIndex, assignmentName, \"400\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" String userInput \u003d targetIndex.getOneBased() + ASSIGNMENT_DESC + ASSIGNMENT_DESC + GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ASSIGNMENT));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":79}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESCRIPTION_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESCRIPTION_TASK2;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_NAME_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_NAME_TASK2;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" Task expectedTask \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" + TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK1, new AddTaskCommand(expectedTask));","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" String validExpectedTaskString \u003d TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" // multiple names","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, TASK_NAME_TASK2 + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" // multiple description","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, TASK_DESCRIPTION_TASK2 + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" // invalid description","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_DESCRIPTION + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, validExpectedTaskString + INVALID_TASK_NAME,","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" // invalid description","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, validExpectedTaskString + INVALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" // missing name prefix","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, VALID_TASK_NAME + TASK_DESCRIPTION_TASK1,","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" expectedMessage);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" // all prefixes missing","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, VALID_TASK_NAME + VALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" expectedMessage);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" // no description","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" Task expectedTask \u003d new TaskBuilder(TASK1).withDescription(\"\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, TASK_NAME_TASK1, new AddTaskCommand(expectedTask));","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + TASK_DESCRIPTION_TASK2,","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + INVALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" // non-empty preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" + TASK_NAME_TASK1 + TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK2,","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":109,"wesho1107":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" public void parseCommand_createConsultation() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" String inputCommandString \u003d CreateConsultCommand.COMMAND_WORD + VALID_DATE_DESC + VALID_TIME_DESC","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" + NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" assertTrue(parser.parseCommand(inputCommandString) instanceof CreateConsultCommand);","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_addTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddCommand(task));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" assertEquals(new AddTaskCommand(task), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_deleteTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" assertEquals(new DeleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_completeTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand command \u003d (CompleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" assertEquals(new CompleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_incompleteTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand command \u003d (IncompleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" assertEquals(new IncompleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" public void parseCommand_createSession() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" String sessionNumber \u003d \"1\";","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" String studentName \u003d \"Ding Han\";","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" String whiteSpace \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" assertTrue(parser.parseCommand(CreateSessionCommand.COMMAND_WORD","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" + whiteSpace + PREFIX_SESSION + sessionNumber","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" + whiteSpace + PREFIX_NAME + studentName) instanceof CreateSessionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"ldinghan":13,"Respirayson":36,"raydenlim":12,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/CompleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the CompleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private CompleteTaskCommandParser parser \u003d new CompleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsCompleteTaskCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new CompleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/CreateConsultationCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATE_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_OBJ;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_OBJ;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultationCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" private CreateConsultCommandParser parser \u003d new CreateConsultCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" new CreateConsultCommand(VALID_DATE_OBJ, VALID_TIME_OBJ,","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" SampleDataUtil.getNamesSet(VALID_NAME_AMY)));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void parse_multipleNames_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" + VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY + NAME_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" new CreateConsultCommand(VALID_DATE_OBJ, VALID_TIME_OBJ,","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" SampleDataUtil.getNamesSet(VALID_NAME_AMY, VALID_NAME_BOB)));","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void parse_repeatedPrefix_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" String validExpectedConsultationString \u003d VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" // multiple dates","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE_DESC + validExpectedConsultationString,","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATE));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" // multiple time","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_TIME_DESC + validExpectedConsultationString,","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TIME));","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public void parse_invalidInput_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" // invalid date","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" String invalidDateInput \u003d INVALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidDateInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" // invalid time","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" String invalidTimeInput \u003d VALID_DATE_DESC + INVALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidTimeInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" // invalid date and time","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" String invalidDateTimeInput \u003d INVALID_DATE_DESC + INVALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidDateTimeInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateConsultCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" // missing time","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE + VALID_NAME_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" // missing date","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_TIME + VALID_NAME_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" // missing name","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE + VALID_TIME,","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":94}},{"path":"src/test/java/seedu/address/logic/parser/CreateSessionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SESSION_NUMBER;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SESSION_STUDENTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSION_NUMBER_SESSION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSION_STUDENTS_STUDENTS1;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" private CreateSessionCommandParser parser \u003d new CreateSessionCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" + SESSION_NUMBER_SESSION1 + SESSION_STUDENTS_STUDENTS1,","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Bob\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" // invalid session number","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, INVALID_SESSION_NUMBER + SESSION_STUDENTS_STUDENTS1,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" //invalid names","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, SESSION_NUMBER_SESSION1 + INVALID_SESSION_STUDENTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, INVALID_SESSION_NUMBER + INVALID_SESSION_STUDENTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":44}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the DeleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" private static final String GRADED_TEST_EMPTY \u003d \" \" + PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" public void parse_invalidPrefix_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" String userInput \u003d targetIndex.getOneBased() + \" i/JohnDoe\";","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"raydenlim":12,"-":208}},{"path":"src/test/java/seedu/address/logic/parser/IncompleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the IncompleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private IncompleteTaskCommandParser parser \u003d new IncompleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsCompleteTaskCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new IncompleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" private static final String INVALID_PRIORITY \u003d \"jason\";","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":" public void parseNames_validNames_returnsSetOfNames() throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d Collections.singletonList(\"Alice\");","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e expectedNameSet \u003d Collections.singleton(new Name(\"Alice\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e parsedNameSet \u003d ParserUtil.parseNames(names);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedNameSet, parsedNameSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"ldinghan"},"content":" public void parseNames_multipleValidNames_returnsSetOfNames() throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d List.of(\"Alice\", \"Bob\", \"Charlie\");","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e expectedNameSet \u003d Set.of(new Name(\"Alice\"), new Name(\"Bob\"), new Name(\"Charlie\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e parsedNameSet \u003d ParserUtil.parseNames(names);","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedNameSet, parsedNameSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"ldinghan"},"content":" public void parseNames_mixedValidAndInvalidNames_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d List.of(\"Alice\", \"abc_help\", \"Charlie\");","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"ldinghan"},"content":" // When there\u0027s an invalid name, a ParseException should be thrown","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"ldinghan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNames(names));","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"ldinghan"},"content":" public void parsePriority_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"ldinghan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskPriority(INVALID_PRIORITY));","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ldinghan":35,"-":196}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e newPeople \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPeople);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" public void matchName_personWithMatchingName_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" // matching name","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" assertEquals(addressBook.matchName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" // no matching name","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e addressBook.matchName(BOB.getName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" private final ObservableList\u003cPerson\u003e people \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":" AddressBookStub(Collection\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" this.people.setAll(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" return people;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Originalidk":6,"-":102,"wesho1107":16}},{"path":"src/test/java/seedu/address/model/ConsultationListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListBookTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private final ConsultationListBook consultationListBook \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public void constructor() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" assertEquals(Collections.emptyList(), consultationListBook.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultationListBook.resetData(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultationListBook.hasConsultation(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_consultationNotInConsultationListBook_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultationListBook.hasConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_consultationInConsultationListBook_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" consultationListBook.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertTrue(consultationListBook.hasConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" public void getConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" consultationListBook.getConsultationList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationListBook \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" // New SessionListBook should be equal to itself","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationListBook, consultationListBook);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" // Other class objects not equals to ConsultationListBook","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultationListBook.equals(new Integer(1)));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" // ConsultationListBook with different data should not be equal","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook other \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" other.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" assertNotEquals(consultationListBook, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" // ReadOnlyConsultationList should be equal to ConsultationListBook with the same data","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" ReadOnlyConsultationList readOnlyConsultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationListBook, readOnlyConsultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":68}},{"path":"src/test/java/seedu/address/model/GradedTestListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListBookTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONSULTATIONS;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GRADED_TEST;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_SESSIONS;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTestNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.SessionNumberContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" assertEquals(new TaskListBook(), new TaskListBook(modelManager.getTaskList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" assertFalse(modelManager.hasTask(TASK1));","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" modelManager.addTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" assertTrue(modelManager.hasTask(TASK1));","lastModifiedDate":"2023-10-06"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexWithinBounds_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" modelManager.addTask(TASK2);","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" assertEquals(modelManager.getTask(0), TASK2);","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e modelManager.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" public void matchName_personWithMatchingName_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" // matching name","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" assertEquals(modelManager.getMatchingStudentName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" // no matching name","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e modelManager.getMatchingStudentName(BOB.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" public void addConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.addConsultation(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void hasConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasConsultation(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public void addConsultation_validConsultation_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" Consultation consultation \u003d new ConsultationBuilder().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" modelManager.addConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" assertTrue(modelManager.hasConsultation(consultation));","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTaskList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" public void getFilteredConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" modelManager.getFilteredConsultationList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":" public void findSessionBySessionNumber_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"ldinghan"},"content":" SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":203,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":204,"author":{"gitId":"ldinghan"},"content":" Session toAdd \u003d new SessionBuilder().withSessionNumber(\"0\").withStudent(student).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":205,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":206,"author":{"gitId":"ldinghan"},"content":" assertTrue(toAdd.equals(sessionList.findSessionBySessionNumber(new SessionNumber(\"0\"))));","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":208,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":209,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"ldinghan"},"content":" public void getFilteredSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredSessionList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGradedTestList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" Path path \u003d Paths.get(\"gradedtest/list/file/path\");","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" modelManager.setGradedTestListFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGradedTest(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_gradedTestNotInGradedTestList_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.hasGradedTest(GT3));","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_gradedTestInGradedTestList_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" modelManager.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" assertTrue(modelManager.hasGradedTest(GT1));","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexWithinBounds_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" modelManager.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" assertEquals(modelManager.getGradedTest(0), GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e modelManager.getGradedTest(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" public void getFilteredGradedTestList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredGradedTestList().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":262,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":264,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskList \u003d new TaskListBook();","lastModifiedDate":"2023-10-05"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook consultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":268,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, taskList, sessionList,","lastModifiedDate":"2023-10-20"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" consultationList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":278,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":281,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":284,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":286,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":287,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":289,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":294,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":295,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":301,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-05"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":304,"author":{"gitId":"Respirayson"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":305,"author":{"gitId":"Respirayson"},"content":" String[] taskKeywords \u003d TASK1.getName().taskName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"Respirayson"},"content":" modelManager.updateFilteredTaskList(new TaskNameContainsKeywordsPredicate(Arrays.asList(taskKeywords)));","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":" // different consultationList -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" // different sessionList -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":" String[] sessionKeywords \u003d SESSION1A.getSessionNumber().sessionNumber.split(\"\");","lastModifiedDate":"2023-10-20"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredSessionList(","lastModifiedDate":"2023-10-20"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" new SessionNumberContainsKeywordsPredicate(Arrays.asList(sessionKeywords)));","lastModifiedDate":"2023-10-20"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs,","lastModifiedDate":"2023-10-15"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" new TaskListBook(), new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" // different gradedTestList -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" String[] gradedTestKeywords \u003d GT1.getGradedTests().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredGradedTestList(","lastModifiedDate":"2023-10-19"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Arrays.asList(gradedTestKeywords)));","lastModifiedDate":"2023-10-19"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":" System.out.println(GT1.getGradedTests());","lastModifiedDate":"2023-10-19"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs,","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" new TaskListBook(), new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":331,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":" modelManager.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredGradedTestList(PREDICATE_SHOW_ALL_GRADED_TEST);","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredConsultationList(PREDICATE_SHOW_ALL_CONSULTATIONS);","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"ldinghan"},"content":" modelManager.updateFilteredSessionList(PREDICATE_SHOW_ALL_SESSIONS);","lastModifiedDate":"2023-10-19"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":337,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":338,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":339,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":340,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":342,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":343,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":344,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ldinghan":25,"Respirayson":55,"raydenlim":134,"-":131}},{"path":"src/test/java/seedu/address/model/SessionListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"public class SessionListBookTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" private final SessionListBook sessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public void constructor() {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertEquals(Collections.emptyList(), sessionListBook.getSessionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionListBook.resetData(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public void resetData_withValidReadOnlySessionListBook_replacesData() {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" SessionListBook newData \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" sessionListBook.resetData(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" assertEquals(newData, sessionListBook);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public void hasSession_nullSession_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionListBook.hasSession(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" public void hasSession_sessionNotInSessionListBook_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionListBook.hasSession(SESSION3B));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public void hasSession_sessionInSessionListBook_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" sessionListBook.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.hasSession(SESSION3A));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" public void getSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e sessionListBook.getSessionList().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" // New SessionListBook should be equal to itself","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.equals(sessionListBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" // SessionListBook with different data should not be equal","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" SessionListBook differentSessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" differentSessionListBook.addSession(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionListBook.equals(differentSessionListBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" // ReadOnlySessionList should be equal to SessionListBook with the same data","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList readOnlySessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.equals(readOnlySessionList));","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" String expected \u003d SessionListBook.class.getCanonicalName() + \"{sessions\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" + sessionListBook.getSessionList() + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, sessionListBook.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":80}},{"path":"src/test/java/seedu/address/model/attendance/AttendanceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"public class AttendanceTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public void markPresentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" Session emptySession \u003d EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" Attendance.markPresent(emptySession, alice);","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertTrue(emptySession.getStudents().contains(alice));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public void markAbsentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" Session sessionWithAlice \u003d new Session(SESSION1A.getSessionNumber(), SESSION1A.getStudents());","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" Attendance.markAbsent(sessionWithAlice, alice);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionWithAlice.getStudents().contains(alice));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" public void getAttendanceBySessionTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" assertTrue(Attendance.getAttendanceBySession(SESSION3A).equals(SESSION3A.getStudents()));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void getAttendanceByStudentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(CARL).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" Session tempSession3a \u003d new Session(SESSION3A.getSessionNumber(), SESSION3A.getStudents());","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(tempSession3a);","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e attendanceBefore \u003d Attendance.getAttendanceByStudent(carl, sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // bob has not attended tempSession3a","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertFalse(attendanceBefore.contains(tempSession3a));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" carl.attendSession(tempSession3a);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e attendanceAfter \u003d Attendance.getAttendanceByStudent(carl, sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" // Check if the list contains the expected session","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" assertTrue(attendanceAfter.contains(tempSession3a));","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":60}},{"path":"src/test/java/seedu/address/model/consultation/ConsultationListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.ConsultationNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.DuplicateConsultationException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private final ConsultationList consultations \u003d new ConsultationList();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public void contains_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public void contains_consultationNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.contains(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public void contains_consultationInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertTrue(consultations.contains(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void addConsultation_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.addConsultation(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public void addConsultation_duplicateConsultation_throwsDuplicateConsultationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION2);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" assertThrows(DuplicateConsultationException.class, () -\u003e consultations.addConsultation(CONSULTATION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" public void remove_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.remove(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public void remove_consultationDoesNotExist_throwsConsultationNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" assertThrows(ConsultationNotFoundException.class, () -\u003e consultations.remove(CONSULTATION4));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" public void remove_existingConsultation_removesConsultation() {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION3);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" consultations.remove(CONSULTATION3);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.contains(CONSULTATION3));","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" consultations.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" // Same ConsultationList object","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" ConsultationList sameConsultations \u003d consultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultations, sameConsultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" // Object of different class -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.equals(new Integer(1)));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultations.asUnmodifiableObservableList().toString(), consultations.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":84}},{"path":"src/test/java/seedu/address/model/consultation/ConsultationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class ConsultationTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public void isSameConsultation() {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.isSameConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.isSameConsultation(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" // same date, same time, same set of students -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" Consultation editedConsultation \u003d new ConsultationBuilder(CONSULTATION1).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" // different date, same time, same set of students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" editedConsultation \u003d new ConsultationBuilder(CONSULTATION1).withDate(\"01/01/2002\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" // different time, same date, same set of students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" editedConsultation \u003d new ConsultationBuilder(CONSULTATION2).withTime(\"23:59\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION2.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" Consultation consultationCopy \u003d new ConsultationBuilder(CONSULTATION2).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION2.equals(consultationCopy));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.equals(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION4.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" // different consultation -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.equals(CONSULTATION3));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":51}},{"path":"src/test/java/seedu/address/model/gradedtest/FinalsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class FinalsTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validFinalsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" Finals score \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidFinalsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" Finals score1 \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" Finals score2 \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" Finals diffScore \u003d new Finals(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new Finals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidFinals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e Finals.isValidFinalsResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" Finals testScore \u003d new Finals(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new Finals(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new Finals(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT2;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.DuplicateGradedTestException;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.GradedTestNotFoundException;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" public void contains_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.contains(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public void contains_gradedTestNotInList_returnsFalse() {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" public void contains_gradedTestInList_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void add_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.add(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public void add_duplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.add(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_nullTargetGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.editGradedTest(null, GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_nullEditedGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.editGradedTest(GT1, null));","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_targetGradedTestNotInList_throwsGradedTestNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedTestIsSameGradedTest_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(expectedGradedTestList.equals(gradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedeTestHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertTrue(expectedGradedTestList.equals(gradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedTestHasNonUniqueIdentity_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT2));","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_duplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT3);","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT3));","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" public void remove_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.remove(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" public void remove_gradedTestDoesNotExist_throwsGradedTestNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.remove(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public void remove_existingGradedTest_removesGradedTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" gradedTestList.remove(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_nullUniqueGradedTestList_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests((GradedTestList) null));","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_uniqueGradedTestList_replacesOwnListWithProvidedUniqueGradedTestList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(expectedGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests((List\u003cGradedTest\u003e) null));","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e otherGradedTestList \u003d Collections.singletonList(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(otherGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_listWithDuplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e listWithDuplicateGradedTest \u003d Arrays.asList(GT1, GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(listWithDuplicateGradedTest));","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" -\u003e gradedTestList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexWithinBounds_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" assertEquals(GT1, gradedTestList.getGradedTest(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e gradedTestList.getGradedTest(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList.asUnmodifiableObservableList().toString(), gradedTestList.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public void equalsTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList1 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList2 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" // Test when both lists are empty","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" // Add a graded test to one list and test for inequality","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" gradedTestList1.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" // Add the same graded test to the other list and test for equality","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" gradedTestList2.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList1 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList2 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":" // Test when both lists are empty","lastModifiedDate":"2023-10-20"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" // Add a graded test to one list and test for inequality","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" gradedTestList1.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" // Add the same graded test to the other list and test for equality","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" gradedTestList2.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" public void addAndRemoveGradedTests() {","lastModifiedDate":"2023-10-20"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" // Add a graded test","lastModifiedDate":"2023-10-20"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" // Remove the added graded test","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" gradedTestList.remove(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" // Try to remove a non-existent graded test (should throw exception)","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.remove(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListWithDuplicateGradedTests() {","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" // Create a list with duplicate graded tests","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e duplicateGradedTestList \u003d Arrays.asList(GT2, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" // Setting the list should throw DuplicateGradedTestException","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.setGradedTests(duplicateGradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void getGradedTestWithInvalidIndex() {","lastModifiedDate":"2023-10-20"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e gradedTestList.getGradedTest(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestsWithNullList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e nullList \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests(nullList));","lastModifiedDate":"2023-10-20"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" public void unmodifiableListModification() {","lastModifiedDate":"2023-10-20"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" gradedTestList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":273}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.GradedTestBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"0\", \"3\");","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void test_gradedTestContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" // One keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Collections.singletonList(\"1\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withFinals(\"1\").withPe(\"1\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withMidTerms(\"30\").withPe(\"3\").withFinals(\"0\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withMidTerms(\"35\").withFinals(\"0\").withPe(\"3\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void test_gradedTestDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" // Zero keywords","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" assertFalse(predicate.test(new GradedTestBuilder().withFinals(\"1\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" assertFalse(predicate.test(new GradedTestBuilder().withFinals(\"2\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d new GradedTestNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" String expected \u003d GradedTestNameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" + \"{gradedTest keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":83}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.GradedTestBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"public class GradedTestTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new GradedTest(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidGradedTestName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" String invalidGradedTestName \u003d \"%$#%#%\";","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GradedTest(invalidGradedTestName));","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" public void isValidGradedTestName() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" // null gradedTest name","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e GradedTest.isValidGradeTestName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public void isSameGradedTest() {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.isSameGradedTest(GT1));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" // same test -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" GradedTest editedGradedTest1 \u003d new GradedTestBuilder(GT1).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" // different finals -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withFinals(\"100\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // different Pe -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withPe(\"100\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" // different Pe,RA1, RA2 -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withPe(\"100\")","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1\").withReadingAssessment2(\"2\")","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTestCopy \u003d new GradedTestBuilder(GT1).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.equals(gradedTestCopy));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.equals(GT1));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" // different gradedTest -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(GT3));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" // different pe value -\u003e return false","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" GradedTest editedGradedTest2 \u003d new GradedTestBuilder(GT1)","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" .withPe(GT3.getPracticalExam().value).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(editedGradedTest2));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" // different finals value -\u003e return false","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" editedGradedTest2 \u003d new GradedTestBuilder(GT1).withFinals(GT3","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" .getFinals().value).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(editedGradedTest2));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" String expected \u003d String.format(\"%s{Reading Assessment 1\u003d%s,\"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" + \"Reading Assessment 2\u003d%s, MidTerms\u003d%s, Finals\u003d%s, Practical Exam\u003d%s}\",","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" GradedTest.class.getCanonicalName(), GT1.getRA1(), GT1.getRA2(),","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" GT1.getMidTerms(), GT1.getFinals(), GT1.getPracticalExam());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" assertEquals(expected, expected);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":100}},{"path":"src/test/java/seedu/address/model/gradedtest/MidTermTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class MidTermTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validMidTermsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" MidTerms score \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidMidTermsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" MidTerms score1 \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" MidTerms score2 \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" MidTerms diffScore \u003d new MidTerms(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new MidTerms(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidMidTerms() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e MidTerms.isValidMidTermResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" MidTerms testScore \u003d new MidTerms(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new MidTerms(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new MidTerms(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/PracticalExamTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class PracticalExamTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validPracticalExamConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" PracticalExam score \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidPracticalExamConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" PracticalExam score1 \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" PracticalExam score2 \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" PracticalExam diffScore \u003d new PracticalExam(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new PracticalExam(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidMidTerms() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e PracticalExam.isValidPeResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" PracticalExam testScore \u003d new PracticalExam(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new PracticalExam(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new PracticalExam(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/ReadingAssessmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class ReadingAssessmentTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validReadingAssessmentConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidReadingAssessmentConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score1 \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score2 \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment diffScore \u003d new ReadingAssessment(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new ReadingAssessment(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidReadingAssessment() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e ReadingAssessment.isValidRaResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment testScore \u003d new ReadingAssessment(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new ReadingAssessment(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new ReadingAssessment(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public void studentAttendSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" Session emptySession \u003d EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" alice.attendSession(emptySession);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" assertTrue(emptySession.getStudents().contains(alice));","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" public void studentMissSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" Session sessionWithCarl \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudents(SESSION1A.getStudents()).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(CARL).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" carl.missSession(sessionWithCarl);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionWithCarl.getStudents().contains(carl));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public void isSameName() {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // person shares same name object","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" Name aliceName \u003d ALICE.getName();","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertTrue(ALICE.isSameName(aliceName));","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" // different person share same name","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" Person personA \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" Person personB \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertTrue(personA.isSameName(personB.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" public void isSameName_sameName_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" Name name \u003d new Name(\"Jeremy\");","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" Person person \u003d new PersonBuilder().withName(name.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" // Create another person with the same name","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" Person anotherPerson \u003d new PersonBuilder().withName(name.toString()).withPhone(\"98765432\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" assertTrue(person.isSameName(anotherPerson.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public void isSameName_sameNameDifferentObject_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" Name name1 \u003d new Name(\"James\");","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" Name name2 \u003d new Name(\"James\");","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" Person person1 \u003d new PersonBuilder().withName(name1.toString()).withPhone(\"99999999\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" Person person2 \u003d new PersonBuilder().withName(name2.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" assertTrue(person1.isSameName(person2.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" public void isSameName_differentName_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" Name name1 \u003d new Name(\"Green Blue\");","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" Name name2 \u003d new Name(\"Blue Green\");","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" Person person \u003d new PersonBuilder().withName(name1.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" // Create another person with a different name","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" Person anotherPerson \u003d new PersonBuilder().withName(name2.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" assertFalse(person.isSameName(anotherPerson.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" + \", gradedTests\u003d\" + ALICE.getGradedTest() + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ldinghan":57,"raydenlim":14,"-":98}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" public void matchName_nullName_throwsNullPointerException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.matchName(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" public void matchName_personWithSameName_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" assertEquals(uniquePersonList.matchName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.matchName(ALICE.getName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":177,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e listWithDuplicatePeople \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"Originalidk"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePeople));","lastModifiedDate":"2023-10-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" public void matchName_successfulMatch() {","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" Name nameToMatch \u003d new Name(\"Alice Pauline\");","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" Person personWithNameToMatch \u003d new PersonBuilder().withName(nameToMatch.toString()).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" uniquePersonList.add(personWithNameToMatch);","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" Person matchedPerson \u003d uniquePersonList.matchName(nameToMatch);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" assertEquals(personWithNameToMatch, matchedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"ldinghan"},"content":" public void matchName_nameNotInList_unsuccessfulMatch() {","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"ldinghan"},"content":" Name nameToMatch \u003d new Name(\"Invalid name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.matchName(nameToMatch));","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ldinghan":15,"Originalidk":2,"-":173,"wesho1107":16}},{"path":"src/test/java/seedu/address/model/person/assignment/AssignmentMapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMapTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private AssignmentMap assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public void test_contains_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentNameTrue \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" assertTrue(assignments.contains(assignmentNameTrue));","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentNameFalse \u003d new AssignmentName(\"Finding BOYD\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" assertFalse(assignments.contains(assignmentNameFalse));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public void asUnmodifiableObservableMap_modifyMap_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" -\u003e assignments.asUnmodifiableObservableMap().remove(assignmentName));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":28}},{"path":"src/test/java/seedu/address/model/person/assignment/AssignmentNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"public class AssignmentNameTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public void test_sameObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" assertEquals(assignmentName, assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" public void test_differentObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" assertFalse(assignmentName.equals(\"assignmentName\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":21}},{"path":"src/test/java/seedu/address/model/session/SessionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1B;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.DuplicateSessionException;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.SessionNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"public class SessionListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void contains_nullSession_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionList.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public void contains_sessionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public void contains_sessionInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1B);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1B));","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public void add_duplicateSession_throwsDuplicateSessionException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3B);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" assertThrows(DuplicateSessionException.class, () -\u003e sessionList.addSession(SESSION3B));","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_throwsSessionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertThrows(SessionNotFoundException.class, () -\u003e sessionList.setSession(SESSION1A, SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_throwsDuplicateSessionException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION2);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" assertThrows(DuplicateSessionException.class, () -\u003e sessionList.setSession(SESSION1A, SESSION2));","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" sessionList.setSession(SESSION3A, SESSION2);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION2));","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION3A));","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public void remove_addedSession_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" sessionList.remove(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" public void remove_throwsSessionNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" assertThrows(SessionNotFoundException.class, () -\u003e sessionList.remove(SESSION2));","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" public void find_findSessionByNumber_notInSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1B);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionList.findSessionBySessionNumber(new SessionNumber(\"5\")), null);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" public void find_findSessionByNumber_successfulFind() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" assertEquals(SESSION3A, sessionList.findSessionBySessionNumber(new SessionNumber(\"3\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" public void setSessionList_setNewSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" List\u003cSession\u003e newSessionList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" newSessionList.add(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" sessionList.setSessionList(newSessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionList.asUnmodifiableObservableList().toString(), sessionList.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":109}},{"path":"src/test/java/seedu/address/model/session/SessionNumberContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"1\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"0\", \"3\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public void test_sessionNumberContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" // One keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(Collections.singletonList(\"1\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"12\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"30\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"35\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" public void test_sessionNumberDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" // Zero keywords","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" assertFalse(predicate.test(new SessionBuilder().withSessionNumber(\"1\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" assertFalse(predicate.test(new SessionBuilder().withSessionNumber(\"2\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d new SessionNumberContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" String expected \u003d SessionNumberContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" + \"{session keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":82}},{"path":"src/test/java/seedu/address/model/session/SessionNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" public void isValidSessionNumber_validSessionNumber_returnsTrue() {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" // Valid session numbers containing only digits","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"12345\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"9876543210\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" public void isValidSessionNumber_invalidSessionNumber_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" // Invalid session numbers containing non-digits","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"A1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1A\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"12 34\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1_23\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"12@34\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" 1234\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1234 \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" 1234 \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" // Invalid session numbers that are blank or empty","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\\t\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\\n\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber1 \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber2 \u003d new SessionNumber(\"2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber1Copy \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" // Testing equality with itself","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionNumber1.equals(sessionNumber1));","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" // Testing equality with an equivalent object","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionNumber1.equals(sessionNumber1Copy));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" // Testing equality with a different object","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionNumber1.equals(sessionNumber2));","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // Testing equality with null","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionNumber1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":54}},{"path":"src/test/java/seedu/address/model/session/SessionStudentsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"public class SessionStudentsTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" public void addStudent_validStudent_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" sessionStudents.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertEquals(1, sessionStudents.size());","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void removeStudent_validStudent_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" sessionStudents.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" sessionStudents.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" assertEquals(0, sessionStudents.size());","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" public void toStudentNames_validSessionStudents_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents(","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Zoe\").build(),","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Bob\").build(),","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Alice\").build()","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" String expected \u003d \"Alice, Bob, Zoe\";","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, sessionStudents.toStudentNames());","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents1 \u003d new SessionStudents(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents2 \u003d new SessionStudents(new PersonBuilder().withName(\"Bob\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents1Copy \u003d new SessionStudents(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" // Testing equality with itself","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents1.equals(sessionStudents1));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" // Testing equality with an equivalent object","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents1.equals(sessionStudents1Copy));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" // Testing equality with a different object","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents1.equals(sessionStudents2));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" // Testing equality with null","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":67}},{"path":"src/test/java/seedu/address/model/session/SessionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1B;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"public class SessionTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" public void isSameSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION1A.isSameSession(SESSION1B));","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION1A.isSameSession(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION2.isSameSession(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" SESSION3B.addStudent(bob);","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION3B.isSameSession(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Session otherSession \u003d new Session(SESSION1A.getSessionNumber(), SESSION1A.getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION1A.equals(otherSession));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION2.equals(SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION3A.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION3B.equals(\"test\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION2.equals(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // different students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" Session tempSession \u003d new Session(SESSION1B.getSessionNumber(), SESSION1B.getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(TypicalPersons.CARL).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" tempSession.addStudent(carl);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION1B.equals(tempSession));","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void createSessionWithoutStudents() {","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" Session sessionWithoutStudents \u003d new SessionBuilder().withSessionNumber(\"99\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" assertTrue(\"99 - \".equals(sessionWithoutStudents.toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" String expected1 \u003d \"15 - Bob Choo\";","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Session session2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"15\").withStudents(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected1, session2.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" Session tempSession3A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"73\").withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" String expected2 \u003d \"73 - Alice Pauline, Bob Choo\";","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected2, tempSession3A.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":77}},{"path":"src/test/java/seedu/address/model/task/TaskDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public class TaskDescriptionTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDescription(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void isValidDescription() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // null description","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidDescription(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" // invalid descriptions","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskDescription.isValidDescription(\" \")); // spaces only","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // valid descriptions","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"\")); // empty string","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"complete by friday\"));","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"-\")); // one character","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"complete the work and do \"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" + \"the 5 quizzes and all the projects user guide developer guide\")); // long description","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" TaskDescription description \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertTrue(description.equals(new TaskDescription(\"Valid Description\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(new TaskDescription(\"Other Valid Description\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":51}},{"path":"src/test/java/seedu/address/model/task/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"public class TaskListTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public void contains_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.contains(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public void contains_taskNotInList_returnsFalse() {","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(taskList.contains(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public void contains_taskInList_returnsTrue() {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertTrue(taskList.contains(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" public void add_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.add(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public void add_duplicateTask_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.add(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public void setTask_nullTargetTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.editTask(null, TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public void setTask_nullEditedTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.editTask(TASK1, null));","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public void setTask_targetTaskNotInList_throwsTaskNotFoundException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e taskList.editTask(TASK1, TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskIsSameTask_success() {","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" taskList.editTask(TASK1, TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" taskList.editTask(TASK1, TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskHasNonUniqueIdentity_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.editTask(TASK1, TASK2));","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" public void remove_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.remove(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void remove_taskDoesNotExist_throwsTaskNotFoundException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e taskList.remove(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" public void remove_existingTask_removesTask() {","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" taskList.remove(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" public void setTasks_nullUniqueTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.setTasks((TaskList) null));","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void setTasks_uniqueTaskList_replacesOwnListWithProvidedUniqueTaskList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" taskList.setTasks(expectedTaskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" public void setTasks_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.setTasks((List\u003cTask\u003e) null));","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" public void setTasks_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e otherTaskList \u003d Collections.singletonList(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" taskList.setTasks(otherTaskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" public void setTasks_listWithDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e listWithDuplicateTasks \u003d Arrays.asList(TASK1, TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.setTasks(listWithDuplicateTasks));","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" -\u003e taskList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexWithinBounds_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" assertEquals(TASK1, taskList.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e taskList.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" assertEquals(taskList.asUnmodifiableObservableList().toString(), taskList.toString());","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":164}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" public void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" // One keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"cs2103t\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2103t\", \"cs2100\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2100\", \"cs2101\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2101\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cS2103T\", \"Cs2100\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public void test_taskNameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" // Zero keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" assertFalse(predicate.test(new TaskBuilder().withName(\"do cs2103t\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2101\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" assertFalse(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" + \"{task keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":86}},{"path":"src/test/java/seedu/address/model/task/TaskNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public class TaskNameTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskName(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskName(invalidName));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // null name","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskName.isValidName(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" // valid name","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"do work\")); // alphabets only","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"2103\")); // numbers only","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"do the 2nd paper\")); // alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"Read Script\")); // with capital letters","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"Read the script and memorise everything fully\")); // long names","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" TaskName name \u003d new TaskName(\"Borrow Book\");","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" assertTrue(name.equals(new TaskName(\"Borrow Book\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(new TaskName(\"Other Borrow Book\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/test/java/seedu/address/model/task/TaskPriorityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class TaskPriorityTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" public void testEnumValues_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" // Test that all enum values are correctly defined","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" TaskPriority low \u003d TaskPriority.LOW;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" TaskPriority medium \u003d TaskPriority.MEDIUM;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" TaskPriority high \u003d TaskPriority.HIGH;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"LOW\", low.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"MEDIUM\", medium.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"HIGH\", high.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public void testMessageConstraints_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"TaskPriority should only be low, medium, or high\", TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":26}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"public class TaskTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void isSameTask() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.isSameTask(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // same name, same description -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" Task editedTask1 \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" // different name, same description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" editedTask1 \u003d new TaskBuilder(TASK1).withDescription(\"Hello world\").build();","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" // same name, different description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" editedTask1 \u003d new TaskBuilder(TASK1).withName(\"Say goodbye\").build();","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" Task taskCopy \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.equals(taskCopy));","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.equals(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(5));","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(TASK2));","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(TASK1).withName(TASK2.getName().taskName).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(editedTask));","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" editedTask \u003d new TaskBuilder(TASK1).withDescription(TASK2.getDescription().description).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(editedTask));","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" public void hashCode_sameFields_expectSameHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Task task1 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" Task task2 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" assertEquals(task1.hashCode(), task2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public void hashCode_differentFields_expectDifferentHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" Task task1 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" Task task2 \u003d new Task(new TaskName(\"Task 2\"), new TaskDescription(\"Description 2\"), true, TaskPriority.HIGH);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" assertThrows(AssertionError.class, () -\u003e assertEquals(task1.hashCode(), task2.hashCode()));","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" String expected \u003d String.format(\"%s{name\u003d%s, description\u003d%s, isDone\u003d%s, priority\u003d%s}\",","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" Task.class.getCanonicalName(), TASK1.getName(), TASK1.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" TASK1.getIsDone(), TASK1.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, TASK1.toString());","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"ldinghan":17,"Respirayson":72}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedConsultationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.TypicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class JsonAdaptedConsultationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public void toModelType_validConsultationDetails_returnsConsultation() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(TypicalConsultations.CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" assertEquals(TypicalConsultations.CONSULTATION1, consultation.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public void toModelType_validConsultationDetailsWithMultipleStudents_returnConsultation() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(TypicalConsultations.CONSULTATION2);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" assertEquals(TypicalConsultations.CONSULTATION2, consultation.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void toModelType_invalidConsultationDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(\"2023-11-11\", \"01:00\", students);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, consultation::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":33}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGradedTestTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.TypicalGradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"public class JsonAdaptedGradedTestTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validJsonAdaptedGradedTestWithDefaults_success() throws IllegalValueException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" \"80\", \"90\", \"-\", \"85\", \"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTest \u003d jsonAdaptedGradedTest.toModelType();","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment ra1 \u003d new ReadingAssessment(\"80\");","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment ra2 \u003d new ReadingAssessment(\"90\");","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms \u003d new MidTerms(\"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" Finals finals \u003d new Finals(\"85\");","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" PracticalExam pe \u003d new PracticalExam(\"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" // Verify the converted GradedTest fields, including the defaults","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" assertTrue(ra1.equals(gradedTest.getRA1()));","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertTrue(ra2.equals(gradedTest.getRA2()));","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertTrue(midTerms.equals(gradedTest.getMidTerms()));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertTrue(finals.equals(gradedTest.getFinals()));","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" assertTrue(pe.equals(gradedTest.getPracticalExam()));","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException1() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" \"80\", \"90\", \"abc\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException2() {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" \"-1\", \"90\", \"23\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException3() {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" \"23\", \"-90\", \"23\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void toModelType_missingFields_throwsIllegalValueException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(null, \"90\", \"75\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation1() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT1, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation2() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT2, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation3() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT3);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT3, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation4() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT4);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT4, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"raydenlim":90}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_RA1 \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_RA2 \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_MIDTERMS \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_FINALS \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_PE \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" private static final List\u003cJsonAdaptedGradedTest\u003e VALID_GRADED_TEST \u003d BENSON.getGradedTest().stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" .map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" invalidTags, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"raydenlim":26,"-":100}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedSessionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"public class JsonAdaptedSessionTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public void toModelType_validSessionDetails_returnsSession() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(new SessionBuilder().withSessionNumber(\"0\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertEquals(new SessionBuilder().withSessionNumber(\"0\").build(), session.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void toModelType_validSessionDetailsWithMultipleStudents_returnsSession() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(new Session(new SessionNumber(\"1\"), TypicalPersons.BOB));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" assertEquals(new Session(new SessionNumber(\"1\"), TypicalPersons.BOB), session.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" public void toModelType_invalidSessionNumber_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(null, students);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" String expectedMessage \u003d SessionNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, session::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"ldinghan":38}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.storage.JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_NAME \u003d \"!!! do cs2120@@@\"; // no symbols","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \" \"; // whitespace only not allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_PRIORITY \u003d \"jason\"; // not low, medium or high","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_NAME \u003d TASK1.getName().toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_DESCRIPTION \u003d TASK1.getDescription().toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_PRIORITY \u003d TASK1.getPriority().name();","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void toModelType_validTaskDetails_returnsTask() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" assertEquals(TASK1, task.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" new JsonAdaptedTask(INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, VALID_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskName.class.getSimpleName());","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" new JsonAdaptedTask(VALID_NAME, INVALID_TASK_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, null, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskDescription.class.getSimpleName());","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, false, INVALID_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskPriority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, false, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskPriority.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":75}},{"path":"src/test/java/seedu/address/storage/JsonConsultationListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"public class JsonConsultationListStorageTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" \"JsonConsultationListStorageTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" @TempDir","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public void readConsultation_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e readConsultationListBook(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" private java.util.Optional\u003cReadOnlyConsultationList\u003e readConsultationListBook(String filePath) throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" return new JsonConsultationListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" .readConsultationList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" : null;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" assertFalse(readConsultationListBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"notJsonFormatConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public void readConsultationListBook_invalidDate_throwDateTimeParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"invalidDateConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" public void readConsultationListBook_invalidTime_throwDateTimeParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"invalidTimeConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" public void readAndSaveConsultationListBook_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" Path filePath \u003d testFolder.resolve(\"TempConsultationListBook.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook original \u003d getTypicalConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" JsonConsultationListStorage jsonConsultationListStorage \u003d new JsonConsultationListStorage(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" ReadOnlyConsultationList readBack \u003d jsonConsultationListStorage.readConsultationList(filePath).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" // Modify data, overwrite existing file, and read back","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" original.addConsultation(CONSULTATION4);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" readBack \u003d jsonConsultationListStorage.readConsultationList(filePath).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" original.addConsultation(CONSULTATION3);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" readBack \u003d jsonConsultationListStorage.readConsultationList().get();","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationListBook_nullConsultationListBook_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" saveConsultationListBook(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationListBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":" saveConsultationListBook(new ConsultationListBook(), null));","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"wesho1107"},"content":" * Saves {@code consultationListBook} at the specified {@code filePath}.","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"wesho1107"},"content":" private void saveConsultationListBook(ReadOnlyConsultationList consultationListBook, String filePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"wesho1107"},"content":" new JsonConsultationListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wesho1107"},"content":" .saveConsultationList(consultationListBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"wesho1107"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"wesho1107"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":116}},{"path":"src/test/java/seedu/address/storage/JsonGradedTestListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT4;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"public class JsonGradedTestListStorageTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\",","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" \"data\", \"JsonGradedTestListStorageTest\");","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @TempDir","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e readGradedTestList(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" private java.util.Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(String filePath)","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" return new JsonGradedTestListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .readGradedTestList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" : null;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" assertFalse(readGradedTestList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"notJsonFormatGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_invalidGradedTestList_throwDataLoadingException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, ()-\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"invalidGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_invalidAndValidGradedTestList_throwDataLoadingException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"invalidAndValidGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" public void readAndSaveGradedTestList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" Path filePath \u003d testFolder.resolve(\"TempGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook original \u003d getTypicalGradedTestList();","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage jsonGradedTestListStorage \u003d new JsonGradedTestListStorage(filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList readBack \u003d jsonGradedTestListStorage.readGradedTestList(filePath).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" original.addGradedTest(GT3);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" original.removeGradedTest(GT1);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" readBack \u003d jsonGradedTestListStorage.readGradedTestList(filePath).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" original.addGradedTest(GT4);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original); // file path not specified","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" readBack \u003d jsonGradedTestListStorage.readGradedTestList().get(); // file path not specified","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" * Saves {@code gradedTestList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" private void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, String filePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" .saveGradedTestList(gradedTestList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(new GradedTestListBook(), null));","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":118}},{"path":"src/test/java/seedu/address/storage/JsonSerializableConsultationListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.TypicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class JsonSerializableConsultationListTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" \"test\", \"data\", \"JsonSerializableConsultationListTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private static final Path TYPICAL_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" .resolve(\"typicalConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private static final Path INVALID_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" .resolve(\"invalidConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private static final Path DUPLICATE_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" .resolve(\"duplicateConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void toModelType_typicalConsultationsFile_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationList \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook typicalConsultationList \u003d TypicalConsultations.getTypicalConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationList, typicalConsultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void toModelType_invalidConsultationsFile_throwsDateTimeParseException() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" assertThrows(IllegalValueException.class, JsonSerializableConsultationList.MESSAGE_DUPLICATE_CONSULTATION,","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":50}},{"path":"src/test/java/seedu/address/storage/JsonSerializableGradedTestListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.TypicalGradedTest;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"public class JsonSerializableGradedTestListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" \"test\", \"data\", \"JsonSerializableGradedTestListTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" private static final Path TYPICAL_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private static final Path INVALID_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private static final Path DUPLICATE_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" public void toModelType_typicalGradedTestFile_success() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook typicalGradedTestList \u003d TypicalGradedTest.getTypicalGradedTestList();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestListFromFile, typicalGradedTestList);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidGradedTestFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public void toModelType_duplicateGradedTest_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, JsonSerializableGradedTestList.MESSAGE_DUPLICATE_GRADED_TEST,","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":46}},{"path":"src/test/java/seedu/address/storage/JsonSerializableSessionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalSessions;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"public class JsonSerializableSessionListTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" \"test\", \"data\", \"JsonSerializableSessionListTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" private static final Path TYPICAL_SESSIONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private static final Path INVALID_SESSION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private static final Path DUPLICATE_SESSION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void toModelType_typicalSessionsFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_SESSIONS_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" SessionListBook typicalSessionList \u003d TypicalSessions.getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionListFromFile, typicalSessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public void toModelType_invalidSessionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_SESSION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" public void toModelType_duplicateSessions_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_SESSION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, JsonSerializableSessionList.MESSAGE_DUPLICATE_SESSION,","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":49}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" \"test\", \"data\", \"JsonSerializableTaskListTest\");","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private static final Path TYPICAL_TASKS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private static final Path INVALID_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final Path DUPLICATE_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void toModelType_typicalTasksFile_success() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TASKS_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" TaskListBook typicalTaskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertEquals(taskListFromFile, typicalTaskList);","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidTaskFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TASK_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TASK_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, JsonSerializableTaskList.MESSAGE_DUPLICATE_TASK,","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":48}},{"path":"src/test/java/seedu/address/storage/JsonSessionListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION_TYPICAL1;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"public class JsonSessionListStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSessionListStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e readSessionList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" private java.util.Optional\u003cReadOnlySessionList\u003e readSessionList(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" return new JsonSessionListStorage(Paths.get(filePath)).readSessionList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" assertFalse(readSessionList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"notJsonFormatSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_invalidSessionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"invalidSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_invalidAndValidSessionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"invalidAndValidSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" public void readAndSaveSessionList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" Path filePath \u003d testFolder.resolve(\"TempSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" SessionListBook original \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage jsonSessionListStorage \u003d new JsonSessionListStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList readBack \u003d jsonSessionListStorage.readSessionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" original.addSession(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" original.removeSession(SESSION_TYPICAL1);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" readBack \u003d jsonSessionListStorage.readSessionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" original.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" readBack \u003d jsonSessionListStorage.readSessionList().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e saveSessionList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Saves {@code taskList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" private void saveSessionList(ReadOnlySessionList sessionList, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" new JsonSessionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" .saveSessionList(sessionList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", e);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e saveSessionList(new SessionListBook(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":111}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK3;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK4;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @TempDir","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e readTaskList(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" private java.util.Optional\u003cReadOnlyTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" : null;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"notJsonFormatTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_invalidTaskList_throwDataLoadingException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"invalidTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_invalidAndValidTaskList_throwDataLoadingException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"invalidAndValidTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" TaskListBook original \u003d getTypicalTaskList();","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original, filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" original.addTask(TASK3);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" original.removeTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original, filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" original.addTask(TASK4);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original); // file path not specified","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" readBack \u003d jsonTaskListStorage.readTaskList().get(); // file path not specified","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" * Saves {@code taskList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" private void saveTaskList(ReadOnlyTaskList taskList, String filePath) {","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" new JsonTaskListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" .saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskListBook(), null));","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":110}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"tasks\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d new JsonSessionListStorage(getTempFilePath(\"sessions\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" getTempFilePath(\"consultations\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d new JsonGradedTestListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" getTempFilePath(\"gradedTests\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" public void sessionListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" SessionListBook original \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" storageManager.saveSessionList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList retrieved \u003d storageManager.readSessionList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" public void getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" assertNotNull(storageManager.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public void getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" assertNotNull(storageManager.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" public void consultationListReadSave() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook original \u003d getTypicalConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" storageManager.saveConsultationList(original);","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList retrieved \u003d storageManager.readConsultationList().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new ConsultationListBook(retrieved));","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void taskListReadSave() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" TaskListBook original \u003d getTypicalTaskList();","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" storageManager.saveTaskList(original);","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList retrieved \u003d storageManager.readTaskList().get();","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(retrieved));","lastModifiedDate":"2023-10-07"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2023-10-07"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" public void getGradedTaskListFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" assertNotNull(storageManager.getGradedTestListFilePath());","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" public void gradedTestListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook original \u003d getTypicalGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" storageManager.saveGradedTestList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList retrieved \u003d storageManager.readGradedTestList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" // assertTrue(original.equals(new GradedTestListBook(retrieved)));","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Original: \" + original);","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Retrieved: \" + new GradedTestListBook(retrieved));","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":17,"Respirayson":22,"raydenlim":45,"-":67}},{"path":"src/test/java/seedu/address/testutil/ConsultationBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * A utility class to help with building Consultation objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationBuilder {","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public static final String DEFAULT_DATE \u003d \"11/11/2023\";","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public static final String DEFAULT_TIME \u003d \"11:11\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public static final Set\u003cPerson\u003e DEFAULT_STUDENTS \u003d TypicalPersons.DEFAULT_PERSONS;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" private final DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" private LocalDate date;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private LocalTime time;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationBuilder} with the default details.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder() {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.date \u003d LocalDate.parse(DEFAULT_DATE, dateFormatter);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" this.time \u003d LocalTime.parse(DEFAULT_TIME, timeFormatter);","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this.students \u003d DEFAULT_STUDENTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * Initializes the ConsultationBuilder with the data of {@code consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder(Consultation consultation) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" this.date \u003d consultation.getDate();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" this.time \u003d consultation.getTime();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" this.students \u003d consultation.getStudents();","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" * Sets the {@code Date} of the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withDate(String date) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" this.date \u003d LocalDate.parse(date.trim(), dateFormatter);;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * Sets the {@code Time} of the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withTime(String time) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" this.time \u003d LocalTime.parse(time.trim(), timeFormatter);;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" * Get the set of students for the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withStudents(Person ... students) {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" this.students \u003d SampleDataUtil.getStudentSet(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public Consultation build() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" return new Consultation(date, time, students);","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":70}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(person.getGradedTest());","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" * Parses the {@code gradedTest} into a {@code Set\u003cGradedTest\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" * that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withGradedTest(String... gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTestSet \u003d Stream.of(gradedTests).map(GradedTest::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(gradedTestSet);","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Sets the Reading Assessment for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withRA1(String ra1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" descriptor.setReadingAssessment1(new ReadingAssessment(ra1));","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" * Sets the Reading Assessment for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withRA2(String ra2) {","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" descriptor.setReadingAssessment2(new ReadingAssessment(ra2));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" * Sets the MidTerms for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withMidTerm(String midterms) {","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" descriptor.setMidTerms(new MidTerms(midterms));","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" * Sets the Finals for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withFinals(String finals) {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" descriptor.setFinals(new Finals(finals));","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" * Sets the Practical Exam for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withPracticalExam(String pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" descriptor.setPracticalExam(new PracticalExam(pe));","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"raydenlim":56,"-":87}},{"path":"src/test/java/seedu/address/testutil/GradedTestBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" * A utility class for building GradedTest objects for testing.","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * It provides methods for setting individual components of a GradedTest object.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * You can create GradedTest objects with custom attributes or use default values.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"public class GradedTestBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_RA1 \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_RA2 \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_MIDTERMS \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_FINALS \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_PE \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment rA1;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment rA2;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private MidTerms midterms;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private Finals finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private PracticalExam pE;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Creates a {@code GradedTestBuilder} with the default details.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" rA1 \u003d new ReadingAssessment(DEFAULT_RA1);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" rA2 \u003d new ReadingAssessment(DEFAULT_RA2);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" midterms \u003d new MidTerms(DEFAULT_MIDTERMS);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" finals \u003d new Finals(DEFAULT_FINALS);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" pE \u003d new PracticalExam(DEFAULT_PE);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * Initializes the GradedTestBuilder with the data of {@code gradedTest}.","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder(GradedTest gradedTestToCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" rA1 \u003d gradedTestToCopy.getRA1();","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" rA2 \u003d gradedTestToCopy.getRA2();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" midterms \u003d gradedTestToCopy.getMidTerms();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" finals \u003d gradedTestToCopy.getFinals();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" pE \u003d gradedTestToCopy.getPracticalExam();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code ReadingAssessment} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withReadingAssessment1(String rA1) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" this.rA1 \u003d new ReadingAssessment(rA1);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code ReadingAssessment} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withReadingAssessment2(String rA2) {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" this.rA2 \u003d new ReadingAssessment(rA2);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code MidTerms} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withMidTerms(String midTerms) {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" this.midterms \u003d new MidTerms(midTerms);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code Finals} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withFinals(String finals) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d new Finals(finals);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code PracticalExam} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withPe(String pE) {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" this.pE \u003d new PracticalExam(pE);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" public GradedTest build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(rA1, rA2, midterms, finals, pE);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":95}},{"path":"src/test/java/seedu/address/testutil/ModelStub.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"public class ModelStub implements Model {","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" public void setTaskList(ReadOnlyTaskList taskList) {","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyTaskList getTaskList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public ReadOnlySessionList getSessionList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredSessionList(Predicate\u003cSession\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestList(ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyGradedTestList getGradedTestList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" public void deleteGradedTest(GradedTest target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"raydenlim":251}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private Set\u003cGradedTest\u003e gradedTests;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" private Set\u003cSession\u003e sessions;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" private AssignmentMap assignments;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" sessions \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" assignments \u003d personToCopy.getAllAssignments();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new HashSet\u003c\u003e(personToCopy.getGradedTest());","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" * Parses the {@code gradedTest} into a {@code Set\u003cGradedTest\u003e} and set it to","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" * the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" public PersonBuilder withGradedTest(String ... gradedTests) {","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" this.gradedTests \u003d SampleDataUtil.getGradedTestSet(gradedTests);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" return new Person(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ldinghan":4,"raydenlim":14,"Originalidk":4,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" person.getGradedTest().stream().forEach(","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" s -\u003e sb.append(PREFIX_GRADED_TEST + s.gradedTestsIndv + \" \")","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" );","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"raydenlim":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/SessionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * A utility class for building Session objects for testing purposes.","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"public class SessionBuilder {","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" public static final String DEFAULT_SESSION_NUMBER \u003d \"1\";","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" private SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" private SessionStudents students;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionBuilder with default session number and no students.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" sessionNumber \u003d new SessionNumber(DEFAULT_SESSION_NUMBER);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionBuilder with a given session number and no students.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to use for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * Sets the session number for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to use for the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withSessionNumber(String sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d new SessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * Sets the students for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated students.","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudents(SessionStudents students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * Sets the students for the session being built from an array of Person objects.","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated students.","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudents(Person... students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * Sets a single student for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated student.","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" * Builds and returns the Session object with the specified session number and students.","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * @return The Session object with the specified attributes.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" public Session build() {","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return new Session(sessionNumber, students);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":91}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"public class TaskBuilder {","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_NAME \u003d \"Borrow book\";","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"At Central Library\";","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_PRIORITY \u003d \"HIGH\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private TaskName name;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private TaskDescription description;","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private TaskPriority priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder() {","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" name \u003d new TaskName(DEFAULT_NAME);","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" description \u003d new TaskDescription(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" priority \u003d TaskPriority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" * Initializes the TaskBuilder with the data of {@code task}.","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder(Task task) {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" name \u003d task.getName();","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" description \u003d task.getDescription();","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" priority \u003d task.getPriority();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code Name} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withName(String name) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" this.name \u003d new TaskName(name);","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code Description} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withDescription(String description) {","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" this.description \u003d new TaskDescription(description);","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code isDone} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withIsDone(boolean isDone) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code priority} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withPriority(String name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d TaskPriority.valueOf(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" public Task build() {","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return new Task(name, description, isDone, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":77}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * A utility class for Task.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class TaskUtil {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Returns an add command string for adding the {@code task}.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public static String getAddCommand(Task task) {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" return AddTaskCommand.COMMAND_WORD + \" \" + getTaskDetails(task);","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * Returns the part of command string for the given {@code task}\u0027s details.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static String getTaskDetails(Task task) {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" sb.append(PREFIX_TASK_NAME).append(task.getName().taskName).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" sb.append(PREFIX_TASK_DESCRIPTION).append(task.getDescription().description).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" return sb.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":30}},{"path":"src/test/java/seedu/address/testutil/TypicalConsultations.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.ConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * A utility class containing a list of {@code Consultation} objects to be used in tests.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class TypicalConsultations {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION1 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" .withDate(\"11/11/2002\")","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" .withTime(\"10:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.AMY)","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION2 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" .withDate(\"12/12/2022\")","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" .withTime(\"19:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.ALICE, TypicalPersons.GEORGE)","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION3 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" .withDate(\"03/07/2023\")","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" .withTime(\"12:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.CARL, TypicalPersons.BOB, TypicalPersons.BENSON)","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION4 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" .withDate(\"03/03/2023\")","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" .withTime(\"13:30\")","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.ELLE)","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" private TypicalConsultations() {} // prevents initialising","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public static ConsultationListBook getTypicalConsultationListBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook clb \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" for (Consultation consultation : getTypicalConsultations()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" clb.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" return clb;","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public static ConsultationList getTypicalConsultations() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" ConsultationList typicalConsultations \u003d new ConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" List\u003cConsultation\u003e consultationList \u003d new ArrayList\u003c\u003e(Arrays.asList(CONSULTATION1, CONSULTATION2));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" typicalConsultations.setConsultationList(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return typicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":58}},{"path":"src/test/java/seedu/address/testutil/TypicalGradedTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * A utility class containing a list of {@code GradedTest} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"public class TypicalGradedTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT1 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1.0\")","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3\")","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT2 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" .withPe(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" // Pass, floats allowed","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT3 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT4 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1\")","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2.0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3\")","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4.0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5\")","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" private TypicalGradedTest() {} // prevents instantiation","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" * Returns an {@code GradedTestBook} with all the typical gradedTest.","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public static GradedTestListBook getTypicalGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook ab \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" for (GradedTest gt : getTypicalGradedTest()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" ab.addGradedTest(gt);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return ab;","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static List\u003cGradedTest\u003e getTypicalGradedTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(GT1, GT2));","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":65}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_THIRD_TASK \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"Respirayson":3,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" public static final Set\u003cPerson\u003e DEFAULT_PERSONS \u003d SampleDataUtil.getStudentSet(AMY);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"raydenlim":19,"-":65,"wesho1107":1}},{"path":"src/test/java/seedu/address/testutil/TypicalSessions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * A utility class containing a set of typical sessions for testing purposes.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"public class TypicalSessions {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * A typical empty session with session number 9, with no students.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" public static final Session EMPTY_SESSION \u003d new SessionBuilder().withSessionNumber(\"9\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 1, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION1A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 1, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION1B \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 2, attended by Bob.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"2\").withStudent(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Alice and Bob.","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION3A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"3\").withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION3B \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"3\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 2, attended by Alice.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION_TYPICAL1 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"5\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Benson.","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION_TYPICAL2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"6\").withStudent(TypicalPersons.BENSON).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public static SessionListBook getTypicalSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" SessionListBook sb \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" for (Session session : getTypicalSessions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" sb.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" return sb;","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" public static SessionList getTypicalSessions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" SessionList typicalSessions \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" List\u003cSession\u003e sessionsList \u003d new ArrayList\u003c\u003e(Arrays.asList(SESSION_TYPICAL1, SESSION_TYPICAL2));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" typicalSessions.setSessionList(sessionsList);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" return typicalSessions;","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":79}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class TypicalTasks {","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK1 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" .withName(\"Do cs2103t\")","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"Complete PRS\")","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK2 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" .withName(\"Read quant guide\")","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"The green book\")","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK3 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" .withName(\"Study cs3233\")","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"Read Steven Halim Book for competitive programming\")","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK4 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" .withName(\"Plan for mods\")","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"SEPSPEPESEP\")","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" private TypicalTasks() {} // prevents instantiation","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * Returns an {@code TaskListBook} with all the typical tasks.","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public static TaskListBook getTypicalTaskList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" TaskListBook ab \u003d new TaskListBook();","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" for (Task task : getTypicalTasks()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" ab.addTask(task);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" return ab;","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public static List\u003cTask\u003e getTypicalTasks() {","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(TASK1, TASK2));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":51}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-1/tp/actions)","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"* This is **a one-stop platform for CS1101S Avengers**.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Track tasks and assignments to do","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Record attendance of students","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"* It is named `F.A.K.E.J.A.R.V.I.S.` because it was inspired by our favourite `Marvel` movie, (`Avengers`).","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"* For the detailed documentation of this project, see the **[F.A.K.E.J.A.R.V.I.S. Product Website](https://ay2324s1-cs2103t-t15-1.github.io/tp/)**.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"Respirayson":6,"raydenlim":1,"-":4}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2023-10-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2023-10-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2023-10-05"},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2023-10-05"},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Respirayson":4,"-":430}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"## Project F.A.K.E.J.A.R.V.I.S.\u0027 Team","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/fakejarvis.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"### Yeap Rayson","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/respirayson.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"[[homepage](http://linkedin.com/in/rayson-yeap)]","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"[[github](https://github.com/respirayson)]","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"[[portfolio](team/respirayson.md)]","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"* Role: Git expert, Documentation","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"### Jian Song","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"\u003cimg src\u003d\"images/raydenlim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"[[github](http://github.com/raydenlim)]","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"[[portfolio](team/raydenlim.md)]","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"* Role: Morale Booster, Debugger","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"* Responsibilities: *","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"### Ding Han","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"\u003cimg src\u003d\"images/ldinghan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"[[github](http://github.com/ldinghan)] [[portfolio](team/ldinghan.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"### Ryan Pang","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":"\u003cimg src\u003d\"images/originalidk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"[[github](https://github.com/Originalidk)]","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":"[[portfolio](team/originalidk.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"* Responsibilities: Fullstack","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"### Ho Jia Cheng","lastModifiedDate":"2023-10-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"\u003cimg src\u003d\"images/wesho1107.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"[[github](http://github.com/wesho1107)]","lastModifiedDate":"2023-10-03"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":"[[portfolio](team/wesho1107.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"ldinghan":3,"Respirayson":5,"raydenlim":9,"Originalidk":5,"-":36,"wesho1107":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"# F.A.K.E.J.A.R.V.I.S. Developer Guide","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":"**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T15-1/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram.puml\" alt\u003d\"UndoSequenceDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"Respirayson"},"content":"* CS1101S Avengers","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"Respirayson"},"content":"* has a need to manage a significant number of classes, tutorials and assignments","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Respirayson"},"content":"**Value proposition**: track assignment gradings, student participation and plan their tutorials, consultations and mastery checks","lastModifiedDate":"2023-10-03"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"Respirayson"},"content":"|----------|--------------------------------------------|-------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-10-03"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"Respirayson"},"content":"| `* * *` | busy avenger | keep track of what needs to be done | better guide my students. |","lastModifiedDate":"2023-10-03"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":"(For all use cases below, the **System** is the `F.A.K.E.J.A.R.V.I.S.` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":"2. F.A.K.E.J.A.R.V.I.S. shows a list of persons","lastModifiedDate":"2023-10-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":"4. F.A.K.E.J.A.R.V.I.S. deletes the person","lastModifiedDate":"2023-10-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"raydenlim"},"content":" * 3a1. F.A.K.E.J.A.R.V.I.S. shows an error message.","lastModifiedDate":"2023-10-23"},{"lineNumber":322,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"Respirayson"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"Respirayson"},"content":"**Use case: Delete a task**","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":328,"author":{"gitId":"Respirayson"},"content":"**MSS**","lastModifiedDate":"2023-10-03"},{"lineNumber":329,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":330,"author":{"gitId":"Respirayson"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-03"},{"lineNumber":331,"author":{"gitId":"raydenlim"},"content":"2. F.A.K.E.J.A.R.V.I.S. shows a list of persons","lastModifiedDate":"2023-10-23"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":333,"author":{"gitId":"raydenlim"},"content":"4. F.A.K.E.J.A.R.V.I.S. deletes the person","lastModifiedDate":"2023-10-23"},{"lineNumber":334,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":335,"author":{"gitId":"Respirayson"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":336,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":337,"author":{"gitId":"Respirayson"},"content":"**Extensions**","lastModifiedDate":"2023-10-03"},{"lineNumber":338,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":339,"author":{"gitId":"Originalidk"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-05"},{"lineNumber":340,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":341,"author":{"gitId":"Originalidk"},"content":" Use case ends.","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":343,"author":{"gitId":"Originalidk"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"raydenlim"},"content":" * 3a1. F.A.K.E.J.A.R.V.I.S. shows an error message.","lastModifiedDate":"2023-10-23"},{"lineNumber":346,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"Originalidk"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"Originalidk"},"content":"**Use case: Grade an assignment**","lastModifiedDate":"2023-10-05"},{"lineNumber":351,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":352,"author":{"gitId":"Originalidk"},"content":"**MSS**","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"Originalidk"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-05"},{"lineNumber":355,"author":{"gitId":"raydenlim"},"content":"2. F.A.K.E.J.A.R.V.I.S. shows a list of persons","lastModifiedDate":"2023-10-23"},{"lineNumber":356,"author":{"gitId":"Originalidk"},"content":"3. User requests to grade an assignment for a specific person in the list","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"raydenlim"},"content":"4. F.A.K.E.J.A.R.V.I.S. assigns given grade to the student","lastModifiedDate":"2023-10-23"},{"lineNumber":358,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":" Use case ends.","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":"**Extensions**","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"Respirayson"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-03"},{"lineNumber":364,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":365,"author":{"gitId":"Respirayson"},"content":" Use case ends.","lastModifiedDate":"2023-10-03"},{"lineNumber":366,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":367,"author":{"gitId":"Respirayson"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2023-10-03"},{"lineNumber":368,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":369,"author":{"gitId":"raydenlim"},"content":" * 3a1. F.A.K.E.J.A.R.V.I.S. shows an error message.","lastModifiedDate":"2023-10-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"raydenlim"},"content":"**Use case: Find Student Profile**","lastModifiedDate":"2023-10-06"},{"lineNumber":374,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":375,"author":{"gitId":"raydenlim"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"raydenlim"},"content":"1. User requests to list persons","lastModifiedDate":"2023-10-06"},{"lineNumber":378,"author":{"gitId":"raydenlim"},"content":"2. F.A.K.E.J.A.R.V.I.S. shows a list of persons","lastModifiedDate":"2023-10-23"},{"lineNumber":379,"author":{"gitId":"raydenlim"},"content":"3. User request a search query to find a student\u0027s profile","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"raydenlim"},"content":"4. F.A.K.E.J.A.R.V.I.S. returns matching results from the database","lastModifiedDate":"2023-10-23"},{"lineNumber":381,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":382,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"raydenlim"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":385,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":386,"author":{"gitId":"raydenlim"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-06"},{"lineNumber":387,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":388,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":389,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":390,"author":{"gitId":"raydenlim"},"content":"* 3a. No matching profiles.","lastModifiedDate":"2023-10-06"},{"lineNumber":391,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":392,"author":{"gitId":"raydenlim"},"content":" * 3a1. F.A.K.E.J.A.R.V.I.S. shows an error message.","lastModifiedDate":"2023-10-23"},{"lineNumber":393,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":394,"author":{"gitId":"raydenlim"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-06"},{"lineNumber":395,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":396,"author":{"gitId":"raydenlim"},"content":"**Use case: Filter Results**","lastModifiedDate":"2023-10-06"},{"lineNumber":397,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":398,"author":{"gitId":"raydenlim"},"content":"**MSS**","lastModifiedDate":"2023-10-06"},{"lineNumber":399,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":400,"author":{"gitId":"raydenlim"},"content":"1. User requests to list persons.","lastModifiedDate":"2023-10-06"},{"lineNumber":401,"author":{"gitId":"raydenlim"},"content":"2. F.A.K.E.J.A.R.V.I.S. shows a list of persons.","lastModifiedDate":"2023-10-23"},{"lineNumber":402,"author":{"gitId":"raydenlim"},"content":"3. User requests to apply filters to the results via attribute `FILTER_ATTRIBUTE`, or description `FILTER_DESCRIPTION`.","lastModifiedDate":"2023-10-06"},{"lineNumber":403,"author":{"gitId":"raydenlim"},"content":"4. F.A.K.E.J.A.R.V.I.S. shows the filter results.","lastModifiedDate":"2023-10-23"},{"lineNumber":404,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":405,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":406,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":407,"author":{"gitId":"raydenlim"},"content":"**Extensions**","lastModifiedDate":"2023-10-06"},{"lineNumber":408,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":409,"author":{"gitId":"raydenlim"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-06"},{"lineNumber":410,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":411,"author":{"gitId":"raydenlim"},"content":" Use case ends.","lastModifiedDate":"2023-10-06"},{"lineNumber":412,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":413,"author":{"gitId":"raydenlim"},"content":"* 3a. No filtered results.","lastModifiedDate":"2023-10-06"},{"lineNumber":414,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":415,"author":{"gitId":"raydenlim"},"content":" * 3a1. F.A.K.E.J.A.R.V.I.S. shows an error message.","lastModifiedDate":"2023-10-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":417,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-06"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":419,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"Respirayson"},"content":"4. System should respond within 2 seconds to ensure smooth and efficient user interactions.","lastModifiedDate":"2023-10-05"},{"lineNumber":427,"author":{"gitId":"Respirayson"},"content":"5. The system should be able to handle an increasing number of users and data without a significant decrease in performance.","lastModifiedDate":"2023-10-05"},{"lineNumber":428,"author":{"gitId":"Respirayson"},"content":"6. The system should be user-friendly, with a clean and intuitive interface.","lastModifiedDate":"2023-10-05"},{"lineNumber":429,"author":{"gitId":"Respirayson"},"content":"7. Regular automated backups of data should be performed, and there should be a clear disaster recovery plan in place.","lastModifiedDate":"2023-10-05"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":446,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":447,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Respirayson":37,"raydenlim":53,"Originalidk":21,"-":380}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"# F.A.K.E.J.A.R.V.I.S. User Guide","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" \u003cimg src\u003d\"images/fakejarvis.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"_Say goodbye to chaos and hello to an organized and efficient classroom experience._","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"F.A.K.E.J.A.R.V.I.S. is the **ultimate solution for CS1101S Avengers who manage a multitude of tutoring tasks.** This platform empowers you to efficiently track assignment gradings, monitor student participation, and seamlessly plan tutorials, consultations, and mastery checks. This is your one-stop solution to managing your time and students as a CS1101S Avenger!","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"1. Download the latest `fakejarvis.jar` from [here](https://github.com/AY2324S1-CS2103T-T15-1/tp/releases). _[Coming Soon]_","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your F.A.K.E.J.A.R.V.I.S..","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fakejarvis.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":"F.A.K.E.J.A.R.V.I.S. data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":"F.A.K.E.J.A.R.V.I.S. data are saved automatically as a JSON file `[JAR file location]/data/fakejarvis.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":"If your changes to the data file makes its format invalid, F.A.K.E.J.A.R.V.I.S. will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":"### 📝Adding a Task: `addtask`","lastModifiedDate":"2023-10-06"},{"lineNumber":184,"author":{"gitId":"Respirayson"},"content":"Adds a task to your tasklist","lastModifiedDate":"2023-10-03"},{"lineNumber":185,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":186,"author":{"gitId":"Respirayson"},"content":"Format: `addtask n/TASK_NAME d/DUE_DATE p/PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":187,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":188,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":"* TASK_NAME The name or description of the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":"* DUE_DATE The due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":"* PRIORITY The priority level of the task (e.g., high, medium, low).","lastModifiedDate":"2023-10-03"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"Respirayson"},"content":"* `addtask n/Prepare Lecture slides d/2023-09-30 p/high` creates a task to prepare lecture slides with a high priority due on September 30, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":195,"author":{"gitId":"Respirayson"},"content":"* `addtask n/Read Chapter 5` creates a task to read Chapter 5 without specifying a due date or priority.","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing Tasks: `viewtasks`","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":"Views the list of tasks","lastModifiedDate":"2023-10-03"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":"Format: `viewtasks d/DUE_DATE p/PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":"* DUE_DATE The due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":"* PRIORITY The priority level of the task (e.g., high, medium, low).","lastModifiedDate":"2023-10-03"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":"* `viewtasks` displays all tasks in the user\u0027s task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":"* `viewtasks p/high` displays only high-priority tasks.","lastModifiedDate":"2023-10-03"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":"* `viewtasks d/2023-09-30` displays tasks due on September 30, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":"### ✅Completing a Task: `completetask`","lastModifiedDate":"2023-10-06"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":"Marks a task as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":"Format: `completetask TASK_INDEX`","lastModifiedDate":"2023-10-03"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to mark as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":"* `completetask 1` marks the task with index 1 as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":"* `completetask 3` marks the task with index 1 as completed.","lastModifiedDate":"2023-10-03"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing a Task: `edittask`","lastModifiedDate":"2023-10-06"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":"Edits the details of a task","lastModifiedDate":"2023-10-03"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":"Format: `edittask TASK_INDEX n/NEW_TASK_NAME d/NEW_DUE_DATE p/NEW_PRIORITY`","lastModifiedDate":"2023-10-03"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":231,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to edit.","lastModifiedDate":"2023-10-03"},{"lineNumber":232,"author":{"gitId":"Respirayson"},"content":"* NEW_TASK_NAME The new name or description for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":233,"author":{"gitId":"Respirayson"},"content":"* NEW_DUE_DATE The new due date or deadline for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":234,"author":{"gitId":"Respirayson"},"content":"* NEW_PRIORITY The new priority level for the task.","lastModifiedDate":"2023-10-03"},{"lineNumber":235,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":236,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":237,"author":{"gitId":"Respirayson"},"content":"* `edittask 1 n/Updated TaskName` edits the name of the task with index 1.","lastModifiedDate":"2023-10-03"},{"lineNumber":238,"author":{"gitId":"Respirayson"},"content":"* `edittask 2 d/2023-10-15` updates the due date of the task with index 2 to October 15, 2023.","lastModifiedDate":"2023-10-03"},{"lineNumber":239,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":240,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a Task: `deletetask`","lastModifiedDate":"2023-10-06"},{"lineNumber":242,"author":{"gitId":"Respirayson"},"content":"Deletes a task from the tasklist","lastModifiedDate":"2023-10-03"},{"lineNumber":243,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":244,"author":{"gitId":"Respirayson"},"content":"Format: `deletetask TASK_INDEX`","lastModifiedDate":"2023-10-03"},{"lineNumber":245,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":246,"author":{"gitId":"Respirayson"},"content":"Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":247,"author":{"gitId":"Respirayson"},"content":"* TASK_INDEX The index of the task to delete.","lastModifiedDate":"2023-10-03"},{"lineNumber":248,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":249,"author":{"gitId":"Respirayson"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":250,"author":{"gitId":"Respirayson"},"content":"* `deletetask 3` deletes the task with index 3 from the task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":251,"author":{"gitId":"Respirayson"},"content":"* `deletetask 2` deletes the task with index 2 from the task list.","lastModifiedDate":"2023-10-03"},{"lineNumber":252,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"### 📆Taking attendance: `takeattendance`","lastModifiedDate":"2023-10-06"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":"Takes the attendance of a student","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"Format: `takeattendance n/STUDENT_NAME s/SESSION p/PRESENCE`","lastModifiedDate":"2023-10-06"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":"* SESSION - The session number.","lastModifiedDate":"2023-10-06"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"* PRESENCE - The attendance status of the student (e.g., present, absent).","lastModifiedDate":"2023-10-06"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":"* `takeattendance n/John Doe s/5 present` Marks John Doe as present on the 5th session.","lastModifiedDate":"2023-10-06"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":"* `takeattendance n/Foo Bar s/2 absent` Marks Foo Bar as absent on the 2nd session.","lastModifiedDate":"2023-10-06"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing attendance: viewattendance","lastModifiedDate":"2023-10-06"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":"Views the attendance list","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":"Format: `viewattendance n/STUDENT_NAME s/SESSION`","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student.","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":"* SESSION - The session number.","lastModifiedDate":"2023-10-06"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":"* `viewattendance` Displays the overall attendance across all students and sessions.","lastModifiedDate":"2023-10-06"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":"* `viewattendance n/Rayan` Displays Rayan’s overall attendance.","lastModifiedDate":"2023-10-06"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":"* `viewattendance s/3` Displays all students’ attendance for the 3rd session.","lastModifiedDate":"2023-10-06"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":"### 🔎Finding a Student: find","lastModifiedDate":"2023-10-06"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":"Finds a student’s profile","lastModifiedDate":"2023-10-06"},{"lineNumber":283,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":284,"author":{"gitId":"raydenlim"},"content":"Format: `find n/STUDENT_NAME`","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":287,"author":{"gitId":"raydenlim"},"content":"* STUDENT_NAME - The name of the student you want to find.","lastModifiedDate":"2023-10-06"},{"lineNumber":288,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":"* `find n/John Doe` Finds and displays the profile of students with the name “John Doe”.","lastModifiedDate":"2023-10-06"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":"* `find n/Jane Doe` Finds and displays the profile of students with the name “Jane Doe”.","lastModifiedDate":"2023-10-06"},{"lineNumber":292,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":293,"author":{"gitId":"raydenlim"},"content":"### 🥅Filtering results: filter","lastModifiedDate":"2023-10-06"},{"lineNumber":294,"author":{"gitId":"raydenlim"},"content":"Filters the results displayed on the dashboard","lastModifiedDate":"2023-10-06"},{"lineNumber":295,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"Format:","lastModifiedDate":"2023-10-06"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":"* `filter_add n/FILTER_ATTRIBUTE n/FILTER_DESCRIPTION`","lastModifiedDate":"2023-10-06"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":"* `filter_delete n/FILTER_ATTRIBUTE n/FILTER_DESCRIPTION`","lastModifiedDate":"2023-10-06"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":"Parameters:","lastModifiedDate":"2023-10-06"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":"* `FILTER_ATTRIBUTE` - The filter type filter_studentScores","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" * `filter_studentScores`","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" * `filter_studentGrades`","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":"* `FILTER_DESCRIPTION` - The conditions for the filter","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":"Examples:","lastModifiedDate":"2023-10-06"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":"* `filter_add n/filter_studentGrades n/A` Sets the dashboard to display students who have an “A” grade.","lastModifiedDate":"2023-10-06"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":"* `Filter_add n/filter_studentScores n/\u003e80` Sets the dashboard to show students with test scores above 80.","lastModifiedDate":"2023-10-06"},{"lineNumber":309,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":310,"author":{"gitId":"Originalidk"},"content":"### 📝Adding a grade to an assignment: `addgrade`","lastModifiedDate":"2023-10-13"},{"lineNumber":311,"author":{"gitId":"Originalidk"},"content":"Adds a grade to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":312,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"Originalidk"},"content":"Format: `addgrade INDEX as/ASSIGNMENT g/GRADE`","lastModifiedDate":"2023-10-19"},{"lineNumber":314,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":316,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":317,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":318,"author":{"gitId":"Originalidk"},"content":"* GRADE The grade of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":319,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":320,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":321,"author":{"gitId":"Originalidk"},"content":"* `addgrade 1 as/Functional Expressionism g/1300` adds a grade of 1300 to student 1\u0027s Functional Expressionism assignment.","lastModifiedDate":"2023-10-19"},{"lineNumber":322,"author":{"gitId":"Originalidk"},"content":"* `addgrade 2 as/Rune Reading g/600` adds a grade of 600 to student 2\u0027s Rune Reading assignment.","lastModifiedDate":"2023-10-19"},{"lineNumber":323,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":324,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing an assignment grade: `viewgrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":326,"author":{"gitId":"Originalidk"},"content":"Shows a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":327,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":328,"author":{"gitId":"Originalidk"},"content":"Format: `viewgrade INDEX as/ASSIGNMENT`","lastModifiedDate":"2023-10-19"},{"lineNumber":329,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":330,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":331,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":332,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":334,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":335,"author":{"gitId":"Originalidk"},"content":"* `viewgrade 1 as/Functional Expressionism` shows student 1\u0027s Functional Expressionism grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":336,"author":{"gitId":"Originalidk"},"content":"* `viewgrade 2 as/Rune Reading` shows student 2\u0027s Rune Reading grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":337,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":338,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":339,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing an assignment grade: `editgrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":340,"author":{"gitId":"Originalidk"},"content":"Edits a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":341,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":342,"author":{"gitId":"Originalidk"},"content":"Format: `editgrade INDEX as/ASSIGNMENT g/GRADE`","lastModifiedDate":"2023-10-19"},{"lineNumber":343,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":344,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":346,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"Originalidk"},"content":"* GRADE The score of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":348,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":349,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"Originalidk"},"content":"* `editgrade 1 as/Functional Expressionism g/1200` edits the grade of student 1\u0027s Functional Expressionism assignment to 1200.","lastModifiedDate":"2023-10-19"},{"lineNumber":351,"author":{"gitId":"Originalidk"},"content":"* `editgrade 2 as/Rune Reading g/1000` edits the grade of student 2\u0027s Rune Reading assignment to 1000.","lastModifiedDate":"2023-10-19"},{"lineNumber":352,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":354,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting an assignment grade: `deletegrade`","lastModifiedDate":"2023-10-06"},{"lineNumber":355,"author":{"gitId":"Originalidk"},"content":"Deletes a student’s assignment grade.","lastModifiedDate":"2023-10-13"},{"lineNumber":356,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":357,"author":{"gitId":"Originalidk"},"content":"Format: `deletegrade INDEX as/ASSIGNMENT`","lastModifiedDate":"2023-10-19"},{"lineNumber":358,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":"* INDEX The index of the student.","lastModifiedDate":"2023-10-19"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"Originalidk"},"content":"* `deletegrade 1 as/Functional Expressionism` deletes student 1\u0027s Functional Expressionism grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":365,"author":{"gitId":"Originalidk"},"content":"* `deletegrade 2 as/Rune Reading` deletes student 2\u0027s Rune Reading grade.","lastModifiedDate":"2023-10-19"},{"lineNumber":366,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":367,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":368,"author":{"gitId":"Originalidk"},"content":"### 📝Adding a comment to an assignment: `addcomment`","lastModifiedDate":"2023-10-13"},{"lineNumber":369,"author":{"gitId":"Originalidk"},"content":"Adds a comment to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":370,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":371,"author":{"gitId":"Originalidk"},"content":"Format: `addcomment n/STUDENT_NAME a/ASSIGNMENT c/COMMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":372,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":373,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":374,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":375,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":376,"author":{"gitId":"Originalidk"},"content":"* COMMENT The comment.","lastModifiedDate":"2023-10-05"},{"lineNumber":377,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":378,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":379,"author":{"gitId":"Originalidk"},"content":"* `addcomment n/Rayson a/Functional Expressionism c/Excellent` adds the comment “Excellent” on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":380,"author":{"gitId":"Originalidk"},"content":"* `addcomment n/Wesley a/Rune Reading c/Not bad` adds the comment “Not bad” on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":381,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":382,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing a comment: `viewcomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":384,"author":{"gitId":"Originalidk"},"content":"Shows the comment tagged to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":385,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":386,"author":{"gitId":"Originalidk"},"content":"Format: `viewcomment n/STUDENT_NAME a/ASSIGNMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":387,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":388,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":389,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":390,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":391,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":392,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":393,"author":{"gitId":"Originalidk"},"content":"* `viewcomment n/Rayson a/Functional Expressionism` shows the comment on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":394,"author":{"gitId":"Originalidk"},"content":"* `viewcomment n/Wesley a/Rune Reading` shows the comment on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":395,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":396,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":397,"author":{"gitId":"raydenlim"},"content":"### 🛠️Editing a comment: `editcomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":398,"author":{"gitId":"Originalidk"},"content":"Edits the comment on a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":399,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":400,"author":{"gitId":"Originalidk"},"content":"Format: `editcomment n/STUDENT_NAME a/ASSIGNMENT c/COMMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":401,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":402,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":403,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":404,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":405,"author":{"gitId":"Originalidk"},"content":"* COMMENT The new comment.","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":407,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"Originalidk"},"content":"* `editcomment n/Rayson a/Functional Expressionism c/Decent` changes the comment on Rayson’s Functional Expressionism assignment to “Decent”.","lastModifiedDate":"2023-10-05"},{"lineNumber":409,"author":{"gitId":"Originalidk"},"content":"* `editcomment n/Wesley a/Rune Reading c/Great` changes the comment on Wesley’s Rune Reading assignment to “Great”.","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":411,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":412,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a comment: `deletecomment`","lastModifiedDate":"2023-10-06"},{"lineNumber":413,"author":{"gitId":"Originalidk"},"content":"Deletes the comment tagged to a student’s assignment.","lastModifiedDate":"2023-10-13"},{"lineNumber":414,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":415,"author":{"gitId":"Originalidk"},"content":"Format: `deletecomment n/STUDENT_NAME a/ASSIGNMENT`","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":417,"author":{"gitId":"Originalidk"},"content":"Parameters:","lastModifiedDate":"2023-10-05"},{"lineNumber":418,"author":{"gitId":"Originalidk"},"content":"* STUDENT_NAME The name of the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":419,"author":{"gitId":"Originalidk"},"content":"* ASSIGNMENT The name of the assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":420,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":421,"author":{"gitId":"Originalidk"},"content":"Examples:","lastModifiedDate":"2023-10-05"},{"lineNumber":422,"author":{"gitId":"Originalidk"},"content":"* `deletecomment n/Rayson a/Functional Expressionism` deletes the comment on Rayson’s Functional Expressionism assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":423,"author":{"gitId":"Originalidk"},"content":"* `deletecomment n/Wesley a/Rune Reading` deletes the comment on Wesley’s Rune Reading assignment.","lastModifiedDate":"2023-10-05"},{"lineNumber":424,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":425,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":426,"author":{"gitId":"raydenlim"},"content":"### 📆Creating a Consult: `createconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":427,"author":{"gitId":"wesho1107"},"content":"Creates a consultation into upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":428,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":429,"author":{"gitId":"wesho1107"},"content":"Format: `addconsult d/DATE t/TIME n/STUDENT_NAME n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":430,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":431,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":432,"author":{"gitId":"wesho1107"},"content":"* DATE The date of consultation","lastModifiedDate":"2023-10-04"},{"lineNumber":433,"author":{"gitId":"wesho1107"},"content":"* TIME The time of consultation","lastModifiedDate":"2023-10-04"},{"lineNumber":434,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of the student(s)","lastModifiedDate":"2023-10-04"},{"lineNumber":435,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":436,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":437,"author":{"gitId":"wesho1107"},"content":"* `addconsult d/2023-10-30 t/12:30 n/John Doe` creates a consultation for John Doe on 2023-10-30 12:30.","lastModifiedDate":"2023-10-04"},{"lineNumber":438,"author":{"gitId":"wesho1107"},"content":"* `addconsult d/2023-09-30 t/15:30 n/John Doe n/Foo Bar n/Rayson n/Wesley` creates a consultation for John Doe, Foo Bar","lastModifiedDate":"2023-10-04"},{"lineNumber":439,"author":{"gitId":"wesho1107"},"content":" , Rayson and Wesley on 2023-09-30 15:30.","lastModifiedDate":"2023-10-04"},{"lineNumber":440,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":441,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":442,"author":{"gitId":"raydenlim"},"content":"### 👀Showing list of consultations: `showconsults`","lastModifiedDate":"2023-10-06"},{"lineNumber":443,"author":{"gitId":"wesho1107"},"content":"Shows the list of upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":444,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":445,"author":{"gitId":"wesho1107"},"content":"Format: `showconsults`","lastModifiedDate":"2023-10-04"},{"lineNumber":446,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":447,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":448,"author":{"gitId":"wesho1107"},"content":"* `showconsults` displays a list of upcoming consultations","lastModifiedDate":"2023-10-04"},{"lineNumber":449,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":450,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":451,"author":{"gitId":"raydenlim"},"content":"### 👀Viewing details of a consultation: `viewconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":452,"author":{"gitId":"wesho1107"},"content":"Shows the details of a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":453,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":454,"author":{"gitId":"wesho1107"},"content":"Format: `viewconsult INDEX`","lastModifiedDate":"2023-10-04"},{"lineNumber":455,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":456,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":457,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":458,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":459,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":460,"author":{"gitId":"wesho1107"},"content":"* `viewconsult 1` shows the details of the consultation (if there is a consult scheduled).","lastModifiedDate":"2023-10-04"},{"lineNumber":461,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003e2023-09-30 15:30","lastModifiedDate":"2023-10-04"},{"lineNumber":462,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eJohn Doe","lastModifiedDate":"2023-10-04"},{"lineNumber":463,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eFoo Bar","lastModifiedDate":"2023-10-04"},{"lineNumber":464,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eRayson","lastModifiedDate":"2023-10-04"},{"lineNumber":465,"author":{"gitId":"wesho1107"},"content":" \u003cbr\u003eWesley","lastModifiedDate":"2023-10-04"},{"lineNumber":466,"author":{"gitId":"wesho1107"},"content":"* `viewconsult -1`shows an error message “Consultation not found” (if there is no consult scheduled).","lastModifiedDate":"2023-10-04"},{"lineNumber":467,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":468,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":469,"author":{"gitId":"raydenlim"},"content":"### 🛠️Adding students to a consultation: `addtoconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":470,"author":{"gitId":"wesho1107"},"content":"Adds student(s) into a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":471,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":472,"author":{"gitId":"wesho1107"},"content":"Format: `addtoconsult INDEX n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":473,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":474,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":475,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":476,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of student to be added into the consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":477,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":478,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":479,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult 2 n/Foo Bar`.","lastModifiedDate":"2023-10-04"},{"lineNumber":480,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult 1 n/Rayson n/Ryan Pang`.","lastModifiedDate":"2023-10-04"},{"lineNumber":481,"author":{"gitId":"wesho1107"},"content":"* `addtoconsult -1 n/Foo Bar`shows an error message “Consultation not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":482,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":483,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":484,"author":{"gitId":"raydenlim"},"content":"### ❌Remove students from a consultation: `removefromconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":485,"author":{"gitId":"wesho1107"},"content":"Removes student(s) from a consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":486,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":487,"author":{"gitId":"wesho1107"},"content":"Format: `removefromconsult INDEX n/STUDENT_NAME …`","lastModifiedDate":"2023-10-04"},{"lineNumber":488,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":489,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":490,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":491,"author":{"gitId":"wesho1107"},"content":"* STUDENT_NAME The name of student to be added into the consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":492,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":493,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":494,"author":{"gitId":"wesho1107"},"content":"* `removefromconsult 2 n/Foo Bar`.","lastModifiedDate":"2023-10-04"},{"lineNumber":495,"author":{"gitId":"wesho1107"},"content":"* `removefromconsult 1 n/NOTINCONSULT` shows an error message “Student not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":496,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":497,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":498,"author":{"gitId":"raydenlim"},"content":"### ❌Deleting a consultation: `deleteconsult`","lastModifiedDate":"2023-10-06"},{"lineNumber":499,"author":{"gitId":"wesho1107"},"content":"Deletes the consultation specified by the index.","lastModifiedDate":"2023-10-04"},{"lineNumber":500,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":501,"author":{"gitId":"wesho1107"},"content":"Format: `deleteconsult INDEX`","lastModifiedDate":"2023-10-04"},{"lineNumber":502,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":503,"author":{"gitId":"wesho1107"},"content":"Parameters:","lastModifiedDate":"2023-10-04"},{"lineNumber":504,"author":{"gitId":"wesho1107"},"content":"* INDEX The index of the consultation in the upcoming consultations.","lastModifiedDate":"2023-10-04"},{"lineNumber":505,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":506,"author":{"gitId":"wesho1107"},"content":"Examples:","lastModifiedDate":"2023-10-04"},{"lineNumber":507,"author":{"gitId":"wesho1107"},"content":"* `deleteconsult 1` deletes the first consultation.","lastModifiedDate":"2023-10-04"},{"lineNumber":508,"author":{"gitId":"wesho1107"},"content":"* `deleteconsult -1` shows an error message “Consultation not found”.","lastModifiedDate":"2023-10-04"},{"lineNumber":509,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":510,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":511,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"raydenlim"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous F.A.K.E.J.A.R.V.I.S. home folder.","lastModifiedDate":"2023-10-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":522,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":524,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":526,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":530,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Respirayson":77,"raydenlim":82,"Originalidk":110,"-":191,"wesho1107":76}},{"path":"docs/team/ldinghan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"layout: default.md","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"title: \"Ding Han\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"ldinghan":32}},{"path":"docs/team/originalidk.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"layout: default.md","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"title: \"Ryan Pang\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"Originalidk":32}},{"path":"docs/team/raydenlim.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"layout: default.md","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"title: \"Jian Song (rayden)\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"### Name: Rayden","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"**Bio:** \u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"* I am interested in cybersecurity","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"* I believe that laughter is the best medicine","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"### **Joke of the day**\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"**QNS :** Why did the programmer constantly run into bugs? \u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"**ANS :** Because he used light mode, and bugs are attracted to the light.","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"### Project: FAKEJARVIS","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"![Logo](images/fakejarvis.png)","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"FAKEJARVIS is a brownfield project built on Address Book 3 (AB3), with the intention to help CS1101S Avengers manage their Teaching Assistant (TA) duties.","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"* **New Feature 1**:","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Highlights:","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" * Credits:","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"* **New Feature 2**:","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"* **Code contributed**: [RepoSense link](https://tinyurl.com/CS2103T15raydenlim)","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"* **Project management**:","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * User Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"* **Community**:","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"* **Tools**:","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"raydenlim":44}},{"path":"docs/team/respirayson.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"---","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"layout: default.md","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"title: \"Rayson Yeap\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"---","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"### Project: FAKEJARVIS","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"FAKEJARVIS is a project to help CS1101S Avengers manage their time and job more effectively.","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"* **New Feature**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"* **New Feature**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"* **Code contributed**: [RepoSense](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003drespirayson\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * User Guide: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":32}},{"path":"docs/team/wesho1107.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"layout: default.md","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"title: \"Ho Jia Cheng\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"### Project: F.A.K.E.J.A.R.V.I.S.","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"F.A.K.E.J.A.R.V.I.S. is a project to help CS1101S Avengers manage their time and responsibilities more effectively.","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"Below are my contributions to the project:","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"* **New Features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"* **Code contributed**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"* **Project management**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"* **Enhancements to existing features**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * User Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * Developer Guide: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"* **Review/mentoring contributions**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"* **Tools**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"* **Contributions beyond the project team**: To be added","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"wesho1107":32}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" \"people\": [ {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Originalidk":1,"-":114}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":211,"author":{"gitId":"Originalidk"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ people.\u003cbr\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":212,"author":{"gitId":"Originalidk"},"content":" FYI, The \u0027filtered list\u0027 is the list of people resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the people so that the user can see the edited person along with all other people. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":213,"author":{"gitId":"Originalidk"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of people is being tracked.","lastModifiedDate":"2023-10-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"Originalidk"},"content":" people.addAll(","lastModifiedDate":"2023-10-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Originalidk":4,"-":307}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.ConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.GradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonGradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.JsonSessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.SessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" SessionListStorage sessionListStorage \u003d new JsonSessionListStorage(userPrefs.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" ConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(userPrefs","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" .getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" GradedTestListStorage gradedTestListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(userPrefs.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, taskListStorage,","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Using task list file : \" + storage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Using consultation list file : \" + storage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Using session list file : \" + storage.getSessionListFilePath());","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e taskListOptional;","lastModifiedDate":"2023-09-28"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList initialTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e gradedTestListOptional;","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList initialGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyConsultationList\u003e consultationListOptional;","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList initialConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e sessionListOptional;","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList initialSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-09-28"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath()","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" + \" populated with a sample TaskList.\");","lastModifiedDate":"2023-09-28"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" initialTaskList \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" + \" Will be starting with an empty TaskList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" initialTaskList \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" gradedTestListOptional \u003d storage.readGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" if (!gradedTestListOptional.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" + \" populated with a sample GradedTest.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList \u003d gradedTestListOptional.orElseGet(SampleDataUtil::getSampleGradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" consultationListOptional \u003d storage.readConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" if (!consultationListOptional.isPresent()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Creating a new data file \" + storage.getConsultationListFilePath()","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" + \" populated with a sample ConsultationList.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" initialConsultationList \u003d consultationListOptional.orElseGet(SampleDataUtil::getSampleConsultationList);","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" logger.warning(\"Data file at \" + storage.getConsultationListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" + \" Will be starting with an empty ConsultationList.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" initialConsultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" sessionListOptional \u003d storage.readSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" if (!sessionListOptional.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Creating a new data file \" + storage.getSessionListFilePath()","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":" + \" populated with a sample SessionList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" initialSessionList \u003d sessionListOptional.orElseGet(SampleDataUtil::getSampleSessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" logger.warning(\"Data file at \" + storage.getSessionListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":" + \" Will be starting with an empty SessionList.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" initialSessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" return new ModelManager(initialData, userPrefs, initialTaskList, initialSessionList, initialConsultationList,","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" initialGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":206,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":211,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":216,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":218,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":223,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":224,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":225,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":226,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":227,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":237,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":238,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":239,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":241,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":242,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":243,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":245,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":247,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":248,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":249,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":250,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":255,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":256,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":258,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":264,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":274,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":275,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":276,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":22,"Respirayson":15,"raydenlim":55,"-":187}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" /** Returns an unmodifiable view of the filtered list of consultations */","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cConsultation\u003e getFilteredConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" /** Returns an unmodifiable view of the filtered list of sessions */","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":4,"Respirayson":4,"-":50,"wesho1107":5}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" storage.saveConsultationList(model.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" return model.getFilteredConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" return model.getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ldinghan":6,"Respirayson":7,"-":88,"wesho1107":7}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_DATE_TIME \u003d \"The date or time provided is invalid\";","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_ASSIGNMENT_GRADED \u003d \"The assignment has already been graded\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_ASSIGNMENT_UNGRADED \u003d \"The assignment has not been graded\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" builder.append(\"; Graded Tests: \");","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" person.getGradedTest().forEach(gradedTest -\u003e builder.append(person.getGradedTest()).append(\", \"));","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code consultation} for display to the user.","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public static String format(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" builder.append(\"; Date: \")","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" .append(consultation.getDate())","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" .append(\"; Time: \")","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" .append(consultation.getTime())","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" .append(\"; Students: \");","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" consultation.getStudents().forEach(student -\u003e builder.append(student.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" return builder.toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" * Formats the {@code session} for display to the user.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" public static String format(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" builder.append(\"Session: \")","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" .append(session.getSessionNumber())","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" .append(\";\");","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" session.getStudents().forEach(builder::append);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" return builder.toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public static String format(Task task) {","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" return task.getName()","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" + \"; Description: \"","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" + task.getDescription()","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" + \"; isDone: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" + task.getIsDone()","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" + \"; Priority: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" + task.getPriority();","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Formats the {@code gradedTest} for display to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public static String format(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" builder.append(\"Graded Test:\")","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" .append(\"; Reading Assessment 1: \").append(gradedTest.getRA1())","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" .append(\"; Reading Assessment 2: \").append(gradedTest.getRA2())","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" .append(\"; MidTerms: \").append(gradedTest.getMidTerms())","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" .append(\"; Final: \").append(gradedTest.getFinals())","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" .append(\"; Practical Exam: \").append(gradedTest.getPracticalExam());","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" return builder.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":13,"Respirayson":14,"raydenlim":33,"Originalidk":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" + PREFIX_TAG + \"owesMoney\"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" + PREFIX_GRADED_TEST + \"Reading Assessment 1: 0\" + \"Reading Assessment 2: 0\"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms: 0\" + \"Finals: 0\" + \"Practical Exam: 0\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"raydenlim":4,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" * Adds a grade to a person\u0027s assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static final String COMMAND_WORD \u003d \"addgrade\";","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a grade to a person’s assignment identified \"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" + PREFIX_ASSIGNMENT + \"ASSIGNMENT \"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" + PREFIX_GRADE + \"GRADE \";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Added grade to assignment: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_DUPLICATE_ASSIGNMENT \u003d \"This assignment has already been graded\";","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" private final AssignmentName assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" private final String gradeString;","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" private final Index index;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" * Creates an AddGradeCommand to add the specified grade to a person\u0027s assignment","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" public AddGradeCommand(Index index, AssignmentName assignmentName, String grade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" requireNonNull(assignmentName);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" this.gradeString \u003d grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentName.isValidName(this.assignmentName.toString())) {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" throw new CommandException(AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" Assignment assignmentToGrade \u003d personToEdit.getAssignment(this.assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" Grade newGrade \u003d new Grade(this.gradeString, assignmentToGrade.maxGrade());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" Person editedPerson \u003d createGradedPerson(personToEdit, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, this.assignmentName));","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" * Creates a new Person with the newly graded assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" * @param reference The person to be graded.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" * @param newGrade The new grade to be given to the person\u0027s assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" * @return New person with a graded assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" public Person createGradedPerson(Person reference, Grade newGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" Name name \u003d reference.getName();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" Phone phone \u003d reference.getPhone();","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" Email email \u003d reference.getEmail();","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" Address address \u003d reference.getAddress();","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" Set\u003cTag\u003e tags \u003d reference.getTags();","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTest \u003d reference.getGradedTest();","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" AssignmentMap updatedAssignmentMap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" reference.getAllAssignments().createUpdatedMap(this.assignmentName, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" return new Person(name, phone, email, address, tags, updatedAssignmentMap, gradedTest);","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AddGradeCommand)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand otherAddGradeCommand \u003d (AddGradeCommand) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" boolean sameAssignmentName \u003d this.assignmentName.equals(otherAddGradeCommand.assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" boolean sameGrade \u003d this.gradeString.equals(otherAddGradeCommand.gradeString);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":" boolean samePersonIndex \u003d this.index.equals(otherAddGradeCommand.index);","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"Originalidk"},"content":" return sameAssignmentName \u0026\u0026 sameGrade \u0026\u0026 samePersonIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":3,"Originalidk":118}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" + \": Adds a new task with the specified description.\\n\"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_NAME + \"NAME \"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"[\" + PREFIX_TASK_DESCRIPTION + \"DESCRIPTION]\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" + \"[\" + PREFIX_TASK_PRIORITY + \"PRIORITY]\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_NAME + \"Do laundry \"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_DESCRIPTION + \"Wash the clothes and pants in basket\"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_PRIORITY + \"medium\";","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Task has been added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" private final Task task;","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(task);","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (model.hasTask(task)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" model.addTask(task);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(task)));","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" AddTaskCommand e \u003d (AddTaskCommand) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" return task.equals(e.task);","lastModifiedDate":"2023-09-27"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":74}},{"path":"src/main/java/seedu/address/logic/commands/CompleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as completed.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"completetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \": Marks the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Marked Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public CompleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" true, taskToMark.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof CompleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand otherMarkCommand \u003d (CompleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherMarkCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":76}},{"path":"src/main/java/seedu/address/logic/commands/CreateConsultCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" * Creates a consultation to the consultation list.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public static final String COMMAND_WORD \u003d \"createconsult\";","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a consultation with the student(s). \"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" + PREFIX_DATE + \"DATE \"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" + PREFIX_TIME + \"TIME \"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" + \"[\" + PREFIX_NAME + \"NAME]...\\n\"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" + PREFIX_DATE + \"10/10/2023 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" + PREFIX_TIME + \"15:00 \"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" + PREFIX_NAME + \"Foo Bar\";","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New consultation added: %1$s\";","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" private final LocalDate date;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" private final LocalTime time;","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" private Set\u003cName\u003e names;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" private Consultation consultationToAdd;","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" * Creates an CreateConsultCommand to with the specified {@code date, time, names}","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public CreateConsultCommand(LocalDate date, LocalTime time, Set\u003cName\u003e names) {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(date, time, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" this.names \u003d names;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" Set\u003cPerson\u003e studentsToAdd \u003d names.stream().map(model::getMatchingStudentName).collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" this.consultationToAdd \u003d new Consultation(date, time, studentsToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" model.addConsultation(this.consultationToAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(this.consultationToAdd)));","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" // instanceof handles null case","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof CreateConsultCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" CreateConsultCommand otherCreateConsultCommand \u003d (CreateConsultCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" return this.date.equals(otherCreateConsultCommand.date)","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 this.time.equals(otherCreateConsultCommand.time)","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 this.names.equals(otherCreateConsultCommand.names);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" .add(\"toAdd\", consultationToAdd)","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":86}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Deletes a task identified using it\u0027s displayed index from the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, Messages.format(taskToDelete)));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" + \"[\" + PREFIX_GRADED_TEST + \"GRADED TEST]...\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e updatedGrades \u003d editPersonDescriptor.getGradedTests().orElse(personToEdit.getGradedTest());","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedGrades);","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment ra1;","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment ra2;","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" private MidTerms midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" private Finals finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" private PracticalExam pe;","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" private Set\u003cGradedTest\u003e gradedTests;","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" setGradedTest(toCopy.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" public void setReadingAssessment1(ReadingAssessment ra1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":" this.ra1 \u003d ra1;","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" public void setReadingAssessment2(ReadingAssessment ra2) {","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" this.ra2 \u003d ra2;","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" public void setMidTerms(MidTerms midTerms) {","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" public void setFinals(Finals finals) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" public void setPracticalExam(PracticalExam pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" this.pe \u003d pe;","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" * Sets {@code gradedTests} to this object\u0027s {@code gradedTests}.","lastModifiedDate":"2023-10-13"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" * A defensive copy of {@code gradedTests} is used internally.","lastModifiedDate":"2023-10-13"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" this.gradedTests \u003d (gradedTests !\u003d null) ? new HashSet\u003c\u003e(gradedTests) : null;","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable gradedTest set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-13"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-13"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" * Returns {@code Optional#empty()} if {@code gradedTest} is null.","lastModifiedDate":"2023-10-13"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cSet\u003cGradedTest\u003e\u003e getGradedTests() {","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" return (gradedTests !\u003d null) ? Optional.of(Collections.unmodifiableSet(gradedTests)) : Optional.empty();","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":277,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2023-10-13"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 Objects.equals(gradedTests, otherEditPersonDescriptor.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-13"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"raydenlim":56,"-":239}},{"path":"src/main/java/seedu/address/logic/commands/IncompleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as incomplete.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public static final String COMMAND_WORD \u003d \"incompletetask\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" + \": Unmarks the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Unmarked Task: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public IncompleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" false, taskToMark.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof IncompleteTaskCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand otherMarkCommand \u003d (IncompleteTaskCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" return targetIndex.equals(otherMarkCommand.targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":76}},{"path":"src/main/java/seedu/address/logic/commands/session/CreateSessionCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.commands.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * Command to create a session with the specified student(s).","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommand extends Command {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public static final String COMMAND_WORD \u003d \"createsession\";","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a session with the student(s). \"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" + PREFIX_SESSION + \"SESSION_NUMBER \"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" + \"[\" + PREFIX_NAME + \"NAME]...\\n\"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" + PREFIX_NAME + \"Foo Bar\";","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New session added: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" private Name name;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" private Set\u003cName\u003e names;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" private Session sessionToAdd;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Creates a new CreateSessionCommand with a single student to be added to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param name The name of the student to add to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand(SessionNumber sessionNumber, Name name) {","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, name);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Creates a new CreateSessionCommand with multiple students to be added to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param names A set of names of the students to add to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand(SessionNumber sessionNumber, Set\u003cName\u003e names) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" this.names \u003d names;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" * Executes the CreateSessionCommand to create a new session in the model.","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" * @param model The model to execute the command on.","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @return A CommandResult containing the success message.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * @throws CommandException If an error occurs during execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" if (name !\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" // Get the student to add to the session","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" Person studentToAdd \u003d model.getMatchingStudentName(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" // Create the session to add","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber, studentToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" if (names !\u003d null \u0026\u0026 !names.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" SessionStudents studentsToAdd \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" for (Name name : names) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" Person studentToAdd \u003d model.getMatchingStudentName(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" studentsToAdd.add(studentToAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" this.sessionToAdd \u003d new Session(sessionNumber, studentsToAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" // Add the session to the model","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" model.addSession(this.sessionToAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" // Return a success message","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(this.sessionToAdd)));","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" * Checks if this CreateSessionCommand is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof CreateSessionCommand)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand otherCreateSessionCommand \u003d (CreateSessionCommand) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" if (names !\u003d null \u0026\u0026 otherCreateSessionCommand.names !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" // Compare when both \u0027names\u0027 are not null","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" return this.names.equals(otherCreateSessionCommand.names)","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 this.sessionNumber.equals(otherCreateSessionCommand.sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" } else if (names \u003d\u003d null \u0026\u0026 otherCreateSessionCommand.names \u003d\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" // Compare when both \u0027names\u0027 are null","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" return this.name \u003d\u003d null ? otherCreateSessionCommand.name \u003d\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" : this.name.equals(otherCreateSessionCommand.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 this.sessionNumber.equals(otherCreateSessionCommand.sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" // \u0027names\u0027 is null in one of the objects","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the CreateSessionCommand.","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the command.","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" .add(\"toCreate\", sessionToAdd)","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" .toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":148}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e sessionList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTestList \u003d ParserUtil.parseGradedTests(argMultimap.getAllValues(PREFIX_GRADED_TEST));","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, gradedTestList);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ldinghan":3,"raydenlim":6,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" * Parses the given {@code String} of arguments in the context of the AddGradeCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * and returns an AddGradeCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_ASSIGNMENT, PREFIX_GRADE);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_ASSIGNMENT, PREFIX_GRADE)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" Index index;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_ASSIGNMENT, PREFIX_GRADE);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" String actualGrade \u003d argMultimap.getValue(PREFIX_GRADE).get();","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" return new AddGradeCommand(index, assignmentName, actualGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":54}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TASK_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TASK_NAME)","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TASK_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_TASK_NAME).get());","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" TaskDescription taskDescription \u003d ParserUtil.parseTaskDescription(argMultimap","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" .getValue(PREFIX_TASK_DESCRIPTION).orElse(\"\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" TaskPriority priority \u003d ParserUtil.parseTaskPriority(argMultimap","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" .getValue(PREFIX_TASK_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Task(name, taskDescription, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":56}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" // TASKS","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-09-27"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" case CompleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" return new CompleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" case IncompleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" return new IncompleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" case CreateConsultCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" return new CreateConsultCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" case CreateSessionCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" return new CreateSessionCommandParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":4,"Respirayson":17,"raydenlim":5,"Originalidk":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_GRADED_TEST \u003d new Prefix(\"gt/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_READING_ASSESSMENT \u003d new Prefix(\"gt/ra/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_MIDTERMS \u003d new Prefix(\"gt/m/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_FINALS \u003d new Prefix(\"gt/f/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_PRACTICAL_EXAM \u003d new Prefix(\"gt/pe/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"as/\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public static final Prefix PREFIX_GRADE \u003d new Prefix(\"g/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public static final Prefix PREFIX_TIME \u003d new Prefix(\"tt/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" public static final Prefix PREFIX_SESSION \u003d new Prefix(\"s/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_NAME \u003d new Prefix(\"tn/\");","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"td/\");","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public static final Prefix PREFIX_TASK_PRIORITY \u003d new Prefix(\"tp/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ldinghan":1,"Respirayson":3,"raydenlim":7,"Originalidk":2,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/CompleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new CompleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandParser implements Parser\u003cCompleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the CompleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a CompleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public CompleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new CompleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CompleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/CreateConsultCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" * Parses input arguments and creates a new CreateConsultationCommand object","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultCommandParser implements Parser\u003cCreateConsultCommand\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * Parses the given `args` string and returns a CreateConsultCommand object if the input is valid.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" * @return A CreateConsultCommand object.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * @throws ParseException If the input arguments are not in the correct format or if parsing fails.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" public CreateConsultCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_TIME, PREFIX_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_DATE, PREFIX_TIME, PREFIX_NAME)","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateConsultCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_DATE, PREFIX_TIME);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" LocalDate date \u003d ParserUtil.parseDate(argMultimap.getValue(PREFIX_DATE).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" LocalTime time \u003d ParserUtil.parseTime(argMultimap.getValue(PREFIX_TIME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" Set\u003cName\u003e names \u003d ParserUtil.parseNames(argMultimap.getAllValues(PREFIX_NAME));","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" return new CreateConsultCommand(date, time, names);","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Checks if the specified prefixes are present in the given ArgumentMultimap.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * @param argumentMultimap The ArgumentMultimap to check for prefix presence.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" * @param prefixes The prefixes to be checked.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * @return `true` if all specified prefixes are present, `false` otherwise.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":57}},{"path":"src/main/java/seedu/address/logic/parser/CreateSessionCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Parses input arguments and creates a new CreateSessionCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandParser implements Parser\u003cCreateSessionCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * Parses the given `args` string and returns a CreateSessionCommand object if the input is valid.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" * @return A CreateSessionCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * @throws ParseException If the input arguments are not in the correct format or if parsing fails.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public CreateSessionCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SESSION, PREFIX_NAME);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_SESSION, PREFIX_NAME)","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateSessionCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SESSION);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d ParserUtil.parseSessionNumber(argMultimap.getValue(PREFIX_SESSION).get());","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" return new CreateSessionCommand(sessionNumber, name);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Checks if the specified prefixes are present in the given ArgumentMultimap.","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param argumentMultimap The ArgumentMultimap to check for prefix presence.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * @param prefixes The prefixes to be checked.","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" * @return `true` if all specified prefixes are present, `false` otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":53}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a DeleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" parseGradedTestForEdit(argMultimap.getAllValues(PREFIX_GRADED_TEST))","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" .ifPresent(editPersonDescriptor::setGradedTest);","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" * Parses {@code Collection\u003cString\u003e gradedTest} into a {@code Set\u003cGradedTest\u003e}","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" * if {@code gradedTestIndv} is non-empty.","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" * If {@code gradedTestIndv} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" * {@code Set\u003cGradedTest\u003e} containing zero gradedTestIndv.","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" private Optional\u003cSet\u003cGradedTest\u003e\u003e parseGradedTestForEdit(Collection\u003cString\u003e gradedTestIndv) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" assert gradedTestIndv !\u003d null;","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" if (gradedTestIndv.isEmpty()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" Collection\u003cString\u003e gradedTestIndvSet \u003d gradedTestIndv.size() \u003d\u003d 1","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTestIndv.contains(\"\") ? Collections.emptySet() : gradedTestIndv;","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" return Optional.of(ParserUtil.parseGradedTests(gradedTestIndvSet));","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"raydenlim":23,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/IncompleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Parses input arguments and creates a new IncompleteTaskCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandParser implements Parser\u003cIncompleteTaskCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Parses the given {@code String} of arguments in the context of the IncompleteTaskCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * and returns a IncompleteTaskCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public IncompleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" return new IncompleteTaskCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, IncompleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_DATE \u003d \"Date is needs to be in the format dd/MM/yyyy.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_INVALID_TIME \u003d \"Time is needs to be in the format HH:mm.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Parses {@code Collection\u003cString\u003e names} into a {@code Set\u003cName\u003e}.","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public static Set\u003cName\u003e parseNames(Collection\u003cString\u003e names) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" requireNonNull(names);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" final Set\u003cName\u003e nameSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" for (String studentName : names) {","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" if (!Name.isValidName(studentName)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" nameSet.add(parseName(studentName));","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" return nameSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" * Parses {@code String date} into an {@code LocalDate} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" * trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" public static LocalDate parseDate(String date) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" requireNonNull(date);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" return LocalDate.parse(trimmedDate, formatter);","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MESSAGE_INVALID_DATE);","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" * Parses {@code String time} into an {@code LocalTime} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" * trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" public static LocalTime parseTime(String time) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" requireNonNull(time);","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" String trimmedTime \u003d time.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" return LocalTime.parse(trimmedTime, formatter);","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MESSAGE_INVALID_TIME);","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" * Parses the input session number as a string and returns it as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to be parsed.","lastModifiedDate":"2023-10-13"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" * @return The parsed session number as an integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" * @throws NumberFormatException If the session number is not a valid integer.","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" public static SessionNumber parseSessionNumber(String sessionNumber) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" String trimmedSessionNumber \u003d sessionNumber.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":" if (!SessionNumber.isValidSessionNumber(trimmedSessionNumber)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"ldinghan"},"content":" throw new ParseException(SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":" return new SessionNumber(trimmedSessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String taskName} into a {@code TaskName}.","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-09-27"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":" public static TaskName parseTaskName(String name) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-09-27"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":" if (!TaskName.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":" return new TaskName(trimmedName);","lastModifiedDate":"2023-09-27"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String taskDescription} into a {@code TaskDescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-09-27"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" public static TaskDescription parseTaskDescription(String name) throws ParseException {","lastModifiedDate":"2023-09-27"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":225,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-09-27"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":" if (!TaskDescription.isValidDescription(trimmedName)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":" return new TaskDescription(trimmedName);","lastModifiedDate":"2023-09-27"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String gradedTest} into a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code gradedTest} is invalid.","lastModifiedDate":"2023-10-13"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public static GradedTest parseGradedTest(String gradedTest) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-13"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" String trimmedGradedTest \u003d gradedTest.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" String[] components \u003d trimmedGradedTest.split(\"\\\\|\");","lastModifiedDate":"2023-10-19"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" if (components.length !\u003d 5) {","lastModifiedDate":"2023-10-13"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(\"Invalid GradedTest format. Expected 5 components.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" String ra1Score \u003d components[0].replaceAll(\"Reading Assessment 1:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" String ra2Score \u003d components[1].replaceAll(\"Reading Assessment 2:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" String midTermsScore \u003d components[2].replaceAll(\"MidTerms:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" String finalsScore \u003d components[3].replaceAll(\"Finals:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":" String peScore \u003d components[4].replaceAll(\"Practical Exam:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment readingAssessment1 \u003d new ReadingAssessment(ra1Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment readingAssessment2 \u003d new ReadingAssessment(ra2Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms \u003d new MidTerms(midTermsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" Finals finals \u003d new Finals(finalsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" PracticalExam practicalExam \u003d new PracticalExam(peScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" if (!GradedTest.isValidGradeTestName(trimmedGradedTest)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(GradedTest.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(trimmedGradedTest);","lastModifiedDate":"2023-10-19"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" * Parses {@code Collection\u003cString\u003e gradedTest} into a {@code Set\u003cGradedTest\u003e}.","lastModifiedDate":"2023-10-13"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cGradedTest\u003e parseGradedTests(Collection\u003cString\u003e gradedTests) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":" final Set\u003cGradedTest\u003e gradedTestSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" for (String gradedTestName : gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":" gradedTestSet.add(parseGradedTest(gradedTestName));","lastModifiedDate":"2023-10-13"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":" return gradedTestSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String readingAssessment} into a {@code readingAssessment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"raydenlim"},"content":" public static ReadingAssessment parseReadingAssessment(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"raydenlim"},"content":" return new ReadingAssessment(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String readingAssessment} into a {@code readingAssessment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" public static MidTerms parseMidTerms(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":" if (!MidTerms.isValidMidTermResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(MidTerms.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" return new MidTerms(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String finals} into a {@code finals}.","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" public static Finals parseFinals(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":321,"author":{"gitId":"raydenlim"},"content":" if (!Finals.isValidFinalsResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(Finals.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" return new Finals(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" * Parses a {@code String practicalExam} into a {@code practicalExam}.","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"raydenlim"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"raydenlim"},"content":" public static PracticalExam parsePracticalExam(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"raydenlim"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"raydenlim"},"content":" if (!PracticalExam.isValidPeResult(trimmedName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(PracticalExam.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"raydenlim"},"content":" return new PracticalExam(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":342,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"Respirayson"},"content":" * Parses a {@code String priority} into a {@code TaskPriority}.","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"Respirayson"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"Respirayson"},"content":" * String will be uppercase.","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"Respirayson"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"Respirayson"},"content":" public static TaskPriority parseTaskPriority(String name) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":351,"author":{"gitId":"Respirayson"},"content":" String trimmedName \u003d name.trim().toUpperCase();","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"Respirayson"},"content":" for (TaskPriority priority : TaskPriority.values()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"Respirayson"},"content":" if (trimmedName.equals(priority.name())) {","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"Respirayson"},"content":" return TaskPriority.valueOf(trimmedName);","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":356,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":357,"author":{"gitId":"Respirayson"},"content":" throw new ParseException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":358,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":359,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":360,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":361,"author":{"gitId":"Originalidk"},"content":" * Parses a {@code String assignmentName} into a {@code AssignmentName}.","lastModifiedDate":"2023-10-19"},{"lineNumber":362,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":363,"author":{"gitId":"Originalidk"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":364,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":365,"author":{"gitId":"Originalidk"},"content":" public static AssignmentName parseAssignmentName(String name) throws ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":366,"author":{"gitId":"Originalidk"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":367,"author":{"gitId":"Originalidk"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-14"},{"lineNumber":368,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentName.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":369,"author":{"gitId":"Originalidk"},"content":" throw new ParseException(AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-14"},{"lineNumber":370,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":371,"author":{"gitId":"Originalidk"},"content":" return new AssignmentName(trimmedName);","lastModifiedDate":"2023-10-14"},{"lineNumber":372,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":373,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ldinghan":32,"Respirayson":49,"raydenlim":153,"Originalidk":15,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" * Replaces the contents of the person list with {@code people}.","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" * {@code people} must not contain duplicate persons.","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public void setPersons(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" this.persons.setPersons(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * Returns person if a {@code person} with the same name exists in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" public Person matchName(Name name) {","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" return persons.matchName(name);","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":9,"Originalidk":4,"-":126}},{"path":"src/main/java/seedu/address/model/AssignmentMapBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Represents a collection of assignments. This class is responsible for managing and manipulating assignment data.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMapBook implements ReadOnlyAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" private final AssignmentMap assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" {","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public AssignmentMapBook() {}","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" * Creates an AssignmentMapBook using the AssignmentMap in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public AssignmentMapBook(ReadOnlyAssignmentMap toBeCopied) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this();","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" * Replaces the contents of the assignment map with {@code newAssignments}.","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" public void setAssignments(Map\u003cAssignmentName, Assignment\u003e newAssignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" this.assignments.setAssignmentMap(newAssignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * Resets the existing data of this {@code AssignmentMapBook} with {@code newData}.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" public void resetData(ReadOnlyAssignmentMap newData) {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" setAssignments(newData.getAssignmentMap());","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" public Assignment getAssignment(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" return assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" public ObservableMap\u003cAssignmentName, Assignment\u003e getAssignmentMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" return assignments.asUnmodifiableObservableMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":57}},{"path":"src/main/java/seedu/address/model/ConsultationListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.ConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Represents a collection of consultations. This class is responsible for managing and manipulating","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * consultation data.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListBook implements ReadOnlyConsultationList {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private final ConsultationList consultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" * Initializes a new instance of ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" consultationList \u003d new ConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Initializes a new instance of ConsultationListBook by copying data from an existing ReadOnlyConsultationList.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * @param toBeCopied The ReadOnlyConsultationList to copy data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook(ReadOnlyConsultationList toBeCopied) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" * Sets the consultations list with the provided list of consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" * @param consultations The list of consultations to set.","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" public void setConsultationList(List\u003cConsultation\u003e consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" this.consultationList.setConsultationList(consultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * Resets the data in the ConsultationListBook by replacing it with the data from a ReadOnlyConsultationList.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * @param newData The ReadOnlyConsultationList to copy data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void resetData(ReadOnlyConsultationList newData) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" setConsultationList(newData.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" * Checks if the ConsultationListBook contains the provided consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" * @param consultation The consultation to check for existence.","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" * @return True if the consultation exists in the list, false otherwise.","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" return consultationList.contains(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" * Adds a consultation to the ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" * @param consultation The consultation to add.","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" * Returns an observable list of consultations from the ConsultationListBook.","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" * @return An unmodifiable observable list of consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e getConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" return consultationList.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof ConsultationListBook)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook otherConsultationList \u003d (ConsultationListBook) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" return consultationList.equals(otherConsultationList.consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":97}},{"path":"src/main/java/seedu/address/model/GradedTestListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" * Wraps all data at the gradedTest-list level","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" * Duplicates are not allowed (by .isSameGradedTest comparison)","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListBook implements ReadOnlyGradedTestList {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" private final GradedTestList gradedTests;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * among constructors.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new GradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook() {}","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * Creates an GradedTestList using the GradedTest in the {@code toBeCopied}","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook(ReadOnlyGradedTestList toBeCopied) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" this();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" * Replaces the contents of the GradedTest list with {@code gradedTEst}.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTests} must not contain duplicate gradedTest.","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.setGradedTests(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" * Replaces the given gradedTest {@code target} in the list with {@code editedGradedTest}.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same as another existing","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * gradedTest in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" requireNonNull(editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" gradedTests.editGradedTest(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" * Resets the existing data of this {@code GradedTestList} with {@code newData}.","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void resetData(ReadOnlyGradedTestList newData) {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" setGradedTests(newData.getGradedTestList());","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" //// gradedTest-level operations","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" * Returns the gradedTest at the given index.","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" return gradedTests.getGradedTest(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" * Returns true if a gradedTest with the same identity as {@code gradedTest} exists in the gradedTest list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" return gradedTests.contains(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" * Adds a gradedTest to the gradedTest list.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gt) {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" gradedTests.add(gt);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" * Removes {@code key} from this {@code GradedTestListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" * {@code key} must exist in the gradedTest list book.","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public void removeGradedTest(GradedTest key) {","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" gradedTests.remove(key);","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" //// util methods","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e getGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" return gradedTests.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d null | getClass() !\u003d other.getClass()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook otherGradedTestList \u003d (GradedTestListBook) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" return gradedTests.equals(otherGradedTestList.gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" return gradedTests.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":138}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Predicate\u003cSession\u003e PREDICATE_SHOW_ALL_SESSIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" Predicate\u003cGradedTest\u003e PREDICATE_SHOW_ALL_GRADED_TEST \u003d unused -\u003e true;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" Predicate\u003cConsultation\u003e PREDICATE_SHOW_ALL_CONSULTATIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" void setTaskListFilePath(Path taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" * Returns the AddressBook","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" Session findSessionBySessionNumber(SessionNumber sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" * Adds the given sesssion.","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" void addSession(Session session);","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" /** Returns an unmodifiable view of the filtered session list */","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getFilteredSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" /** Returns the SessionList */","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList getSessionList();","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" * Updates the filter of the filtered session list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" void updateFilteredSessionList(Predicate\u003cSession\u003e predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" void setTaskList(ReadOnlyTaskList taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" /** Returns the TaskList */","lastModifiedDate":"2023-09-28"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList getTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2023-09-28"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" * Deletes the given task.","lastModifiedDate":"2023-09-28"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" * The task must exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" void deleteTask(Task target);","lastModifiedDate":"2023-09-28"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" * Adds the given task.","lastModifiedDate":"2023-09-28"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" void addTask(Task task);","lastModifiedDate":"2023-09-28"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" * Returns task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" * {@code index} must be within the size of the task list.","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" Task getTask(int index);","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2023-09-28"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-09-28"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" void setGradedTestList(ReadOnlyGradedTestList gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" /** Returns the GradeTestList */","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList getGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" boolean hasGradedTest(GradedTest gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" * Deletes the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" void deleteGradedTest(GradedTest target);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" * Adds the given task.","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" void addGradedTest(GradedTest gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" * Returns gradedTest at the given index.","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" * {@code index} must be within the size of the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" GradedTest getGradedTest(int index);","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" * Replaces the given task {@code target} with {@code editedGradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" * as another existing gradedTest in the gradedTest List.","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" void setGradedTest(GradedTest target, GradedTest editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" * Returns the user prefs\u0027 gradedTest list file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" Path getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" void setGradedTestListFilePath(Path gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":223,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" * Returns true if a consultation with the same identity as {@code task} exists in the consultation list.","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" boolean hasConsultation(Consultation consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" * Adds the given consultation.","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" void addConsultation(Consultation consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" /** Returns the ConsultationList */","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList getConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" /** Returns an unmodifiable view of the filtered consultation list */","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" ObservableList\u003cConsultation\u003e getFilteredConsultationList();","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" * Updates the filter of the filtered consultation list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":250,"author":{"gitId":"ldinghan"},"content":" Person getMatchingStudentName(Name name);","lastModifiedDate":"2023-10-13"},{"lineNumber":251,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"Respirayson"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2023-09-28"},{"lineNumber":253,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":254,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":255,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":256,"author":{"gitId":"Respirayson"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2023-09-28"},{"lineNumber":257,"author":{"gitId":"Respirayson"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-09-28"},{"lineNumber":258,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":259,"author":{"gitId":"Respirayson"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":260,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":38,"Respirayson":63,"raydenlim":75,"-":85}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" private final SessionListBook sessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private final TaskListBook taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" private final GradedTestListBook gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private final ConsultationListBook consultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" private final FilteredList\u003cGradedTest\u003e filteredGradedTest;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" private final FilteredList\u003cConsultation\u003e filteredConsultations;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private final FilteredList\u003cSession\u003e filteredSessions;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs, ReadOnlyTaskList taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" ReadOnlySessionList sessionList, ReadOnlyConsultationList consultationList,","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" this.consultationList \u003d new ConsultationListBook(consultationList);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.sessionList \u003d new SessionListBook(sessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" this.taskList \u003d new TaskListBook(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" this.gradedTestList \u003d new GradedTestListBook(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getTaskList());","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" filteredGradedTest \u003d new FilteredList\u003c\u003e(this.gradedTestList.getGradedTestList());","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" filteredConsultations \u003d new FilteredList\u003c\u003e(this.consultationList.getConsultationList());","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" filteredSessions \u003d new FilteredList\u003c\u003e(this.sessionList.getSessionList());","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" * Initializes a ModelManager with default data.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" this(new AddressBook(), new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" return userPrefs.getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" userPrefs.setGradedTestListFilePath(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":158,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" return sessionList.getSession(sessionNumber);","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" requireNonNull(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" public ReadOnlySessionList getSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" return sessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the list of {@code Session} backed by the internal list of","lastModifiedDate":"2023-10-19"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-19"},{"lineNumber":185,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" return filteredSessions;","lastModifiedDate":"2023-10-19"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" public void updateFilteredSessionList(Predicate\u003cSession\u003e predicate) {","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" filteredSessions.setPredicate(predicate);","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskListBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":198,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":" public void setTaskList(ReadOnlyTaskList taskList) {","lastModifiedDate":"2023-09-28"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":" this.taskList.resetData(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" public ReadOnlyTaskList getTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" return taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":" requireNonNull(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" return taskList.getTask(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2023-09-28"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":" taskList.removeTask(target);","lastModifiedDate":"2023-09-28"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":225,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-09-28"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":231,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":232,"author":{"gitId":"Respirayson"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-28"},{"lineNumber":233,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":234,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":235,"author":{"gitId":"Respirayson"},"content":" taskList.setTask(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":236,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":237,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Graded Test List Book \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestList(ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" this.gradedTestList.resetData(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyGradedTestList getGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" return gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" * Returns true if a task with the same identity as {@code gradedTest} exists in the gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" return gradedTestList.hasGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" return gradedTestList.getGradedTest(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" public void deleteGradedTest(GradedTest target) {","lastModifiedDate":"2023-10-15"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":" gradedTestList.removeGradedTest(target);","lastModifiedDate":"2023-10-15"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" * Adds the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not already exist in the gradedTest list.","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-15"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":278,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":279,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":280,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":281,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":282,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":286,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":288,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":289,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":290,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":291,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":294,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":295,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":296,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":297,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":300,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Consultations \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":301,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":302,"author":{"gitId":"raydenlim"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":303,"author":{"gitId":"raydenlim"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":304,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":305,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":306,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" return consultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":" return consultationList.hasConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" return filteredConsultations;","lastModifiedDate":"2023-10-20"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" filteredConsultations.setPredicate(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-20"},{"lineNumber":330,"author":{"gitId":"raydenlim"},"content":" return addressBook.matchName(name);","lastModifiedDate":"2023-10-20"},{"lineNumber":331,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":334,"author":{"gitId":"Respirayson"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Task List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":335,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":336,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":337,"author":{"gitId":"Respirayson"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2023-09-28"},{"lineNumber":338,"author":{"gitId":"Respirayson"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-09-28"},{"lineNumber":339,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":340,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"Respirayson"},"content":" return filteredTasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":345,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":346,"author":{"gitId":"Respirayson"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2023-09-28"},{"lineNumber":347,"author":{"gitId":"Respirayson"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":348,"author":{"gitId":"Respirayson"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2023-09-28"},{"lineNumber":349,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":350,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":351,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":352,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":353,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":357,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":358,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":359,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":360,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":362,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":363,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":364,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":365,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2023-09-28"},{"lineNumber":366,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2023-09-28"},{"lineNumber":367,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 filteredTasks.equals(otherModelManager.filteredTasks)","lastModifiedDate":"2023-10-15"},{"lineNumber":368,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 filteredGradedTest.equals(otherModelManager.filteredGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":371,"author":{"gitId":"raydenlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered GradedTest List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":372,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":373,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":374,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2023-10-15"},{"lineNumber":375,"author":{"gitId":"raydenlim"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2023-10-15"},{"lineNumber":376,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":377,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":378,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e getFilteredGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":379,"author":{"gitId":"raydenlim"},"content":" return filteredGradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":380,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":381,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":382,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":383,"author":{"gitId":"raydenlim"},"content":" * Updates the filtered task list with the given predicate.","lastModifiedDate":"2023-10-15"},{"lineNumber":384,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":385,"author":{"gitId":"raydenlim"},"content":" * @param predicate The filtering predicate to apply.","lastModifiedDate":"2023-10-15"},{"lineNumber":386,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":387,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredGradedTestList(Predicate\u003cGradedTest\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":388,"author":{"gitId":"raydenlim"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":389,"author":{"gitId":"raydenlim"},"content":" filteredGradedTest.setPredicate(predicate);","lastModifiedDate":"2023-10-15"},{"lineNumber":390,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":391,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":40,"Respirayson":79,"raydenlim":128,"-":144}},{"path":"src/main/java/seedu/address/model/ReadOnlyAssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Unmodifiable view of an assignment map.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public interface ReadOnlyAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Returns an unmodifiable view of the assignment map.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" ObservableMap\u003cAssignmentName, Assignment\u003e getAssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" * Unmodifiable view of a consultation list","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public interface ReadOnlyConsultationList {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Returns an unmodifiable view of the consultation list.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * This list will not contain any duplicate consultation.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cConsultation\u003e getConsultationList();","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyGradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Unmodified view of a gradedTest List","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"public interface ReadOnlyGradedTestList {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * Returns an unmodifiable view of the task list.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * This list will not contain any duplicate tasks.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" ObservableList\u003cGradedTest\u003e getGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":15}},{"path":"src/main/java/seedu/address/model/ReadOnlySessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Unmodifiable view of a session list","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"public interface ReadOnlySessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the session list.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * This list will not contain any duplicate session.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cSession\u003e getSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Unmodifiable view of a task list","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public interface ReadOnlyTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" * Returns an unmodifiable view of the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * This list will not contain any duplicate tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":17}},{"path":"src/main/java/seedu/address/model/SessionListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Represents a collection of sessions. This class is responsible for managing and manipulating","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * session data.","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"public class SessionListBook implements ReadOnlySessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" private final SessionList sessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" * Initializes a new instance of SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public SessionListBook() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" * Initializes a new instance of SessionListBook by copying data from an existing ReadOnlySessionList.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * @param toBeCopied The ReadOnlySessionList to copy data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public SessionListBook(ReadOnlySessionList toBeCopied) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" this();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" * Sets the session list with the provided list of sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * @param sessions The list of sessions to set.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void setSessionList(List\u003cSession\u003e sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" this.sessionList.setSessionList(sessions);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Resets the data in the SessionListBook by replacing it with the data from a ReadOnlySessionList.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param newData The ReadOnlySessionList to copy data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" public void resetData(ReadOnlySessionList newData) {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" setSessionList(newData.getSessionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * Retrieves a session with the specified session number.","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to search for.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" * @return The session with the specified session number, or null if not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" public Session getSession(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" return sessionList.findSessionBySessionNumber(sessionNumber);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Checks if the SessionListBook contains the provided session.","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @param session The session to check for existence.","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * @return True if the session exists in the list, false otherwise.","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public boolean hasSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" requireNonNull(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" return sessionList.contains(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" * Adds a session to the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" * @param session The session to add.","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" * Sets a session with the specified session number to a new session.","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" * @param targetSession The session to be modified.","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" * @param editedSession The modified session information.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" public void setSession(Session targetSession, Session editedSession) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" requireNonNull(editedSession);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" sessionList.setSession(targetSession, editedSession);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * Removes a session from the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" * @param session The session to remove.","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" public void removeSession(Session session) {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" sessionList.remove(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" .add(\"sessions\", sessionList)","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" .toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" * Returns an observable list of sessions from the SessionListBook.","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" * @return An unmodifiable observable list of sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e getSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" return sessionList.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionListBook)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" SessionListBook otherSessionList \u003d (SessionListBook) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" return sessionList.equals(otherSessionList.sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" return sessionList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":143}},{"path":"src/main/java/seedu/address/model/TaskListBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * Wraps all data at the task-list level","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * Duplicates are not allowed (by .isSameTask comparison)","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class TaskListBook implements ReadOnlyTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * among constructors.","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" {","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public TaskListBook() {}","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" * Creates an TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public TaskListBook(ReadOnlyTaskList toBeCopied) {","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" this();","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" //// list overwrite operations","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" * Resets the existing data of this {@code TaskList} with {@code newData}.","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void resetData(ReadOnlyTaskList newData) {","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" // task-level operations","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" * Returns the task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return tasks.getTask(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * Returns true if a task with the same identity as {@code task} exists in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" requireNonNull(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return tasks.contains(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" * The task must not already exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-28"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2023-09-28"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the task list.","lastModifiedDate":"2023-09-28"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-28"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" tasks.editTask(target, editedTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" * Removes {@code key} from this {@code TaskListBook}.","lastModifiedDate":"2023-09-28"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" * {@code key} must exist in the task list book.","lastModifiedDate":"2023-09-28"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" public void removeTask(Task key) {","lastModifiedDate":"2023-09-28"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" tasks.remove(key);","lastModifiedDate":"2023-09-28"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" //// util methods","lastModifiedDate":"2023-09-28"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-28"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-28"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2023-09-28"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-09-28"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2023-09-28"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-28"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-28"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-28"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-28"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskListBook)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-28"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" TaskListBook otherTaskList \u003d (TaskListBook) other;","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" return tasks.equals(otherTaskList.tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-28"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" return tasks.hashCode();","lastModifiedDate":"2023-09-28"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"ldinghan":1,"Respirayson":136}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\" , \"tasklist.json\");","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private Path sessionListFilePath \u003d Paths.get(\"data\", \"sessionlist.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private Path consultationListFilePath \u003d Paths.get(\"data\", \"consultationlist.json\");","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private Path gradedTestListFilePath \u003d Paths.get(\"data\" , \"gradedtestlist.json\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" return sessionListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" return consultationListFilePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" public void setSessionListFilePath(Path sessionListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" this.sessionListFilePath \u003d sessionListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" return taskListFilePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" return gradedTestListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" this.gradedTestListFilePath \u003d gradedTestListFilePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" sb.append(\"\\nTask list file location : \" + taskListFilePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" sb.append(\"\\nSession list file location : \" + sessionListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" sb.append(\"\\nConsultation list file location : \" + consultationListFilePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" sb.append(\"\\nGradedTask list file location : \" + gradedTestListFilePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":11,"Respirayson":11,"raydenlim":16,"-":88}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * Utility class for managing attendance records.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"public abstract class Attendance {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * Marks a student as present in a specific session and updates their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * @param session The session in which the student is marked present.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * @param student The student to be marked present.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public static void markPresent(Session session, Person student) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" student.attendSession(session);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" session.addStudent(student);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * Marks a student as absent in a specific session and updates their attendance record.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" * @param session The session in which the student is marked absent.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * @param student The student to be marked absent.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" public static void markAbsent(Session session, Person student) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" student.missSession(session);","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" session.removeStudent(student);","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * Retrieves the list of students attending a specific session.","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * @param session The session for which attendance is requested.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * @return A set of students attending the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public static SessionStudents getAttendanceBySession(Session session) {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" return session.getStudents();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Retrieves the list of sessions attended by a specific student.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param student The student for which attendance records are requested.","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the sessions attended by the student.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public static Set\u003cSession\u003e getAttendanceByStudent(Person student, SessionList sessionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" return sessionList.findSessionsByStudent(student);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":57}},{"path":"src/main/java/seedu/address/model/consultation/Consultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Represents a Consultation with a date, time and specified students.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class Consultation {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private LocalDate date;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private LocalTime time;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" private Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" * Constructs an {@code Consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * @param date A valid date object.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" * @param time A valid time object.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @param students A set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public Consultation(LocalDate date, LocalTime time, Set\u003cPerson\u003e students) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof Consultation)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" Consultation otherConsultation \u003d (Consultation) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" return students.equals(otherConsultation.students)","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 date.equals(otherConsultation.date)","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 time.equals(otherConsultation.time);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * Returns true if both consultations have the same details.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" public boolean isSameConsultation(Consultation other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" return other !\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getDate().equals(getDate())","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getTime().equals(getTime())","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" \u0026\u0026 other.getStudents().equals(getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" public LocalDate getDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" return date;","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" public LocalTime getTime() {","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" return time;","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" public Set\u003cPerson\u003e getStudents() {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" return students;","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" public Set\u003cName\u003e getStudentsNames() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" return students.stream().map(Person::getName).collect(Collectors.toSet());","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":75}},{"path":"src/main/java/seedu/address/model/consultation/ConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.ConsultationNotFoundException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.DuplicateConsultationException;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" * A list of Consultations.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class ConsultationList implements Iterable\u003cConsultation\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private ObservableList\u003cConsultation\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" private final ObservableList\u003cConsultation\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public void setConsultationList(List\u003cConsultation\u003e consultationList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" internalList.setAll(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * Returns true if the list contains an equivalent consultation as the given argument.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public boolean contains(Consultation toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" return internalList.stream().anyMatch(toCheck::isSameConsultation);","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" * Adds a consultation to the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" throw new DuplicateConsultationException();","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * Removes the equivalent consultation from the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * The consultation must exist in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void remove(Consultation toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" throw new ConsultationNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public ObservableList\u003cConsultation\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public Iterator\u003cConsultation\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" return true; // Same object, equal","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" if (!(other instanceof ConsultationList)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" return false; // Not the same class, not equal","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" ConsultationList otherList \u003d (ConsultationList) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" // Check if the lists have the same sessions in the same order","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":86}},{"path":"src/main/java/seedu/address/model/consultation/ReadOnlyConsultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" * Unmodifiable view of a Consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public interface ReadOnlyConsultation {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/seedu/address/model/consultation/exceptions/ConsultationNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" * Signals that the operation is unable to find the specified consultation.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class ConsultationNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public ConsultationNotFoundException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" super(\"Consultation not found\");","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":10}},{"path":"src/main/java/seedu/address/model/consultation/exceptions/DuplicateConsultationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" * Signals that the operation will result in duplicate Consultations.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class DuplicateConsultationException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public DuplicateConsultationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" super(\"Operation would result in duplicate consultations\");","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"wesho1107":10}},{"path":"src/main/java/seedu/address/model/gradedtest/Finals.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Final result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Final result is a positive number and indicates the score achieved in the exam.","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class Finals {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * @param finalResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public Finals(String finalResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" requireNonNull(finalResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidFinalsResult(finalResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" this.value \u003d finalResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid finals result.","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidFinalsResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof Finals)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" Finals otherFinals \u003d (Finals) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherFinals.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":62}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTest.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class GradedTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"GradedTest Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"Reading Assessment 1:[-\\\\d]+ \\\\| Reading Assessment 2:[-\\\\d]+ \\\\| \"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms:[-\\\\d]+ \\\\| Finals:[-\\\\d]+ \\\\| Practical Exam:[-\\\\d]+\";","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_VALUE \u003d \"-\";","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" // Identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public final String gradedTestsIndv;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Data fields","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private final ReadingAssessment readingAssessment1;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final ReadingAssessment readingAssessment2;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private final MidTerms midTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private final Finals finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private final PracticalExam practicalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" * @param readingAssessment1 The first reading assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" * @param readingAssessment2 The second reading assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * @param midTerms The mid-terms.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" * @param finals The finals.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" * @param practicalExam The practical exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public GradedTest(ReadingAssessment readingAssessment1, ReadingAssessment readingAssessment2,","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms, Finals finals, PracticalExam practicalExam) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" this.gradedTestsIndv \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:\" + readingAssessment1.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" + \"Reading Assessment 2:\" + readingAssessment2.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" + \"MidTerms:\" + midTerms.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" + \"Finals:\" + finals.toString() + \" | \"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" + \"Practical Exam:\" + practicalExam.toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" * @param gradedTestsIndv A valid gradedTest name.","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public GradedTest(String gradedTestsIndv) {","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" this.gradedTestsIndv \u003d gradedTestsIndv;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestsIndv);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" if (!isValidGradeTestName(gradedTestsIndv)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" String[] components \u003d gradedTestsIndv.split(\"\\\\|\");","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" if (components.length !\u003d 5) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" throw new ParseException(\"Invalid GradedTest format. Expected 5 components.\");","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" String ra1Score \u003d components[0].replaceAll(\"Reading Assessment 1:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String ra2Score \u003d components[1].replaceAll(\"Reading Assessment 2:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" String midTermsScore \u003d components[2].replaceAll(\"MidTerms:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" String finalsScore \u003d components[3].replaceAll(\"Finals:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String peScore \u003d components[4].replaceAll(\"Practical Exam:\", \"\").trim();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d new ReadingAssessment(ra1Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d new ReadingAssessment(ra2Score);","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d new MidTerms(midTermsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d new Finals(finalsScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d new PracticalExam(peScore);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment getRA1() {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" return readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment getRA2() {","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" return readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public MidTerms getMidTerms() {","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" return midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" public Finals getFinals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" return finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public PracticalExam getPracticalExam() {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" return practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public String getGradedTests() {","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" return gradedTestsIndv;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid gradedTest name.","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidGradeTestName(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" * Returns true if both tasks have the same name and description.","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public boolean isSameGradedTest(GradedTest otherGradedTest) {","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" if (otherGradedTest \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" return otherGradedTest !\u003d null","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getGradedTests().equals(gradedTestsIndv)","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getRA1().equals(readingAssessment1)","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getRA2().equals(readingAssessment2)","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getMidTerms().equals(midTerms)","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getFinals().equals(finals)","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 otherGradedTest.getPracticalExam().equals(practicalExam);","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTest)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" GradedTest otherTest \u003d (GradedTest) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" return readingAssessment1.equals(otherTest.readingAssessment1)","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 readingAssessment2.equals(otherTest.readingAssessment2)","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 midTerms.equals(otherTest.midTerms)","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 finals.equals(otherTest.finals)","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 practicalExam.equals(otherTest.practicalExam)","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTestsIndv.equals(otherTest.gradedTestsIndv);","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" return Objects.hash(readingAssessment1, readingAssessment2, midTerms, finals, practicalExam);","lastModifiedDate":"2023-10-13"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" .add(\"Reading Assessment 1\", readingAssessment1)","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" .add(\"Reading Assessment 2\", readingAssessment2)","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" .add(\"MidTerms\", midTerms)","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" .add(\"Finals\", finals)","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" .add(\"Practical Exam\", practicalExam)","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" .toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":176}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.DuplicateGradedTestException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.GradedTestNotFoundException;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" * A list of gradedTest that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" * A gradedTest is considered unique by comparing using {@code GradedTest#isSameGradedTest(gradedTest)}.","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" * As such, adding and updating of gradedTest uses GradedTest#isSameGradedTest(gradedTest) for equality","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * so as to ensure that the gradedTest being added or updated is unique in terms of identity in the GradedTestList.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * However, the removal of a gradedTest uses GradedTest#equals(Object) so as to ensure that the gradedTest with exactly","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" * the same fields will be removed.","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * @see GradedTest#isSameGradedTest(GradedTest)","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"public class GradedTestList implements Iterable\u003cGradedTest\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" private final ObservableList\u003cGradedTest\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private final ObservableList\u003cGradedTest\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * Returns true if the list contains an equivalent gradedTest as the given argument.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public boolean contains(GradedTest toCheck) {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" return internalList.stream().anyMatch(toCheck::isSameGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * Returns the gradedTest at the given index.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" if (index \u003e\u003d internalList.size()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" throw new IllegalArgumentException(\"Index is out of bounds\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" return internalList.get(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" * Adds a gradedTest to the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must not already exist in the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public void add(GradedTest toAdd) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" * Replaces the gradedTest {@code target} in the list with {@code editedGradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" * The gradedTest identity of {@code editedGradedTest} must not be the same as another","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" * existing gradedTest in the list.","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(target, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" throw new GradedTestNotFoundException();","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" if (!target.isSameGradedTest(editedGradedTest) \u0026\u0026 contains(editedGradedTest)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" internalList.set(index, editedGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" * Removes the equivalent gradedTest from the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" * The gradedTest must exist in the list.","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void remove(GradedTest toRemove) {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" throw new GradedTestNotFoundException();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(GradedTestList replacement) {","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Replaces the contents of this list with {@code gradedTest}.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" * {@code gradedTest} must not contain duplicate gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public void setGradedTests(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" if (!isUniqueGradedTest(gradedTests)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" throw new DuplicateGradedTestException();","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" internalList.setAll(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cGradedTest\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public Iterator\u003cGradedTest\u003e iterator() {","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTestList)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" GradedTestList otherList \u003d (GradedTestList) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" * Returns true if {@code gradedTest} contains only unique gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" private boolean isUniqueGradedTest(List\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" for (int i \u003d 0; i \u003c gradedTests.size() - 1; i++) {","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" for (int j \u003d i + 1; j \u003c gradedTests.size(); j++) {","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" if (gradedTests.get(i).isSameGradedTest(gradedTests.get(j))) {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":163}},{"path":"src/main/java/seedu/address/model/gradedtest/GradedTestNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" * Tests that a {@code GradedTest}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNameContainsKeywordsPredicate implements Predicate\u003cGradedTest\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public GradedTestNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public boolean test(GradedTest gradedTest) {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" return keywords.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" StringUtil.containsWordIgnoreCase(gradedTest.getRA1().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getRA2().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getMidTerms().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getFinals().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" || StringUtil.containsWordIgnoreCase(gradedTest.getPracticalExam().value, keyword)","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" );","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof GradedTestNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" (GradedTestNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" return new ToStringBuilder(this).add(\"gradedTest keywords\", keywords).toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":50}},{"path":"src/main/java/seedu/address/model/gradedtest/MidTerms.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a MidTerm result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A MidTerm result is a positive number that indicates the score achieved in the exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class MidTerms {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param midTermResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public MidTerms(String midTermResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(midTermResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidMidTermResult(midTermResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d midTermResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid PE result.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidMidTermResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof MidTerms)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" MidTerms otherMidTerm \u003d (MidTerms) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherMidTerm.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":63}},{"path":"src/main/java/seedu/address/model/gradedtest/PracticalExam.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Practical Exam result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Practical Exam result is a positive number that indicates the score achieved in the exam.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class PracticalExam {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param peResults A valid phone number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public PracticalExam(String peResults) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(peResults);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidPeResult(peResults), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d peResults;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid PE result.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidPeResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof PracticalExam)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" PracticalExam otherPE \u003d (PracticalExam) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherPE.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":64}},{"path":"src/main/java/seedu/address/model/gradedtest/ReadingAssessment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" * Represents a Reading Assessment result.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" * A Reading Assessment result is a positive number that indicates the score achieved in the assessment.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" * The result can be an integer or a decimal number.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class ReadingAssessment {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" \"Scores should be a positive number\";","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public static final String VALIDATION_REGEX \u003d \"(?:-|\\\\d+(\\\\.\\\\d+)?)\";","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code Finals}.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" * @param raResult A valid raResult number.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public ReadingAssessment(String raResult) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" requireNonNull(raResult);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" checkArgument(isValidRaResult(raResult), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.value \u003d raResult;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Returns true if a given string is a valid RA result.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static boolean isValidRaResult(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return value.equals(\"\") ? \"No Score Provided\" : value;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!(other instanceof ReadingAssessment)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment otherRA \u003d (ReadingAssessment) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" return value.equals(otherRA.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":64}},{"path":"src/main/java/seedu/address/model/gradedtest/exceptions/DuplicateGradedTestException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" * Signals that the operation will result in duplicate Graded Test","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" * (Graded Tests are considered duplicates if they have the same identity).","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"public class DuplicateGradedTestException extends RuntimeException {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" public DuplicateGradedTestException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" super(\"Operation would result in duplicate graded tests\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":11}},{"path":"src/main/java/seedu/address/model/gradedtest/exceptions/GradedTestNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest.exceptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" * Signals that the operation is unable to find the specified gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" public GradedTestNotFoundException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" super(\"Graded Test not found.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":10}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private final Set\u003cGradedTest\u003e gradedTests \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" private final AssignmentMap assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" requireAllNonNull(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" * Creates a new Person object with a pre-set map of assignments.","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" AssignmentMap assignments, Set\u003cGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" requireAllNonNull(name, phone, email, address, tags, assignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" * Returns an immutable gradedTests set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public Set\u003cGradedTest\u003e getGradedTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" return Collections.unmodifiableSet(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" * Adds a student to a session and a session to a student.","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * @param session The session to attend.","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public void attendSession(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" session.addStudent(this);","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" * Removes a student from a session and a session from a student.","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" * @param session The session to miss.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" public void missSession(Session session) {","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" session.removeStudent(this);","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap getAllAssignments() {","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":" return assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" public Assignment getAssignment(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"Originalidk"},"content":" return assignments.get(assignmentName);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" public boolean isSameName(Name otherName) {","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" if (otherName \u003d\u003d this.getName()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" return otherName.equals(getName());","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2023-10-13"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 assignments.equals(otherPerson.assignments)","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" \u0026\u0026 gradedTests.equals(otherPerson.gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" return Objects.hash(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" .add(\"gradedTests\", gradedTests)","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":32,"raydenlim":21,"Originalidk":26,"-":113}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" * Returns student in the list that matches the name {@code toCheck}.","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public Person matchName(Name toCheck) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" Optional\u003cPerson\u003e matchingStudent \u003d internalList.stream().filter(p -\u003e p.isSameName(toCheck)).findAny();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" if (matchingStudent.isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" return matchingStudent.get();","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" public void setPersons(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" requireAllNonNull(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" if (!personsAreUnique(people)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" internalList.setAll(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"Originalidk"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c people.size() - 1; i++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Originalidk"},"content":" for (int j \u003d i + 1; j \u003c people.size(); j++) {","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"Originalidk"},"content":" if (people.get(i).isSamePerson(people.get(j))) {","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ldinghan":14,"Originalidk":8,"-":142}},{"path":"src/main/java/seedu/address/model/person/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" * Represents an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Assignment {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" // Identity fields","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" private final AssignmentName assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private final Grade grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Creates an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public Assignment(AssignmentName name, Grade grade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.grade \u003d grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public String name() {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" return this.assignmentName.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public String gradeToString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" return this.grade.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public String maxGrade() {","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" return this.grade.getMax();","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" public Assignment copyAssignment() {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" return new Assignment(this.assignmentName, this.grade.copyGrade());","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof Assignment)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" Assignment otherName \u003d (Assignment) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return assignmentName.equals(otherName.assignmentName) \u0026\u0026 grade.equals(otherName.grade);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":48}},{"path":"src/main/java/seedu/address/model/person/assignment/AssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static javafx.collections.FXCollections.observableHashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static javafx.collections.FXCollections.unmodifiableObservableMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import javafx.collections.ObservableMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" * Stores the list of assignments a person has.","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" private final ObservableMap\u003cAssignmentName, Assignment\u003e assignments \u003d observableHashMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" private final ObservableMap\u003cAssignmentName, Assignment\u003e unmodifiableAssignments \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" unmodifiableObservableMap(assignments);","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" * Creates an AssignmentMap to store all assignments a person has.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" if (!AssignmentInitialise.getInitialisationStatus()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.init();","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" Grade assignmentMaxGrade \u003d AssignmentInitialise.getAssignmentMaxGrade(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" assignments.put(assignmentName, new Assignment(assignmentName, assignmentMaxGrade));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public void setAssignmentMap(Map\u003cAssignmentName, Assignment\u003e assignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" Assignment replaceAssignment \u003d assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" this.assignments.replace(assignmentName, replaceAssignment.copyAssignment());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" * Creates a new AssignmentMap with the updated grade being given to an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" * @param toBeGraded Name of assignment being graded.","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" * @param newGrade Grade being given to the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" * @return New AssignmentMap with the updated grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public AssignmentMap createUpdatedMap(AssignmentName toBeGraded, Grade newGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" AssignmentMap updateTo \u003d new AssignmentMap();","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" if (assignmentName.equals(toBeGraded)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" Assignment gradedAssignment \u003d new Assignment(toBeGraded, newGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" updateTo.assignments.replace(assignmentName, gradedAssignment);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" Assignment originalAssignment \u003d this.assignments.get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" updateTo.assignments.replace(assignmentName, originalAssignment.copyAssignment());","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" return updateTo;","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" public boolean contains(AssignmentName key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" return assignments.containsKey(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" public Assignment get(AssignmentName key) {","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" return assignments.get(key);","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" public ObservableMap\u003cAssignmentName, Assignment\u003e asUnmodifiableObservableMap() {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" return unmodifiableAssignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AssignmentMap)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" AssignmentMap otherMap \u003d (AssignmentMap) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" return this.assignments.equals(otherMap.assignments);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":88}},{"path":"src/main/java/seedu/address/model/person/assignment/AssignmentName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentNameInitialise;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" * Represents an assignment name.","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"public class AssignmentName {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" \"Assignment does not exist\";","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" private static final AssignmentNameInitialise checkIfValid \u003d new AssignmentNameInitialise();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public final String assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" * Creates an assignment name.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" public AssignmentName(String name) {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" * Checks if the assignment name exists.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" * @param test The assignment name as a string.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" * @return Whether the assignment exists.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.init();","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" return checkIfValid.contains(new AssignmentName(test));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" return this.assignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof AssignmentName)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" AssignmentName otherName \u003d (AssignmentName) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" return assignmentName.equals(otherName.assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" return assignmentName.hashCode();","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":61}},{"path":"src/main/java/seedu/address/model/person/assignment/Grade.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" * Represents the Grade given to an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" * Consists of the maximum grade as well as the actual grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"public class Grade {","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private String actualGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" private final String maxGrade;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private boolean isGraded;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Creates a Grade for an assignment with only the maximum grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" * @param maxGrade The maximum grade for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public Grade(String maxGrade) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" this.maxGrade \u003d maxGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" this.isGraded \u003d false;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * Creates a Grade for an assignment with both the actual grade and the maximum grade.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" * @param actualGrade The grade the person scores for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" * @param maxGrade The maximum grade for the assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public Grade(String actualGrade, String maxGrade) {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this.actualGrade \u003d actualGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" this.maxGrade \u003d maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" this.isGraded \u003d true;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" public String getMax() {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" return this.maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" * Creates a new copy of the Grade of an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * @return New copy of the Grade of an assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" public Grade copyGrade() {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" return new Grade(this.actualGrade, this.maxGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" return new Grade(this.maxGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" return this.actualGrade + \"/\" + this.maxGrade;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" return \"UNGRADED/\" + this.maxGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" if (!(other instanceof Grade)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" Grade otherGrade \u003d (Grade) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" boolean sameMaxGrade \u003d this.maxGrade.equals(otherGrade.maxGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" if (this.isGraded \u0026\u0026 otherGrade.isGraded) {","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" boolean sameGrade \u003d this.actualGrade.equals(otherGrade.actualGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" return sameMaxGrade \u0026\u0026 sameGrade;","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" return sameMaxGrade \u0026\u0026 !otherGrade.isGraded;","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Originalidk":80}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create assignments for each person.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class AssignmentInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private static boolean isInitialised \u003d false;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static AssignmentNameInitialise nameInitialise;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" private static AssignmentMaxGradeInitialise maxGradeInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" * Initializes all assignment names and maximum grades if they have yet to be initialized.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public static void init() {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise \u003d new AssignmentNameInitialise();","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise.initMissions();","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.nameInitialise.initQuests();","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise \u003d new AssignmentMaxGradeInitialise();","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise.missionGrades();","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentInitialise.maxGradeInitialise.questGrades();","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" isInitialised \u003d true;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" public static AssignmentName getAssignmentName(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.nameInitialise.getName(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" public static Grade getAssignmentMaxGrade(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.maxGradeInitialise.getGrade(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public static boolean getInitialisationStatus() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" return isInitialised;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" public static int size() {","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" return AssignmentInitialise.nameInitialise.size();","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":44}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentMaxGradeInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create grades for each assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMaxGradeInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static ArrayList\u003cGrade\u003e maxGrades \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * Initialises mission grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void missionGrades() {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1000\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"700\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"950\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1300\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"720\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"950\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1000\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"1200\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" * Initialises quest grades.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public void questGrades() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"400\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"500\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"500\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"600\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"800\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"670\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" AssignmentMaxGradeInitialise.maxGrades.add(new Grade(\"750\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public Grade getGrade(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" return this.maxGrades.get(index);","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":51}},{"path":"src/main/java/seedu/address/model/person/assignment/initialise/AssignmentNameInitialise.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment.initialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" * Represents an initializer to create names for each assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class AssignmentNameInitialise {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private static ArrayList\u003cAssignmentName\u003e assignmentNames \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * Initialises mission names.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void initMissions() {","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Rune Trials\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Rune Reading\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Beyond the Second Dimension\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curve Introduction\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curve Manipulation\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Beyond the First Dimension\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Premorseal Communications\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"POTS and Pans\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Musical Diversions\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Search and Rescue\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Sorting Things Out\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Robotic Trials\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Moving about on Planet Y\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Finding ELDRIC\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Know Your Environment\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" * Initialises quest names.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" public void initQuests() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Runic Carpets\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Colorful Carpets\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Functional Expressionism\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Cardioid Arrest\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Curvaceous Wizardry\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"The Magical Tone Matrix\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Echoes of the Past\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" AssignmentNameInitialise.assignmentNames.add(new AssignmentName(\"Grading a Sort\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" public AssignmentName getName(int index) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.get(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public boolean contains(AssignmentName assignmentName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.contains(assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" public int size() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" return assignmentNames.size();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":59}},{"path":"src/main/java/seedu/address/model/session/ReadOnlySession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"public interface ReadOnlySession {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":15}},{"path":"src/main/java/seedu/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Represents a class for managing a session, which can hold a list of students and session-specific details.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"public class Session {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" private final SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" private SessionStudents students;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * Creates a session with a session number and an initial set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * @param presentStudents The set of students present in this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber, SessionStudents presentStudents) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, presentStudents);","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" this.students \u003d presentStudents;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * Creates a session with a session number and a single student. Useful for adding students individually.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber, Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionNumber, student);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Creates a session with just a session number. Useful for creating empty sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public Session(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" * Adds a student to the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add.","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" * @return","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void addStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" * Removes a student from the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" * @param student The student to remove.","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" public void removeStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" this.students.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" * Checks if this session is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.equals(otherSession.sessionNumber) \u0026\u0026 students.equals(otherSession.students);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Checks if this session is the same as another session.","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" * @param other The session to compare with.","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" * @return True if the sessions are the same, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" public boolean isSameSession(Session other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" return other !\u003d null","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 other.getSessionNumber().equals(sessionNumber)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" \u0026\u0026 other.getStudents().equals(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" * Retrieves the set of students in this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" * @return The set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" public SessionStudents getStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" if (students \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" return students.getStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" * Retrieves the session number, a unique identifier for this session.","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" * @return The session number.","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":" public SessionNumber getSessionNumber() {","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" return sessionNumber;","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" * Generates a human-readable representation of the session, including the session number and the set of students.","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the session.","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" public String getSessionInfo() {","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" String studentNames \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" studentNames \u003d students.toStudentNames();","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" return String.format(\"%s - %s\", sessionNumber, studentNames);","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" return this.getSessionInfo();","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" return Objects.hash(sessionNumber, students);","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":152}},{"path":"src/main/java/seedu/address/model/session/SessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.DuplicateSessionException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.SessionNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * A list of sessions that can be used to manage and manipulate session data.","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class SessionList implements Iterable\u003cSession\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private ObservableList\u003cSession\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private final ObservableList\u003cSession\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void setSessionList(List\u003cSession\u003e sessionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" internalList.setAll(sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * Checks if the list contains a specific session.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param toCheck The session to check for existence.","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * @return True if the session exists in the list, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public boolean contains(Session toCheck) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" return internalList.stream().anyMatch(toCheck::isSameSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * Adds a session to the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" * @param toAdd The session to add.","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public void addSession(Session toAdd) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" if (this.contains(toAdd)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" throw new DuplicateSessionException();","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Sets the information of a session in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param target The session to be modified.","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param editedSession The modified session information.","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @throws SessionNotFoundException If the target session is not found in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @throws DuplicateSessionException If the edited session information duplicates an existing session.","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public void setSession(Session target, Session editedSession) {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(target, editedSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" throw new SessionNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" if (!target.isSameSession(editedSession) \u0026\u0026 contains(editedSession)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" throw new DuplicateSessionException();","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" internalList.set(index, editedSession);","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" * Finds a session in the list based on its session number.","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to search for.","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" * @return The session with the specified session number, or null if not found.","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" for (Session session : internalList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" if (session.getSessionNumber().equals(sessionNumber)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return session;","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" // Session not found, return null or handle the situation as needed.","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" return null;","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" * Finds and returns a set of sessions attended by a specific student.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" * @param student The student for whom to find attended sessions.","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" * @return A set of sessions that the specified student has attended.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public Set\u003cSession\u003e findSessionsByStudent(Person student) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e sessionsAttendedByStudent \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" for (Session session : internalList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" if (session.getStudents().contains(student)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" sessionsAttendedByStudent.add(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" return sessionsAttendedByStudent;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" * Removes a session from the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" * @param toRemove The session to remove.","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" * @throws SessionNotFoundException If the session to remove is not found in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" public void remove(Session toRemove) {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" throw new SessionNotFoundException();","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" * Returns an unmodifiable view of the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" * @return An unmodifiable list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" public ObservableList\u003cSession\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" * Provides an iterator to iterate through the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * @return An iterator for the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" public Iterator\u003cSession\u003e iterator() {","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the list of sessions.","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the sessions in the list.","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"ldinghan"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"ldinghan"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":" return true; // Same object, equal","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionList)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" return false; // Not the same class, not equal","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" SessionList otherList \u003d (SessionList) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" // Check if the lists have the same sessions in the same order","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" return internalList.equals(otherList.internalList);","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":176}},{"path":"src/main/java/seedu/address/model/session/SessionNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":" * Represents a session number, ensuring it adheres to certain constraints.","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" * A valid session number consists of one or more digits and should not be blank.","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"public class SessionNumber {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" \"Session numbers must only contain numbers, and it should not be blank\";","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]\\\\d*$\";","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" public final String sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionNumber with the given session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to create.","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public SessionNumber(String sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" requireNonNull(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" checkArgument(isValidSessionNumber(sessionNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" * Checks whether the provided string is a valid session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * @param test The string to test for validity.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * @return True if the string is a valid session number, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public static boolean isValidSessionNumber(String test) {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * Returns the session number as a string.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * @return The session number as a string.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" return sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Checks whether this SessionNumber is equal to another object.","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionNumber)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" SessionNumber otherSessionNumber \u003d (SessionNumber) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.equals(otherSessionNumber.sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * Returns the hash code of this SessionNumber.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * @return The hash code of the session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" return sessionNumber.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":78}},{"path":"src/main/java/seedu/address/model/session/SessionNumberContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Tests that a {@code Session}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberContainsKeywordsPredicate implements Predicate\u003cSession\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" public SessionNumberContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" public boolean test(Session session) {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" .anyMatch(keyword -\u003e containsSubstringIgnoreCase(","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" session.getSessionNumber().sessionNumber, keyword));","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" private boolean containsSubstringIgnoreCase(String str, String substring) {","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" // Convert both the main string and substring to lowercase for a case-insensitive match","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" String lowerCaseStr \u003d str.toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" String lowerCaseSubstring \u003d substring.toLowerCase();","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" // Check if the main string contains the substring","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" return lowerCaseStr.contains(lowerCaseSubstring);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionNumberContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate otherNumberContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" (SessionNumberContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" return keywords.equals(otherNumberContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" return new ToStringBuilder(this).add(\"session keywords\", keywords).toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":53}},{"path":"src/main/java/seedu/address/model/session/SessionStudents.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * Represents a collection of students in a session. This class provides methods for managing and manipulating","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * the set of students within a session.","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"public class SessionStudents implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" \"Session students must not be null\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" /** The set of students in the session. */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" public final Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * Constructs an empty SessionStudents object.","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public SessionStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with a given set of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * @param students The set of students to initialize the object with.","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Set\u003cPerson\u003e students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" requireNonNull(students);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with a single student.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" requireNonNull(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionStudents object with an array of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" public SessionStudents(Person ...students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" * Adds a student to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public void add(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" * Removes a student from the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" * @param student The student to remove.","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" public void remove(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" this.students.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * Returns a string containing the names of the students in the session, sorted alphabetically.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" * @return A string with student names.","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" public String toStudentNames() {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" List\u003cPerson\u003e studentsArray \u003d new ArrayList\u003c\u003e(students);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" studentsArray.sort(Comparator.comparing(p -\u003e p.getName().toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" StringBuilder studentNames \u003d new StringBuilder();","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" for (Person student : studentsArray) {","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" studentNames.append(String.format(\"%s, \", student.getName()));","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" if (!students.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" studentNames.delete(studentNames.length() - 2, studentNames.length());","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" return studentNames.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" * Creates and returns a new SessionStudents object with the same students as this one.","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" * @return A new SessionStudents object with a copy of the students.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" public SessionStudents getStudents() {","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" SessionStudents anotherSet \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" anotherSet.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" return anotherSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" * Checks if the session contains a specific student.","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" * @param student The student to check for existence.","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" * @return True if the student exists in the session, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"ldinghan"},"content":" public boolean contains(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"ldinghan"},"content":" return students.contains(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"ldinghan"},"content":" * Provides a stream of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"ldinghan"},"content":" * @return A stream of students.","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"ldinghan"},"content":" public Stream\u003cPerson\u003e stream() {","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"ldinghan"},"content":" return students.stream();","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" * Returns the number of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" * @return The number of students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" public int size() {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" return students.size();","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" * Provides an iterator to iterate through the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" * @return An iterator for the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"ldinghan"},"content":" return students.iterator();","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"ldinghan"},"content":" * Returns a string representation of the students in the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"ldinghan"},"content":" * @return A string representation of the students.","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"ldinghan"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"ldinghan"},"content":" return students.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"ldinghan"},"content":" * Checks if this SessionStudents object is equal to another object.","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"ldinghan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"ldinghan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"ldinghan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"ldinghan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"ldinghan"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"ldinghan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"ldinghan"},"content":" if (!(other instanceof SessionStudents)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"ldinghan"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"ldinghan"},"content":" SessionStudents otherSessionStudents \u003d (SessionStudents) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"ldinghan"},"content":" return students.equals(otherSessionStudents.students);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" * Returns the hash code of this SessionStudents object.","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" * @return The hash code of the session students.","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" return students.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":196}},{"path":"src/main/java/seedu/address/model/session/exceptions/DuplicateSessionException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":" * Exception to indicate that an operation would result in duplicate sessions in the session list.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"public class DuplicateSessionException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Constructs a DuplicateSessionException with a default error message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" public DuplicateSessionException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" super(\"Operation would result in duplicate sessions\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" // You can also add additional constructors or methods if needed","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":16}},{"path":"src/main/java/seedu/address/model/session/exceptions/SessionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session.exceptions;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":" * Exception to indicate that a requested session was not found in the session list.","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"public class SessionNotFoundException extends RuntimeException {","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionNotFoundException with a default error message.","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" public SessionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" super(\"Session not found\");","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" // You can also add additional constructors or methods if needed","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":16}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Represents a Task in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class Task {","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" // Identity fields","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" private final TaskName taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // Data fields","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private final TaskDescription taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private final boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final TaskPriority priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Creates a new task with the given name, description, and completion status.","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" * @param taskName The name of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" * @param taskDescription The description of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public Task(TaskName taskName, TaskDescription taskDescription, boolean isDone, TaskPriority priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(taskName, taskDescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" * Creates a new task with the given name and description.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * This task is initially marked as not done.","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" * @param taskName The name of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" * @param taskDescription The description of the task. Must not be null.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public Task(TaskName taskName, TaskDescription taskDescription, TaskPriority priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(taskName, taskDescription);","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" public TaskName getName() {","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" return taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" return taskDescription;","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" return isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public TaskPriority getPriority() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" return priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * Returns true if both tasks have the same name and description.","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" return otherTask !\u003d null","lastModifiedDate":"2023-09-27"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 otherTask.getName().equals(getName())","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 otherTask.getDescription().equals(getDescription());","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" * Returns true if both tasks have the same identity and data fields.","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" return taskName.equals(otherTask.taskName)","lastModifiedDate":"2023-09-27"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 taskDescription.equals(otherTask.taskDescription);","lastModifiedDate":"2023-09-27"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" return Objects.hash(taskName, taskDescription, isDone, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" .add(\"name\", taskName)","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" .add(\"description\", taskDescription)","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" .add(\"isDone\", isDone)","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" .toString();","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":118}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"public class TaskDescription {","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Description should not only consist of whitespace\";","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s+$).*$\";","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public final String description;","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" * @param description A valid description.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public TaskDescription(String description) {","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" requireNonNull(description);","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" return description.equals(otherTaskDescription.description);","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" return description.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" * Format state as text for viewing.","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" return description.equals(\"\") ? \"No Description Provided\" : description;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":63}},{"path":"src/main/java/seedu/address/model/task/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * A list of tasks that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * A task is considered unique by comparing using {@code Task#isSameTask(Task)}. As such, adding and updating of","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * tasks uses Task#isSameTask(Task) for equality so as to ensure that the task being added or updated is","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * unique in terms of identity in the TaskList. However, the removal of a task uses Task#equals(Object) so","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" * as to ensure that the task with exactly the same fields will be removed.","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * @see Task#isSameTask(Task)","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" return internalList.stream().anyMatch(toCheck::isSameTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * Returns the task at the given index.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" if (index \u003e\u003d internalList.size()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" throw new IllegalArgumentException(\"Index is out of bounds\");","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" return internalList.get(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" * The task must not already exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void add(Task toAdd) {","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" public void editTask(Task target, Task editedTask) {","lastModifiedDate":"2023-09-27"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-09-27"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-27"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2023-09-27"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" if (!target.isSameTask(editedTask) \u0026\u0026 contains(editedTask)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2023-09-27"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" * The task must exist in the list.","lastModifiedDate":"2023-09-27"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2023-09-27"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-09-27"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2023-09-27"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" public void setTasks(TaskList replacement) {","lastModifiedDate":"2023-09-27"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-09-27"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" * Replaces the contents of this list with {@code tasks}.","lastModifiedDate":"2023-09-27"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2023-09-27"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" requireAllNonNull(tasks);","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" if (!tasksAreUnique(tasks)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2023-09-27"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-09-27"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-09-27"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" return internalList.iterator();","lastModifiedDate":"2023-09-27"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" TaskList otherUniquePersonList \u003d (TaskList) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-09-27"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" return internalList.toString();","lastModifiedDate":"2023-09-27"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" * Returns true if {@code tasks} contains only unique tasks.","lastModifiedDate":"2023-09-27"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" private boolean tasksAreUnique(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-27"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" for (int i \u003d 0; i \u003c tasks.size() - 1; i++) {","lastModifiedDate":"2023-09-27"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" for (int j \u003d i + 1; j \u003c tasks.size(); j++) {","lastModifiedDate":"2023-09-27"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" if (tasks.get(i).isSameTask(tasks.get(j))) {","lastModifiedDate":"2023-09-27"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":161}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"public class TaskName {","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" \"Task Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * The task names should ony consist of letters (both uppercase and lowercase),","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * digits, spaces, underscores, and hyphens","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?\u003d.*[A-Za-z0-9_-])[-A-Za-z0-9\\\\s_-]*$\";","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public final String taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" * @param name A valid name.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" public TaskName(String name) {","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" taskName \u003d name;","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-09-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" return taskName;","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-27"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-09-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2023-09-27"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2023-09-27"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-27"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-27"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" return taskName.hashCode();","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":67}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * Tests that a {@code Task}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public boolean test(Task task) {","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().taskName, keyword));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" return true;","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" return false;","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" return new ToStringBuilder(this).add(\"task keywords\", keywords).toString();","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":45}},{"path":"src/main/java/seedu/address/model/task/TaskPriority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Enum representing the priority levels of tasks.","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public enum TaskPriority {","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" * Priority levels","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" LOW, MEDIUM, HIGH;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * A constant message indicating the constraints for valid task priorities.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"TaskPriority should only be low, medium, or high\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":17}},{"path":"src/main/java/seedu/address/model/task/exceptions/DuplicateTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Signals that the operation will result in duplicate Tasks (Tasks are considered duplicates if they have the same","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" * identity).","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class DuplicateTaskException extends RuntimeException {","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public DuplicateTaskException() {","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(\"Operation would result in duplicate tasks\");","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":11}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class TaskNotFoundException extends RuntimeException {}","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"Respirayson":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_1 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:- | Reading Assessment 2:- | MidTerms:3 | Finals:4 | Practical Exam:5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_2 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:100 | Reading Assessment 2:100 | MidTerms:100 | Finals:100 | Practical Exam:100\";","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_ALEX \u003d new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"friends\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_BERNICE \u003d new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"colleagues\", \"friends\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_CHARLOTTE \u003d new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"neighbours\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_DAVID \u003d new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"family\"), getGradedTestSet(VALID_GRADED_TEST_1));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_IRFAN \u003d new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"classmates\"), getGradedTestSet(VALID_GRADED_TEST_2));","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public static final Person PERSON_ROY \u003d new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" getTagSet(\"colleagues\"), getGradedTestSet(VALID_GRADED_TEST_2));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" return new Person[] { PERSON_ALEX, PERSON_BERNICE, PERSON_CHARLOTTE, PERSON_DAVID, PERSON_IRFAN, PERSON_ROY };","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" return new Task[] {","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do 2103T\"), new TaskDescription(\"Homework assignment\"), TaskPriority.HIGH),","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do cs2101\"), new TaskDescription(\"Practice script\"), TaskPriority.HIGH),","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" new Task(new TaskName(\"Do cs2100\"), new TaskDescription(\"Remember mips\"), TaskPriority.HIGH)","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" };","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public static Consultation[] getSampleConsultations() {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" return new Consultation[] { new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"11/11/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"11:11\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_ALEX, PERSON_BERNICE)","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" ), new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"01/11/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"10:00\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_ALEX)","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" ), new Consultation(","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" LocalDate.parse(\"11/12/2023\", dateFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" LocalTime.parse(\"15:00\", timeFormatter),","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" SampleDataUtil.getStudentSet(PERSON_DAVID, PERSON_IRFAN, PERSON_ROY)","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" ),","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" };","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" public static Session[] getSampleSessions() {","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" return new Session[] {","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" new Session(new SessionNumber(\"1\"), new SessionStudents(getSamplePersons())),","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" new Session(new SessionNumber(\"2\"), new SessionStudents(getSamplePersons()))","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" };","lastModifiedDate":"2023-09-28"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public static GradedTest[] getSampleGradedTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" return new GradedTest[] {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" new GradedTest(new ReadingAssessment(\"1\"), new ReadingAssessment(\"2\"),","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" new MidTerms(\"3\"), new Finals(\"4\"), new PracticalExam(\"5\"))","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" public static ReadOnlyTaskList getSampleTaskList() {","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" TaskListBook sampleTl \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" sampleTl.addTask(sampleTask);","lastModifiedDate":"2023-09-28"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" return sampleTl;","lastModifiedDate":"2023-09-28"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public static ReadOnlyConsultationList getSampleConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook sampleClb \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" for (Consultation sampleConsultation : getSampleConsultations()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" sampleClb.addConsultation(sampleConsultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" return sampleClb;","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"ldinghan"},"content":" public static ReadOnlySessionList getSampleSessionList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"ldinghan"},"content":" SessionListBook sampleSl \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"ldinghan"},"content":" for (Session sampleSession : getSampleSessions()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"ldinghan"},"content":" sampleSl.addSession(sampleSession);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" return sampleSl;","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" * Returns a student set containing the list of person given.","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cPerson\u003e getStudentSet(Person ... students) {","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(students)","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" * Returns a names set containing the list of string names given.","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cName\u003e getNamesSet(String ... names) {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(names)","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" .map(Name::new)","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" public static ReadOnlyGradedTestList getSampleGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook sampleTl \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" for (GradedTest sampleGradedTest : getSampleGradedTest()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" sampleTl.addGradedTest(sampleGradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" return sampleTl;","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" * Returns a gradedTest set containing the list of strings given.","lastModifiedDate":"2023-10-13"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public static Set\u003cGradedTest\u003e getGradedTestSet(String... strings) {","lastModifiedDate":"2023-10-13"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-13"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" .map(GradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ldinghan":17,"Respirayson":23,"raydenlim":105,"-":44}},{"path":"src/main/java/seedu/address/storage/ConsultationListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" * Represents a storage for {@link seedu.address.model.ConsultationListBook}.","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"public interface ConsultationListStorage {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" * @return The file path of the data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" Path getConsultationListFilePath();","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" * Reads the consultation list data from the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlyConsultationList},","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" * Reads the consultation list data from the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlyConsultationList},","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" * Saves the consultation list data to the default file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The {@link ReadOnlyConsultationList} to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Saves the consultation list data to the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The {@link ReadOnlyConsultationList} to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path to which the data should be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":55}},{"path":"src/main/java/seedu/address/storage/GradedTestListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * Represents a storage for {@link seedu.address.model.GradedTestListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"public interface GradedTestListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" Path getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" * Returns GradedTest data as a {@link ReadOnlyGradedTestList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * @see #getGradedTestListFilePath()","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" * Saves the given {@link ReadOnlyGradedTestList} to the storage.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" * @param gradedTestList cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" * @see #saveGradedTestList(ReadOnlyGradedTestList, Path)","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAssignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" * Jackson-friendly version of {@link Assignment}.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"public class JsonAdaptedAssignment {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Assignment\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" private final String assignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" private final String grade;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" * Constructs a {@code JsonAdaptedAssignment} with the given person details.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" @JsonCreator","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" public JsonAdaptedAssignment(@JsonProperty(\"assignmentName\") String assignmentName,","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" @JsonProperty(\"grade\") String grade) {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" this.grade \u003d grade;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" * Converts a given {@code Assignment} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public JsonAdaptedAssignment(Assignment source) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" assignmentName \u003d source.name();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" grade \u003d source.gradeToString();","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" * Converts this Jackson-friendly adapted assignment object into the model\u0027s {@code Assignment} object.","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted assignment.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" public Assignment toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" if (assignmentName \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" AssignmentName.class.getSimpleName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" final AssignmentName modelName \u003d new AssignmentName(assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" if (grade \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" // Add valid grade checker later","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" final Grade modelGrade;","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" if (grade.startsWith(\"UNGRADED/\")) {","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" String maxGradeString \u003d grade.substring(9);","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" modelGrade \u003d new Grade(maxGradeString);","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" String[] arrOfGradeStrings \u003d grade.split(\"/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" String actualGradeString \u003d arrOfGradeStrings[0];","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" String maxGradeString \u003d arrOfGradeStrings[1];","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" modelGrade \u003d new Grade(actualGradeString, maxGradeString);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" return new Assignment(modelName, modelGrade);","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":71}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedConsultation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" * Jackson-friendly version of {@link Consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"public class JsonAdaptedConsultation {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" private final String date;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" private final String time;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" * * Constructs a {@code JsonAdaptedConsultation} with the given consultation details.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public JsonAdaptedConsultation(@JsonProperty(\"date\") String date, @JsonProperty(\"time\") String time,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" this.date \u003d date;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" this.time \u003d time;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" this.students.addAll(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" * Converts a given {@code Consultation} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" public JsonAdaptedConsultation(Consultation source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" date \u003d source.getDate().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" time \u003d source.getTime().toString();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * Converts this Jackson-friendly adapted consultation object into the model\u0027s {@code Consultation} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" * @throws DateTimeParseException if there were date and time format constraints violated in the adapted","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" * consultation.","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public Consultation toModelType() throws DateTimeParseException, IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" // TODO check for invalid values of date and time","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" LocalDate formattedDate \u003d LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" LocalTime formattedTime \u003d LocalTime.parse(time, timeFormatter);","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" final List\u003cPerson\u003e studentsList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" for (JsonAdaptedPerson student : students) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" studentsList.add(student.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" final Set\u003cPerson\u003e studentSet \u003d new HashSet\u003c\u003e(studentsList);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" return new Consultation(formattedDate, formattedTime, studentSet);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":75}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGradedTest.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" * Jackson-friendly version of {@link GradedTest}.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"class JsonAdaptedGradedTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"GradedTest\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private final String readingAssessment1;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private final String readingAssessment2;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private final String midTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final String finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private final String practicalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code JsonAdaptedGradedTest} with the given gradedTest details","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedGradedTest(@JsonProperty(\"Reading Assessment 1\") String readingAssessment1,","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Reading Assessment 2\") String readingAssessment2,","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"MidTerms\") String midTerms,","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Finals\") String finals,","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"Practical Exam\") String practicalExam) {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment1 \u003d readingAssessment1;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" this.readingAssessment2 \u003d readingAssessment2;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" this.midTerms \u003d midTerms;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d finals;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" this.practicalExam \u003d practicalExam;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" * Converts a given {@code GradedTest} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedGradedTest(GradedTest source) {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" readingAssessment1 \u003d source.getRA1().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" readingAssessment2 \u003d source.getRA2().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" midTerms \u003d source.getMidTerms().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" finals \u003d source.getFinals().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" practicalExam \u003d source.getPracticalExam().value;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code GradedTest} object.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted gradedTest.","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public GradedTest toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" if (readingAssessment1 \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(readingAssessment1)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" final ReadingAssessment modelRA1 \u003d new ReadingAssessment(readingAssessment1);","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" if (readingAssessment2 \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" if (!ReadingAssessment.isValidRaResult(readingAssessment2)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(ReadingAssessment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" final ReadingAssessment modelRA2 \u003d new ReadingAssessment(readingAssessment2);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" if (midTerms \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" MidTerms.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" if (!MidTerms.isValidMidTermResult(midTerms)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(MidTerms.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" final MidTerms modelMidTerms \u003d new MidTerms(midTerms);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" if (finals \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" Finals.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" if (!Finals.isValidFinalsResult(finals)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(Finals.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" final Finals modelFinals \u003d new Finals(finals);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" if (practicalExam \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" PracticalExam.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" if (!PracticalExam.isValidPeResult(practicalExam)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(PracticalExam.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" final PracticalExam modelPE \u003d new PracticalExam(practicalExam);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(modelRA1, modelRA2, modelMidTerms, modelFinals, modelPE);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"raydenlim":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Assignment;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" private final List\u003cJsonAdaptedGradedTest\u003e gradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" private final JsonSerializableAssignmentMap assignmentMap;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"assignmentMap\") JsonSerializableAssignmentMap assignmentMap,","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" @JsonProperty(\"gradedTests\") List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" if (gradedTests !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" this.assignmentMap \u003d assignmentMap;","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public JsonAdaptedPerson(String name, String phone, String email, String address, List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" String assignmentName \u003d AssignmentInitialise.getAssignmentName(i).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" String assignmentGrade \u003d AssignmentInitialise.getAssignmentMaxGrade(i).toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" jsonMap.put(assignmentName, new JsonAdaptedAssignment(assignmentName, assignmentGrade));","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" this.assignmentMap \u003d new JsonSerializableAssignmentMap(jsonMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" Assignment assignment \u003d source.getAllAssignments().get(assignmentName);","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" jsonMap.put(assignmentName.toString(),","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" new JsonAdaptedAssignment(assignment));","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" this.assignmentMap \u003d new JsonSerializableAssignmentMap(jsonMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" gradedTests.addAll(source.getGradedTest().stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" .map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" final List\u003cGradedTest\u003e personGradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" for (JsonAdaptedGradedTest gradedTest : gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" personGradedTests.add(gradedTest.toModelType());","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" final Set\u003cGradedTest\u003e modelGradedTests \u003d new HashSet\u003c\u003e(personGradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"Originalidk"},"content":" final AssignmentMap assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cString, JsonAdaptedAssignment\u003e jsonMap \u003d assignmentMap.getAssignments();","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"Originalidk"},"content":" HashMap\u003cAssignmentName, Assignment\u003e actualMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"Originalidk"},"content":" Assignment assignment \u003d jsonMap.get(assignmentName.toString()).toModelType();","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"Originalidk"},"content":" actualMap.put(assignmentName, assignment);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"Originalidk"},"content":" assignments.setAssignmentMap(actualMap);","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, assignments, modelGradedTests);","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"raydenlim":24,"Originalidk":32,"-":117}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSession.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * Jackson-friendly version of {@link Session}.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"public class JsonAdaptedSession {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final String sessionNumber;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * Constructs a {@code JsonAdaptedSession} with the given {@code sessionInfo}.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public JsonAdaptedSession(@JsonProperty(\"sessionNumber\") String sessionNumber,","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" this.students.addAll(students);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" * Converts a given {@code Session} into this class for Jackson use.","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" public JsonAdaptedSession(Session source) {","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d source.getSessionNumber().toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" if (source.getStudents() !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" * Converts this Jackson-friendly adapted session object into the model\u0027s {@code Session} object.","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted session.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public Session toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" if (sessionNumber \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" throw new IllegalValueException(SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" final SessionNumber modelSessionNumber \u003d new SessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" final List\u003cPerson\u003e studentsList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" if (students !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" for (JsonAdaptedPerson student : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" studentsList.add(student.toModelType());","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" final Set\u003cPerson\u003e studentSet \u003d new HashSet\u003c\u003e(studentsList);","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" sessionStudents \u003d new SessionStudents(studentSet);","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" return new Session(modelSessionNumber, sessionStudents);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":74}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"class JsonAdaptedTask {","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private final String name;","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private final String description;","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private final String priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given task details.","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" @JsonCreator","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" public JsonAdaptedTask(@JsonProperty(\"name\") String name, @JsonProperty(\"description\") String description,","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" @JsonProperty(\"isDone\") boolean isDone, @JsonProperty(\"priority\") String priority) {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" name \u003d source.getName().taskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" isDone \u003d source.getIsDone();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted task.","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" if (!TaskName.isValidName(name)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" final TaskName modelName \u003d new TaskName(name);","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" if (!TaskDescription.isValidDescription(description)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-28"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" final TaskDescription modelDescription \u003d new TaskDescription(description);","lastModifiedDate":"2023-09-28"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" final TaskPriority modelPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" TaskPriority.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" modelPriority \u003d TaskPriority.valueOf(priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" return new Task(modelName, modelDescription, isDone, modelPriority);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":84}},{"path":"src/main/java/seedu/address/storage/JsonConsultationListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" * A class to access ConsultationList data stored as a JSON file on the hard disk.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"public class JsonConsultationListStorage implements ConsultationListStorage {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonConsultationListStorage.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private Path filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Constructs a JsonConsultationListStorage with the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path for storing the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public JsonConsultationListStorage(Path filePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * Returns the file path of the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" * @return The file path of the ConsultationList data.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" return filePath;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * Reads the ConsultationList data from the file specified during construction.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read ConsultationList data, or an empty","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" * Optional if the file does not exist.","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data or the","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" * data does not conform to the expected format.","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException {","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return readConsultationList(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" * Reads the ConsultationList data from the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path to read the ConsultationList data from.","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" * @return An {@link Optional} containing the read ConsultationList data,","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" * or an empty Optional if the file does not exist.","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" * @throws DataLoadingException If there is an error reading the data or","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" * the data does not conform to the expected format.","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" Optional\u003cJsonSerializableConsultationList\u003e jsonConsultationList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" filePath, JsonSerializableConsultationList.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" if (!jsonConsultationList.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" return Optional.of(jsonConsultationList.get().toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + e.getMessage());","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" * Saves the given ConsultationList data to the file specified during construction.","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The ConsultationList data to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" saveConsultationList(consultationList, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" * Saves the given ConsultationList data to the specified file path.","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" * @param consultationList The ConsultationList data to be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" * @param filePath The file path where the data should be saved.","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"wesho1107"},"content":" requireAllNonNull(consultationList, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"wesho1107"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"wesho1107"},"content":" JsonUtil.saveJsonFile(new JsonSerializableConsultationList(consultationList), filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":109}},{"path":"src/main/java/seedu/address/storage/JsonGradedTestListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * A class to access GradedTestList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"public class JsonGradedTestListStorage implements GradedTestListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonGradedTestListStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" public JsonGradedTestListStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" return readGradedTestList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" * Similar to {@link #readGradedTestList()}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" Optional\u003cJsonSerializableGradedTestList\u003e jsonGradedTestList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" filePath, JsonSerializableGradedTestList.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" if (!jsonGradedTestList.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" return Optional.of(jsonGradedTestList.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(gradedTestList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" * Similar to {@link #saveGradedTestList(ReadOnlyGradedTestList)}.","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" requireNonNull(gradedTestList);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" JsonUtil.saveJsonFile(new JsonSerializableGradedTestList(gradedTestList), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":78}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAssignmentMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ReadOnlyAssignmentMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.initialise.AssignmentInitialise;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" * An Immutable AssignmentMap that is serializable to JSON format.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"@JsonRootName(\"assignmentMap\")","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"public class JsonSerializableAssignmentMap {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" private final HashMap\u003cString, JsonAdaptedAssignment\u003e assignments;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" * Constructs a {@code JsonSerializableAssignmentMap} with the given persons.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" @JsonCreator","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public JsonSerializableAssignmentMap(","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" @JsonProperty(\"assignments\") HashMap\u003cString, JsonAdaptedAssignment\u003e assignments) {","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d assignments;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" * Converts a given {@code ReadOnlyAssignmentMap} into this class for Jackson use.","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAssignmentMap}.","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public JsonSerializableAssignmentMap(ReadOnlyAssignmentMap source) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" this.assignments \u003d new HashMap\u003cString, JsonAdaptedAssignment\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c AssignmentInitialise.size(); i++) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d AssignmentInitialise.getAssignmentName(i);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" JsonAdaptedAssignment assignmentToBeAdded \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" new JsonAdaptedAssignment(source.getAssignmentMap().get(assignmentName));","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" this.assignments.put(assignmentName.toString(), assignmentToBeAdded);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" public HashMap\u003cString, JsonAdaptedAssignment\u003e getAssignments() {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" return this.assignments;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"Originalidk":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableConsultationList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" * An Immutable ConsultationList that is serializable to JSON format.","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"@JsonRootName(value \u003d \"consultationlist\")","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"public class JsonSerializableConsultationList {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public static final String MESSAGE_DUPLICATE_CONSULTATION \u003d \"Consultation list contains duplicate consultation(s).\";","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private final List\u003cJsonAdaptedConsultation\u003e consultations \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" @JsonCreator","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public JsonSerializableConsultationList(@JsonProperty(\"consultations\")","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" List\u003cJsonAdaptedConsultation\u003e consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.consultations.addAll(consultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * Converts a given {@code ReadOnlyConsultationList} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableConsultationList}.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public JsonSerializableConsultationList(ReadOnlyConsultationList source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" consultations.addAll(source.getConsultationList().stream().map(JsonAdaptedConsultation::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" * Converts this consultation list into the model\u0027s {@code ConsultationListBook} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" public ConsultationListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" for (JsonAdaptedConsultation jsonAdaptedConsultation : consultations) {","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" Consultation consultation \u003d jsonAdaptedConsultation.toModelType();","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" if (consultationList.hasConsultation(consultation)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CONSULTATION);","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" consultationList.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" return consultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":58}},{"path":"src/main/java/seedu/address/storage/JsonSerializableGradedTestList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"@JsonRootName(value \u003d \"gradedtestlist\")","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"class JsonSerializableGradedTestList {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public static final String MESSAGE_DUPLICATE_GRADED_TEST \u003d \"Graded list contains duplicate gradedTest(s).\";","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private final List\u003cJsonAdaptedGradedTest\u003e gradedTests \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" * Constructs a {@code JsonSerializableGradedTestList} with the given gradedTest.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public JsonSerializableGradedTestList(@JsonProperty(\"gradedTests\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" List\u003cJsonAdaptedGradedTest\u003e gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" this.gradedTests.addAll(gradedTests);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" * Converts a given {@code ReadOnlyGradedTestList} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableGradedTestList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" public JsonSerializableGradedTestList(ReadOnlyGradedTestList source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" gradedTests.addAll(source.getGradedTestList().stream().map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" * Converts this gradedTest list into the model\u0027s {@code GradedTestListBook} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" public GradedTestListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" for (JsonAdaptedGradedTest jsonAdaptedGradedTest : gradedTests) {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTest \u003d jsonAdaptedGradedTest.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" if (gradedTestList.hasGradedTest(gradedTest)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GRADED_TEST);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(gradedTest);","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" return gradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":62}},{"path":"src/main/java/seedu/address/storage/JsonSerializableSessionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * An Immutable SessionList that is serializable to JSON format.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"@JsonRootName(value \u003d \"sessionlist\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class JsonSerializableSessionList {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public static final String MESSAGE_DUPLICATE_SESSION \u003d \"Session list contains duplicate session(s).\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final List\u003cJsonAdaptedSession\u003e sessions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" @JsonCreator","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" public JsonSerializableSessionList(@JsonProperty(\"sessions\") List\u003cJsonAdaptedSession\u003e sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" this.sessions.addAll(sessions);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" * Converts a given {@code ReadOnlySessionList} into this class for Jackson use.","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableSessionList}.","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public JsonSerializableSessionList(ReadOnlySessionList source) {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" sessions.addAll(source.getSessionList().stream().map(JsonAdaptedSession::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * Converts this session list into the model\u0027s {@code SessionListBook} object.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public SessionListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" for (JsonAdaptedSession jsonAdaptedSession : sessions) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" Session session \u003d jsonAdaptedSession.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" if (sessionList.hasSession(session)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_SESSION);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" return sessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":56}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given tasks.","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" @JsonCreator","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * Converts a given {@code ReadOnlyTaskList} into this class for Jackson use.","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableTaskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public JsonSerializableTaskList(ReadOnlyTaskList source) {","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" * Converts this task list into the model\u0027s {@code TaskListBook} object.","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" public TaskListBook toModelType() throws IllegalValueException {","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskList \u003d new TaskListBook();","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" return taskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/main/java/seedu/address/storage/JsonSessionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" * A class to access SessionList data stored as a JSON file on the hard disk.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"public class JsonSessionListStorage implements SessionListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonSessionListStorage.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private Path filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Constructs a JsonSessionListStorage with the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path for storing the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public JsonSessionListStorage(Path filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * Returns the file path of the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" * @return The file path of the SessionList data.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" return filePath;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * Reads the SessionList data from the file specified during construction.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read SessionList data, or an empty","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * Optional if the file does not exist.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data or the","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * data does not conform to the expected format.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" return readSessionList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" * Reads the SessionList data from the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path to read the SessionList data from.","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read SessionList data,","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * or an empty Optional if the file does not exist.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data or","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" * the data does not conform to the expected format.","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Optional\u003cJsonSerializableSessionList\u003e jsonSessionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" filePath, JsonSerializableSessionList.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" if (!jsonSessionList.isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" return Optional.of(jsonSessionList.get().toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + e.getMessage());","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" * Saves the given SessionList data to the file specified during construction.","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The SessionList data to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" saveSessionList(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Saves the given SessionList data to the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The SessionList data to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path where the data should be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error saving the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" requireAllNonNull(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" JsonUtil.saveJsonFile(new JsonSerializableSessionList(sessionList), filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":106}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private Path filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" return filePath;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" return readTaskList(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-09-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" return Optional.empty();","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2023-09-28"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-09-28"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-09-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-09-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" * Similar to {@link #saveTaskList(ReadOnlyTaskList)}.","lastModifiedDate":"2023-09-28"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" requireNonNull(taskList);","lastModifiedDate":"2023-09-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":80}},{"path":"src/main/java/seedu/address/storage/SessionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" * Represents a storage for {@link seedu.address.model.SessionListBook}.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"public interface SessionListStorage {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" * @return The file path of the data file.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" Path getSessionListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" * Reads the session list data from the default file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlySessionList},","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" * Reads the session list data from the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path from which to read the session list data.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" * @return An {@link Optional} containing the read {@link ReadOnlySessionList},","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" * or an empty {@link Optional} if no data is found.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * @throws DataLoadingException If there is an error reading the data from the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" * Saves the session list data to the default file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The {@link ReadOnlySessionList} to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * Saves the session list data to the specified file path.","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The {@link ReadOnlySessionList} to be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * @param filePath The file path to which the data should be saved.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" * @throws IOException If there is an error writing the data to the file.","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":56}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" TaskListStorage, SessionListStorage, ConsultationListStorage, GradedTestListStorage {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" void saveSessionList(ReadOnlySessionList sessionList) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ldinghan":7,"Respirayson":6,"raydenlim":17,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" private GradedTestListStorage gradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" private SessionListStorage sessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private ConsultationListStorage consultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage}, {@code UserPrefStorage},","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" * {@code TaskListStorage}, {@code SessionListStorage} and {@code ConsultationListStorage}.","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" public StorageManager(AddressBookStorage addressBookStorage,","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" UserPrefsStorage userPrefsStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" SessionListStorage sessionListStorage, ConsultationListStorage consultationListStorage,","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" GradedTestListStorage gradedTestListStorage) {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" this.sessionListStorage \u003d sessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" this.consultationListStorage \u003d consultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" this.gradedTestListStorage \u003d gradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d SessionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" public Path getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" return sessionListStorage.getSessionListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" return readSessionList(sessionListStorage.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" public Optional\u003cReadOnlySessionList\u003e readSessionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" return sessionListStorage.readSessionList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" saveSessionList(sessionList, sessionListStorage.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList(ReadOnlySessionList sessionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" sessionListStorage.saveSessionList(sessionList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ConsultationList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" public Path getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" return consultationListStorage.getConsultationListFilePath();","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList() throws DataLoadingException {","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" return readConsultationList(consultationListStorage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyConsultationList\u003e readConsultationList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" return consultationListStorage.readConsultationList(filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList) throws IOException {","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" saveConsultationList(consultationList, consultationListStorage.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" public void saveConsultationList(ReadOnlyConsultationList consultationList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" consultationListStorage.saveConsultationList(consultationList, filePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-09-28"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2023-09-28"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" public Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-09-28"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":172,"author":{"gitId":"Respirayson"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2023-09-28"},{"lineNumber":173,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":174,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":175,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-09-28"},{"lineNumber":176,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2023-09-28"},{"lineNumber":177,"author":{"gitId":"Respirayson"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":178,"author":{"gitId":"Respirayson"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2023-09-28"},{"lineNumber":179,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-09-28"},{"lineNumber":180,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GradedTest methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" return gradedTestListStorage.getGradedTestListFilePath();","lastModifiedDate":"2023-10-15"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" return readGradedTestList(gradedTestListStorage.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" public Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" return gradedTestListStorage.readGradedTestList(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(gradedTestList, gradedTestListStorage.getGradedTestListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" gradedTestListStorage.saveGradedTestList(gradedTestList, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":31,"Respirayson":34,"raydenlim":68,"-":76}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-09-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * Represents a storage for {@link seedu.address.model.TaskListBook}.","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public interface TaskListStorage {","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" * Returns TaskList data as a {@link ReadOnlyTaskList}.","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" Optional\u003cReadOnlyTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" * Saves the given {@link ReadOnlyTaskList} to the storage.","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-09-28"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-09-28"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" * @see #saveTaskList(ReadOnlyTaskList)","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-09-28"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" void saveTaskList(ReadOnlyTaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2023-09-28"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"Respirayson":45}},{"path":"src/main/java/seedu/address/ui/ConsultationCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * A UI component that displays information of a {@code Consultation}.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private static final String FXML \u003d \"ConsultationListCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public final Consultation consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private Label id;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private Label date;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" private Label time;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" private FlowPane students;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationCard} with the given {@code Consultation} and index to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public ConsultationCard(Consultation consultation, int displayedIndex) {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" this.consultation \u003d consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" date.setText(consultation.getDate().toString() + \", \");","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" time.setText(consultation.getTime().toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" consultation.getStudents().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" .sorted(Comparator.comparing(student -\u003e student.getName().fullName))","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.getName().fullName)));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":43}},{"path":"src/main/java/seedu/address/ui/ConsultationListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" * Panel containing the list of consultations","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" private static final String FXML \u003d \"ConsultationListPanel.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ConsultationListPanel.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" private ListView\u003cConsultation\u003e consultationListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationListPanel} with the given {@code ObservableList}","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public ConsultationListPanel(ObservableList\u003cConsultation\u003e consultationList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" consultationListView.setItems(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" consultationListView.setCellFactory(listView -\u003e new ConsultationListViewCell());","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Consultation} using a {@code ConsultationCard}.","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" class ConsultationListViewCell extends ListCell\u003cConsultation\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" protected void updateItem(Consultation consultation, boolean empty) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" super.updateItem(consultation, empty);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" if (empty || consultation \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" setText(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" setGraphic(new ConsultationCard(consultation, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" private ConsultationListPanel consultationListPanel;","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private SessionListPanel sessionListPanel;","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" private StackPane consultationListPanelPlaceholder;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" private StackPane sessionListPanelPlaceholder;","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"wesho1107"},"content":" consultationListPanel \u003d new ConsultationListPanel(logic.getFilteredConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"wesho1107"},"content":" consultationListPanelPlaceholder.getChildren().add(consultationListPanel.getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" sessionListPanel \u003d new SessionListPanel(logic.getFilteredSessionList());","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" sessionListPanelPlaceholder.getChildren().add(sessionListPanel.getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":213,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"ldinghan":7,"Respirayson":7,"-":196,"wesho1107":7}},{"path":"src/main/java/seedu/address/ui/SessionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" * Represents a UI component that displays information about a session in the user interface.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"public class SessionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" private static final String FXML \u003d \"SessionListCard.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" /** The session associated with this card. */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" public final Session session;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" private Label sessionNumberLabel;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private Label studentListLabel;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Creates a `SessionCard` object to display information about a session.","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param session The session to display information about.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public SessionCard(Session session) {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" this.session \u003d session;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" sessionNumberLabel.setText(session.getSessionNumber() + \". \");","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" studentListLabel.setText(session.getStudents().toStudentNames());","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":36}},{"path":"src/main/java/seedu/address/ui/SessionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" * Represents a UI component that displays a list of sessions in the user interface.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class SessionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" private static final String FXML \u003d \"SessionListPanel.fxml\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(SessionListPanel.class);","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" @FXML","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private ListView\u003cSession\u003e sessionListView;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" * Creates a `SessionListPanel` with the given `ObservableList` of sessions.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * @param sessionList The list of sessions to display.","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public SessionListPanel(ObservableList\u003cSession\u003e sessionList) {","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" super(FXML);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" sessionListView.setItems(sessionList);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" sessionListView.setCellFactory(listView -\u003e new SessionListViewCell());","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * Custom `ListCell` that displays the graphics of a `Session` using a `SessionCard`.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" class SessionListViewCell extends ListCell\u003cSession\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" protected void updateItem(Session session, boolean empty) {","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" super.updateItem(session, empty);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" if (empty || session \u003d\u003d null) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" setText(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" } else {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" setGraphic(new SessionCard(session).getRoot());","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":51}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * A UI component that displays information of a {@code Task}.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public final Task task;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private Text name;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" private Label id;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" private Text description;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" private Text priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskCard} with the given {@code Task} and index to display.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" this.task \u003d task;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" description.setText(task.getDescription().description);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" priority.setText(task.getPriority().name());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" switch(task.getPriority()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" case LOW:","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: green\");","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" case MEDIUM:","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: yellow\");","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" case HIGH:","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: red\");","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" default:","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" priority.setStyle(\"-fx-fill: white\");","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" name.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" description.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" priority.setStrikethrough(task.getIsDone());","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskCard}.","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" setText(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":49}},{"path":"src/main/resources/view/ConsultationListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"date\" text\u003d\"\\$date\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" \u003cLabel fx:id\u003d\"time\" text\u003d\"\\$time\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" \u003cFlowPane fx:id\u003d\"students\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":39}},{"path":"src/main/resources/view/ConsultationListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" \u003cListView fx:id\u003d\"consultationListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"wesho1107"},"content":"#tags, #students {","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"wesho1107"},"content":"#tags .label, #students .label {","lastModifiedDate":"2023-10-19"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"-":350,"wesho1107":2}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background: #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":".section-label {","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" -fx-padding: 10px;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":6,"-":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" title\u003d\"Address App\" minWidth\u003d\"600\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" \u003cHBox styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" \u003cLabel text\u003d\"Person List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" \u003cLabel text\u003d\"Task List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"taskListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"consultationList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" \u003cLabel text\u003d\"Consultation List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"consultationListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" \u003cVBox fx:id\u003d\"sessionList\" minWidth\u003d\"300\" prefWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" \u003cLabel text\u003d\"Session List\" maxWidth\u003d\"Infinity\" wrapText\u003d\"true\" styleClass\u003d\"section-label\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"sessionListPanelPlaceholder\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"ldinghan":4,"Respirayson":9,"raydenlim":9,"-":55}},{"path":"src/main/resources/view/SessionListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"\u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"sessionNumberLabel\" text\u003d\"\\$sessionNumberLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" \u003cLabel fx:id\u003d\"studentListLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentListLabel\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":34}},{"path":"src/main/resources/view/SessionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"\u003cListView fx:id\u003d\"sessionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":8}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"name\" text\u003d\"\\$name\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" \u003cText fx:id\u003d\"priority\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$priority\" style\u003d\"-fx-fill: white;\" /\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":37}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Respirayson":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonConsultationListStorage;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"import seedu.address.storage.JsonGradedTestListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"import seedu.address.storage.JsonSessionListStorage;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2023-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(temporaryFolder.resolve(\"taskList.json\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d new JsonGradedTestListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" temporaryFolder.resolve(\"gradedTestList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d new JsonSessionListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" temporaryFolder.resolve(\"sessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" temporaryFolder.resolve(\"consultationList.json\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" public void getFilteredConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredConsultationList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" public void getFilteredSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredSessionList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2023-09-28"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"ExceptionTaskList.json\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(temporaryFolder.resolve(\"ExceptionGradedTestList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":" new JsonSessionListStorage(temporaryFolder.resolve(\"ExceptionSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" new JsonConsultationListStorage(temporaryFolder.resolve(\"ExceptionConsultationList.json\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ldinghan":11,"Respirayson":5,"raydenlim":23,"-":172}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":7,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":123,"wesho1107":1}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GRADE_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_NAME;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.Grade;","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public void execute_addGrade_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" Grade actualGrade \u003d new Grade(GRADE_400, personToEdit.getAssignment(assignmentName).maxGrade());","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(targetIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" Person editedPerson \u003d addGradeCommand.createGradedPerson(personToEdit, actualGrade);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" String expectedMessage \u003d String.format(AddGradeCommand.MESSAGE_SUCCESS, VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" assertCommandSuccess(addGradeCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidAssignment_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(INVALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, assignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(outOfBoundIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" * but smaller than size of address book","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(outOfBoundIndex, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" assertCommandFailure(addGradeCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" public void test_sameObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" assertEquals(addGradeCommand, addGradeCommand);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" public void test_differentObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommand \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" assertFalse(addGradeCommand.equals(assignmentName));","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" public void test_differentObjectSameContent_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(VALID_ASSIGNMENT_NAME);","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommandFirst \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":" AddGradeCommand addGradeCommandSecond \u003d new AddGradeCommand(INDEX_FIRST_PERSON, assignmentName, GRADE_400);","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" assertEquals(addGradeCommandFirst, addGradeCommandSecond);","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"raydenlim":4,"Originalidk":113}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":7,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINALS;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADE;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MIDTERMS;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRACTICAL_EXAM;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_READING_ASSESSMENT;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_RA1 \u003d \"1.0\";","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_RA2 \u003d \"2\";","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_MIDTERMS \u003d \"3\";","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_FINALS \u003d \"4\";","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GT_PE \u003d \"5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_1 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:- | Reading Assessment 2:- | MidTerms:3 | Finals:4 | Practical Exam:5\";","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_GRADED_TEST_2 \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" \"Reading Assessment 1:100 | Reading Assessment 2:100 | MidTerms:100 | Finals:100 | Practical Exam:100\";","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" public static final String VALID_TASK_NAME \u003d \"Do cs2103t\";","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public static final String VALID_TASK_DESCRIPTION \u003d \"Complete PRS\";","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" public static final String VALID_ASSIGNMENT_NAME \u003d \"Finding ELDRIC\";","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" public static final String INVALID_ASSIGNMENT_NAME \u003d \"Finding BOYD\";","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" public static final String GRADE_400 \u003d \"400\";","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_DATE \u003d \"11/11/2023\";","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_TIME \u003d \"11:11\";","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" public static final LocalDate VALID_DATE_OBJ \u003d LocalDate.parse(VALID_DATE,","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public static final LocalTime VALID_TIME_OBJ \u003d LocalTime.parse(VALID_TIME,","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter.ofPattern(\"HH:mm\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_DEFAULT \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_100 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_RA1 \u003d \" \" + PREFIX_READING_ASSESSMENT + VALID_GT_RA1;","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_RA2 \u003d \" \" + PREFIX_READING_ASSESSMENT + VALID_GT_RA2;","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_MIDTERMS \u003d \" \" + PREFIX_MIDTERMS + VALID_GT_MIDTERMS;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_FINALS \u003d \" \" + PREFIX_FINALS + VALID_GT_FINALS;","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public static final String GT_DESC_PE \u003d \" \" + PREFIX_PRACTICAL_EXAM + VALID_GT_PE;","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" public static final String ASSIGNMENT_DESC \u003d \" \" + PREFIX_ASSIGNMENT + \"Finding ELDRIC\";","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" public static final String GRADE_DESC_400 \u003d \" \" + PREFIX_GRADE + \"400\";","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_RA_DESC \u003d \"-1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_MIDTERMS_DESC \u003d \"wergwrg\"; // only numerics","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_FINALS_DESC \u003d \"-43\"; // no negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GT_PE_DESC \u003d \"%#\u0026@%$^@#\"; // no special symbols","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" public static final String INVALID_ASSIGNMENT_DESC \u003d \" \" + PREFIX_ASSIGNMENT + \"Finding BOYD\";","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_DESC_1 \u003d \"Reading Assessment 1:-1 | Reading Assessment 2:0 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" + \"| MidTerms:0 | Finals:-1 | Practical Exam:0\"; // No negative scores","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_DESC_2 \u003d \"Reading Assessment 1:0 | Reading Assessment 2:0 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" + \"| MidTerms:0 | Finals:0 | Practical Exam:*\"; // No special char * allowed","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_NAME_TASK1 \u003d \" \" + PREFIX_TASK_NAME + VALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_DESCRIPTION_TASK1 \u003d \" \" + PREFIX_TASK_DESCRIPTION + VALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_NAME_TASK2 \u003d \" \" + PREFIX_TASK_NAME + \"Read quant guide\";","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" public static final String TASK_DESCRIPTION_TASK2 \u003d \" \" + PREFIX_TASK_DESCRIPTION + \"The green book\";","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" public static final String INVALID_TASK_NAME \u003d \" \" + PREFIX_TASK_NAME + \"@@@@HER\"; // \u0027@\u0027 not allowed in name","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" public static final String GRADED_TEST_1 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" public static final String GRADED_TEST_2 \u003d \" \" + PREFIX_GRADED_TEST + VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_1 \u003d \" \" + PREFIX_GRADED_TEST + INVALID_GRADED_TEST_DESC_1;","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_GRADED_TEST_2 \u003d \" \" + PREFIX_GRADED_TEST + INVALID_GRADED_TEST_DESC_2;","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_RA_TEST \u003d \" \" + PREFIX_READING_ASSESSMENT + INVALID_GT_RA_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_MIDTERMS_TEST \u003d \" \" + PREFIX_MIDTERMS + INVALID_GT_MIDTERMS_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_FINALS_TEST \u003d \" \" + PREFIX_FINALS + INVALID_GT_FINALS_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_PE_TEST \u003d \" \" + PREFIX_PRACTICAL_EXAM + INVALID_GT_PE_DESC;","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" public static final String INVALID_TASK_DESCRIPTION \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" + PREFIX_TASK_DESCRIPTION + \"\\\\ \"; // whitespaces only not allowed in description","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_DATE_DESC \u003d \" \" + PREFIX_DATE + \"1/1/2002\";","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public static final String INVALID_TIME_DESC \u003d \" \" + PREFIX_TIME + \"0:30\";","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_DATE_DESC \u003d \" \" + PREFIX_DATE + VALID_DATE;","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" public static final String VALID_TIME_DESC \u003d \" \" + PREFIX_TIME + VALID_TIME;","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"ldinghan"},"content":" public static final String SESSION_NUMBER_SESSION1 \u003d \" \" + PREFIX_SESSION + \"1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"ldinghan"},"content":" public static final String INVALID_SESSION_NUMBER \u003d \" \" + PREFIX_SESSION + \"abc\";","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"ldinghan"},"content":" public static final String SESSION_STUDENTS_STUDENTS1 \u003d \" \" + PREFIX_NAME + \"Bob\";","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"ldinghan"},"content":" public static final String INVALID_SESSION_STUDENTS \u003d \" \" + PREFIX_NAME + \"Charlie123@abc\";","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" // public static final EditCommand.EditPersonDescriptor DESC_AMY2;","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_FRIEND).withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" * Updates {@code model}\u0027s filtered list to show only the task at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":" * {@code model}\u0027s task list.","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":" public static void showTaskAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":" Task task \u003d model.getFilteredTaskList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":" final String[] splitName \u003d task.getName().taskName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(new TaskNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"ldinghan":5,"Respirayson":27,"raydenlim":60,"Originalidk":7,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/CompleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" * {@code CompleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" getTypicalTaskList(), getTypicalSessionList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(CompleteTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(completeTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(completeTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(CompleteTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(completeTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(completeTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeFirstCommand \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeSecondCommand \u003d new CompleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" assertEquals(completeFirstCommand, completeFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeFirstCommandCopy \u003d new CompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" assertEquals(completeFirstCommand, completeFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" assertFalse(completeFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, completeFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(completeFirstCommand, completeSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand completeTaskCommand \u003d new CompleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" String expected \u003d CompleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, completeTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":109,"raydenlim":12}},{"path":"src/test/java/seedu/address/logic/commands/CreateConsultationCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ModelStub;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultationCommandTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" public void constructor_nullDetails_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateConsultCommand(null, null, null));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void execute_consultationAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" ModelStubAcceptingConsultationAdded modelStub \u003d new ModelStubAcceptingConsultationAdded();","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" Consultation validConsultation \u003d new ConsultationBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" CommandResult commandResult \u003d new CreateConsultCommand(","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" validConsultation.getDate(),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" validConsultation.getTime(),","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" validConsultation.getStudentsNames()).execute(modelStub);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertEquals(String.format(CreateConsultCommand.MESSAGE_SUCCESS, Messages.format(validConsultation)),","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" assertEquals(Arrays.asList(validConsultation), modelStub.consultationAdded);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" LocalDate date \u003d VALID_DATE_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" LocalTime time \u003d VALID_TIME_OBJ;","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" Set\u003cName\u003e students \u003d SampleDataUtil.getNamesSet(VALID_NAME_AMY);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" CreateConsultCommand createConsultCommand \u003d new CreateConsultCommand(date, time, students);","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" assertTrue(createConsultCommand.equals(createConsultCommand));","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" assertFalse(createConsultCommand.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" assertFalse(createConsultCommand.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" * A Model stub that always accept the consultation being added.","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" private class ModelStubAcceptingConsultationAdded extends ModelStub {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" final ArrayList\u003cConsultation\u003e consultationAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" final AddressBook addressBook \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" return consultationAdded.stream().anyMatch(consultation::isSameConsultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" requireNonNull(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" consultationAdded.add(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" return addressBook.matchName(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" return new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":101}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":10,"-":116}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * {@code DeleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" getTypicalSessionList(), getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, deleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(deleteFirstCommand, deleteSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" model.updateFilteredTaskList(p -\u003e false);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":116,"raydenlim":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GRADED_TEST_1;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GRADED_TEST_2;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_successWithValidGradedTest1() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND).withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" .withGradedTest(VALID_GRADED_TEST_1).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_successWithValidGradedTest2() {","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" .withTags(VALID_TAG_HUSBAND).withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" .withGradedTest(VALID_GRADED_TEST_2).build();","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" new UserPrefs(), new TaskListBook(), new SessionListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"ldinghan":1,"Respirayson":5,"raydenlim":39,"-":182}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", gradedTests\u003d\"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" + editPersonDescriptor.getGradedTests().orElse(null) + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"raydenlim":2,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":6,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/IncompleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" * {@code IncompleteTaskCommand}.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" getTypicalSessionList(), getTypicalConsultationListBook(), getTypicalGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(IncompleteTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(incompleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(incompleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(taskToMark).withIsDone(true).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(IncompleteTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getTaskList(),","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" model.getSessionList(), model.getConsultationList(), model.getGradedTestList());","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" assertCommandSuccess(incompleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" showTaskAtIndex(model, INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" // ensures that outOfBoundIndex is still in bounds of task list","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskList().getTaskList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" assertCommandFailure(incompleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteFirstCommand \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteSecondCommand \u003d new IncompleteTaskCommand(INDEX_SECOND_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" assertEquals(incompleteFirstCommand, incompleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteFirstCommandCopy \u003d new IncompleteTaskCommand(INDEX_FIRST_TASK);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" assertEquals(incompleteFirstCommand, incompleteFirstCommandCopy);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" assertFalse(incompleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(null, incompleteFirstCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" assertNotEquals(incompleteFirstCommand, incompleteSecondCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand incompleteTaskCommand \u003d new IncompleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" String expected \u003d IncompleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, incompleteTaskCommand.toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ldinghan":3,"Respirayson":109,"raydenlim":10}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"ldinghan":1,"Respirayson":1,"raydenlim":6,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/session/CreateSessionCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.commands.session;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void execute_createSessionWithSingleStudent_success() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" model.addPerson(student);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(sessionNumber, new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" Session createdSession \u003d model.findSessionBySessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertEquals(1, createdSession.getStudents().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(student));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" public void execute_createSessionWithMultipleStudents_success() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" model.addPerson(alice);","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" model.addPerson(bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e studentNames \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" studentNames.add(new Name(\"Alice\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" studentNames.add(new Name(\"Bob\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(new SessionNumber(\"1\"), studentNames);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" Session createdSession \u003d model.findSessionBySessionNumber(new SessionNumber(\"1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertEquals(2, createdSession.getStudents().size());","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(alice));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" assertTrue(createdSession.getStudents().contains(bob));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" public void equals_sameCommands_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command1 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command2 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" public void equals_differentCommands_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command1 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Alice\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command2 \u003d new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Bob\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" String name \u003d \"Bob\";","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder().withName(name).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" model.addPerson(bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" CreateSessionCommand command \u003d new CreateSessionCommand(sessionNumber, new Name(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" // Before execution, session has not been created and is null","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" String expectedBeforeExecute \u003d CreateSessionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" + \"{toCreate\u003dnull}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedBeforeExecute, command.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" // Execute creates the session to be added","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" command.execute(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" String expectedAfterExecute \u003d CreateSessionCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" + \"{toCreate\u003d\" + sessionNumber + \" - \" + name + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedAfterExecute, command.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":98}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ASSIGNMENT_DESC;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentName;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGradeCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" private AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" // no index specified","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" // no field specified","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" // negative index","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"-5\" + ASSIGNMENT_DESC + GRADE_DESC_400, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" // zero index","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"0\" + ASSIGNMENT_DESC + GRADE_DESC_400, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" // invalid order of prefix","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, \"0\" + GRADE_DESC_400 + ASSIGNMENT_DESC, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" public void parse_invalidAssignment_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" \"1\" + INVALID_ASSIGNMENT_DESC + GRADE_DESC_400, AssignmentName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" String userInput \u003d targetIndex.getOneBased() + ASSIGNMENT_DESC + GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" assertParseSuccess(parser, userInput, new AddGradeCommand(targetIndex, assignmentName, \"400\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" String userInput \u003d targetIndex.getOneBased() + ASSIGNMENT_DESC + ASSIGNMENT_DESC + GRADE_DESC_400;","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ASSIGNMENT));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":79}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESCRIPTION_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESCRIPTION_TASK2;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_NAME_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_NAME_TASK2;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" Task expectedTask \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" + TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK1, new AddTaskCommand(expectedTask));","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" String validExpectedTaskString \u003d TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" // multiple names","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, TASK_NAME_TASK2 + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" // multiple description","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, TASK_DESCRIPTION_TASK2 + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" // invalid description","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_DESCRIPTION + validExpectedTaskString,","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, validExpectedTaskString + INVALID_TASK_NAME,","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_NAME));","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" // invalid description","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, validExpectedTaskString + INVALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TASK_DESCRIPTION));","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" // missing name prefix","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, VALID_TASK_NAME + TASK_DESCRIPTION_TASK1,","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" expectedMessage);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" // all prefixes missing","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, VALID_TASK_NAME + VALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" expectedMessage);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" // no description","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" Task expectedTask \u003d new TaskBuilder(TASK1).withDescription(\"\").build();","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, TASK_NAME_TASK1, new AddTaskCommand(expectedTask));","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + TASK_DESCRIPTION_TASK2,","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, INVALID_TASK_NAME + INVALID_TASK_DESCRIPTION,","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" // non-empty preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" + TASK_NAME_TASK1 + TASK_NAME_TASK1 + TASK_DESCRIPTION_TASK2,","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":109,"wesho1107":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_DESC;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSION;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(null);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" public void parseCommand_createConsultation() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" String inputCommandString \u003d CreateConsultCommand.COMMAND_WORD + VALID_DATE_DESC + VALID_TIME_DESC","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" + NAME_DESC_AMY;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" assertTrue(parser.parseCommand(inputCommandString) instanceof CreateConsultCommand);","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_addTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddCommand(task));","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" assertEquals(new AddTaskCommand(task), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_deleteTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" assertEquals(new DeleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_completeTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand command \u003d (CompleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" assertEquals(new CompleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" public void parseCommand_incompleteTask() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand command \u003d (IncompleteTaskCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_TASK.getOneBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" assertEquals(new IncompleteTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"ldinghan"},"content":" public void parseCommand_createSession() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"ldinghan"},"content":" String sessionNumber \u003d \"1\";","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"ldinghan"},"content":" String studentName \u003d \"Ding Han\";","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"ldinghan"},"content":" String whiteSpace \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":147,"author":{"gitId":"ldinghan"},"content":" assertTrue(parser.parseCommand(CreateSessionCommand.COMMAND_WORD","lastModifiedDate":"2023-10-15"},{"lineNumber":148,"author":{"gitId":"ldinghan"},"content":" + whiteSpace + PREFIX_SESSION + sessionNumber","lastModifiedDate":"2023-10-15"},{"lineNumber":149,"author":{"gitId":"ldinghan"},"content":" + whiteSpace + PREFIX_NAME + studentName) instanceof CreateSessionCommand);","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"ldinghan":13,"Respirayson":36,"raydenlim":12,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/CompleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.CompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the CompleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class CompleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private CompleteTaskCommandParser parser \u003d new CompleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsCompleteTaskCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new CompleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" CompleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/CreateConsultationCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATE_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_OBJ;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TIME_OBJ;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.commands.CreateConsultCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"public class CreateConsultationCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" private CreateConsultCommandParser parser \u003d new CreateConsultCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" new CreateConsultCommand(VALID_DATE_OBJ, VALID_TIME_OBJ,","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" SampleDataUtil.getNamesSet(VALID_NAME_AMY)));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void parse_multipleNames_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" + VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY + NAME_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" new CreateConsultCommand(VALID_DATE_OBJ, VALID_TIME_OBJ,","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" SampleDataUtil.getNamesSet(VALID_NAME_AMY, VALID_NAME_BOB)));","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void parse_repeatedPrefix_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" String validExpectedConsultationString \u003d VALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" // multiple dates","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE_DESC + validExpectedConsultationString,","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DATE));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" // multiple time","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_TIME_DESC + validExpectedConsultationString,","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TIME));","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public void parse_invalidInput_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" // invalid date","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" String invalidDateInput \u003d INVALID_DATE_DESC + VALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidDateInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" // invalid time","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" String invalidTimeInput \u003d VALID_DATE_DESC + INVALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidTimeInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" // invalid date and time","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" String invalidDateTimeInput \u003d INVALID_DATE_DESC + INVALID_TIME_DESC + NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidDateTimeInput));","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateConsultCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" // missing time","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE + VALID_NAME_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" // missing date","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_TIME + VALID_NAME_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" // missing name","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" assertParseFailure(parser, VALID_DATE + VALID_TIME,","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" expectedMessage);","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":94}},{"path":"src/test/java/seedu/address/logic/parser/CreateSessionCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SESSION_NUMBER;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SESSION_STUDENTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSION_NUMBER_SESSION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSION_STUDENTS_STUDENTS1;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.logic.commands.session.CreateSessionCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"public class CreateSessionCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" private CreateSessionCommandParser parser \u003d new CreateSessionCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" + SESSION_NUMBER_SESSION1 + SESSION_STUDENTS_STUDENTS1,","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" new CreateSessionCommand(new SessionNumber(\"1\"), new Name(\"Bob\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" // invalid session number","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, INVALID_SESSION_NUMBER + SESSION_STUDENTS_STUDENTS1,","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" //invalid names","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, SESSION_NUMBER_SESSION1 + INVALID_SESSION_STUDENTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" assertParseFailure(parser, INVALID_SESSION_NUMBER + INVALID_SESSION_STUDENTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" SessionNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":44}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the DeleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" private static final String GRADED_TEST_EMPTY \u003d \" \" + PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" public void parse_invalidPrefix_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" String userInput \u003d targetIndex.getOneBased() + \" i/JohnDoe\";","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"raydenlim":12,"-":208}},{"path":"src/test/java/seedu/address/logic/parser/IncompleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TASK;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.IncompleteTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * JUnit test class for the IncompleteTaskCommandParser.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class IncompleteTaskCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private IncompleteTaskCommandParser parser \u003d new IncompleteTaskCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void parse_validArgs_returnsCompleteTaskCommand() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" assertParseSuccess(parser, \"1\", new IncompleteTaskCommand(INDEX_FIRST_TASK));","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" IncompleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":29}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" private static final String INVALID_PRIORITY \u003d \"jason\";","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":" public void parseNames_validNames_returnsSetOfNames() throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d Collections.singletonList(\"Alice\");","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e expectedNameSet \u003d Collections.singleton(new Name(\"Alice\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":204,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":205,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e parsedNameSet \u003d ParserUtil.parseNames(names);","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedNameSet, parsedNameSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"ldinghan"},"content":" public void parseNames_multipleValidNames_returnsSetOfNames() throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d List.of(\"Alice\", \"Bob\", \"Charlie\");","lastModifiedDate":"2023-10-15"},{"lineNumber":212,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e expectedNameSet \u003d Set.of(new Name(\"Alice\"), new Name(\"Bob\"), new Name(\"Charlie\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":213,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":214,"author":{"gitId":"ldinghan"},"content":" Set\u003cName\u003e parsedNameSet \u003d ParserUtil.parseNames(names);","lastModifiedDate":"2023-10-15"},{"lineNumber":215,"author":{"gitId":"ldinghan"},"content":" assertEquals(expectedNameSet, parsedNameSet);","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"ldinghan"},"content":" public void parseNames_mixedValidAndInvalidNames_throwsParseException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"ldinghan"},"content":" Collection\u003cString\u003e names \u003d List.of(\"Alice\", \"abc_help\", \"Charlie\");","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"ldinghan"},"content":" // When there\u0027s an invalid name, a ParseException should be thrown","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"ldinghan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNames(names));","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"ldinghan"},"content":" public void parsePriority_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"ldinghan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskPriority(INVALID_PRIORITY));","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":230,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ldinghan":35,"-":196}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e newPeople \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPeople);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":" public void matchName_personWithMatchingName_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" // matching name","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" assertEquals(addressBook.matchName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" // no matching name","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e addressBook.matchName(BOB.getName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" private final ObservableList\u003cPerson\u003e people \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":" AddressBookStub(Collection\u003cPerson\u003e people) {","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" this.people.setAll(people);","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":" return people;","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Originalidk":6,"-":102,"wesho1107":16}},{"path":"src/test/java/seedu/address/model/ConsultationListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListBookTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private final ConsultationListBook consultationListBook \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public void constructor() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" assertEquals(Collections.emptyList(), consultationListBook.getConsultationList());","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultationListBook.resetData(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultationListBook.hasConsultation(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_consultationNotInConsultationListBook_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultationListBook.hasConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" public void hasConsultation_consultationInConsultationListBook_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" consultationListBook.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertTrue(consultationListBook.hasConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" public void getConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" consultationListBook.getConsultationList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationListBook \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" // New SessionListBook should be equal to itself","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationListBook, consultationListBook);","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" // Other class objects not equals to ConsultationListBook","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultationListBook.equals(new Integer(1)));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" // ConsultationListBook with different data should not be equal","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook other \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" other.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" assertNotEquals(consultationListBook, other);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" // ReadOnlyConsultationList should be equal to ConsultationListBook with the same data","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" ReadOnlyConsultationList readOnlyConsultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationListBook, readOnlyConsultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":68}},{"path":"src/test/java/seedu/address/model/GradedTestListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListBookTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONSULTATIONS;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GRADED_TEST;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_SESSIONS;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTestNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.SessionNumberContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" assertEquals(new TaskListBook(), new TaskListBook(modelManager.getTaskList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" public void setTaskListFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" assertFalse(modelManager.hasTask(TASK1));","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" modelManager.addTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" assertTrue(modelManager.hasTask(TASK1));","lastModifiedDate":"2023-10-06"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexWithinBounds_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" modelManager.addTask(TASK2);","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" assertEquals(modelManager.getTask(0), TASK2);","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e modelManager.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" public void matchName_personWithMatchingName_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" // matching name","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" assertEquals(modelManager.getMatchingStudentName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" // no matching name","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e modelManager.getMatchingStudentName(BOB.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" public void addConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.addConsultation(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void hasConsultation_nullCase_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasConsultation(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public void addConsultation_validConsultation_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" Consultation consultation \u003d new ConsultationBuilder().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" modelManager.addConsultation(consultation);","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":" assertTrue(modelManager.hasConsultation(consultation));","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTaskList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" public void getFilteredConsultationList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" modelManager.getFilteredConsultationList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":" public void findSessionBySessionNumber_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":202,"author":{"gitId":"ldinghan"},"content":" SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-14"},{"lineNumber":203,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":204,"author":{"gitId":"ldinghan"},"content":" Session toAdd \u003d new SessionBuilder().withSessionNumber(\"0\").withStudent(student).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":205,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(toAdd);","lastModifiedDate":"2023-10-14"},{"lineNumber":206,"author":{"gitId":"ldinghan"},"content":" assertTrue(toAdd.equals(sessionList.findSessionBySessionNumber(new SessionNumber(\"0\"))));","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":208,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":209,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"ldinghan"},"content":" public void getFilteredSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredSessionList().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGradedTestList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" Path path \u003d Paths.get(\"gradedtest/list/file/path\");","lastModifiedDate":"2023-10-15"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" modelManager.setGradedTestListFilePath(path);","lastModifiedDate":"2023-10-15"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGradedTest(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_gradedTestNotInGradedTestList_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.hasGradedTest(GT3));","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" public void hasGradedTest_gradedTestInGradedTestList_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" modelManager.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":" assertTrue(modelManager.hasGradedTest(GT1));","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexWithinBounds_success() {","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" modelManager.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" assertEquals(modelManager.getGradedTest(0), GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e modelManager.getGradedTest(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" public void getFilteredGradedTestList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredGradedTestList().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":262,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":264,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskList \u003d new TaskListBook();","lastModifiedDate":"2023-10-05"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook consultationList \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestList \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":268,"author":{"gitId":"Respirayson"},"content":" taskList.addTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":" gradedTestList.addGradedTest(GT1);","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, taskList, sessionList,","lastModifiedDate":"2023-10-20"},{"lineNumber":274,"author":{"gitId":"raydenlim"},"content":" consultationList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"raydenlim"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":276,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":277,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":278,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":281,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":284,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":286,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":287,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":289,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":290,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":291,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":294,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":295,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":296,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":297,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":298,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":299,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":301,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2023-10-05"},{"lineNumber":302,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2023-10-05"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":304,"author":{"gitId":"Respirayson"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":305,"author":{"gitId":"Respirayson"},"content":" String[] taskKeywords \u003d TASK1.getName().taskName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-05"},{"lineNumber":306,"author":{"gitId":"Respirayson"},"content":" modelManager.updateFilteredTaskList(new TaskNameContainsKeywordsPredicate(Arrays.asList(taskKeywords)));","lastModifiedDate":"2023-10-05"},{"lineNumber":307,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":308,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":309,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":310,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":311,"author":{"gitId":"raydenlim"},"content":" // different consultationList -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":312,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new TaskListBook(),","lastModifiedDate":"2023-10-20"},{"lineNumber":313,"author":{"gitId":"raydenlim"},"content":" new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":314,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":315,"author":{"gitId":"raydenlim"},"content":" // different sessionList -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":316,"author":{"gitId":"raydenlim"},"content":" String[] sessionKeywords \u003d SESSION1A.getSessionNumber().sessionNumber.split(\"\");","lastModifiedDate":"2023-10-20"},{"lineNumber":317,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredSessionList(","lastModifiedDate":"2023-10-20"},{"lineNumber":318,"author":{"gitId":"raydenlim"},"content":" new SessionNumberContainsKeywordsPredicate(Arrays.asList(sessionKeywords)));","lastModifiedDate":"2023-10-20"},{"lineNumber":319,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs,","lastModifiedDate":"2023-10-15"},{"lineNumber":320,"author":{"gitId":"raydenlim"},"content":" new TaskListBook(), new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":322,"author":{"gitId":"raydenlim"},"content":" // different gradedTestList -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"raydenlim"},"content":" String[] gradedTestKeywords \u003d GT1.getGradedTests().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredGradedTestList(","lastModifiedDate":"2023-10-19"},{"lineNumber":325,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Arrays.asList(gradedTestKeywords)));","lastModifiedDate":"2023-10-19"},{"lineNumber":326,"author":{"gitId":"raydenlim"},"content":" System.out.println(GT1.getGradedTests());","lastModifiedDate":"2023-10-19"},{"lineNumber":327,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs,","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"raydenlim"},"content":" new TaskListBook(), new SessionListBook(), new ConsultationListBook(), new GradedTestListBook())));","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":331,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":332,"author":{"gitId":"Respirayson"},"content":" modelManager.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2023-10-05"},{"lineNumber":333,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredGradedTestList(PREDICATE_SHOW_ALL_GRADED_TEST);","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"raydenlim"},"content":" modelManager.updateFilteredConsultationList(PREDICATE_SHOW_ALL_CONSULTATIONS);","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"ldinghan"},"content":" modelManager.updateFilteredSessionList(PREDICATE_SHOW_ALL_SESSIONS);","lastModifiedDate":"2023-10-19"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":337,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":338,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":339,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":340,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":341,"author":{"gitId":"raydenlim"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, taskList,","lastModifiedDate":"2023-10-20"},{"lineNumber":342,"author":{"gitId":"raydenlim"},"content":" sessionList, consultationList, gradedTestList)));","lastModifiedDate":"2023-10-20"},{"lineNumber":343,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":344,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ldinghan":25,"Respirayson":55,"raydenlim":134,"-":131}},{"path":"src/test/java/seedu/address/model/SessionListBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"public class SessionListBookTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" private final SessionListBook sessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public void constructor() {","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertEquals(Collections.emptyList(), sessionListBook.getSessionList());","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionListBook.resetData(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public void resetData_withValidReadOnlySessionListBook_replacesData() {","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" SessionListBook newData \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" sessionListBook.resetData(newData);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" assertEquals(newData, sessionListBook);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public void hasSession_nullSession_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionListBook.hasSession(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" public void hasSession_sessionNotInSessionListBook_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionListBook.hasSession(SESSION3B));","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" public void hasSession_sessionInSessionListBook_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" sessionListBook.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.hasSession(SESSION3A));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" public void getSessionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e sessionListBook.getSessionList().remove(0));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" // New SessionListBook should be equal to itself","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.equals(sessionListBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" // SessionListBook with different data should not be equal","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" SessionListBook differentSessionListBook \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" differentSessionListBook.addSession(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionListBook.equals(differentSessionListBook));","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" // ReadOnlySessionList should be equal to SessionListBook with the same data","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList readOnlySessionList \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionListBook.equals(readOnlySessionList));","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" String expected \u003d SessionListBook.class.getCanonicalName() + \"{sessions\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" + sessionListBook.getSessionList() + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, sessionListBook.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":80}},{"path":"src/test/java/seedu/address/model/attendance/AttendanceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"public class AttendanceTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" public void markPresentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" Session emptySession \u003d EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" Attendance.markPresent(emptySession, alice);","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertTrue(emptySession.getStudents().contains(alice));","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public void markAbsentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" Session sessionWithAlice \u003d new Session(SESSION1A.getSessionNumber(), SESSION1A.getStudents());","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" Attendance.markAbsent(sessionWithAlice, alice);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionWithAlice.getStudents().contains(alice));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" public void getAttendanceBySessionTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" assertTrue(Attendance.getAttendanceBySession(SESSION3A).equals(SESSION3A.getStudents()));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void getAttendanceByStudentTest() {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(CARL).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" Session tempSession3a \u003d new Session(SESSION3A.getSessionNumber(), SESSION3A.getStudents());","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(tempSession3a);","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e attendanceBefore \u003d Attendance.getAttendanceByStudent(carl, sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // bob has not attended tempSession3a","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertFalse(attendanceBefore.contains(tempSession3a));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" carl.attendSession(tempSession3a);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" Set\u003cSession\u003e attendanceAfter \u003d Attendance.getAttendanceByStudent(carl, sessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" // Check if the list contains the expected session","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" assertTrue(attendanceAfter.contains(tempSession3a));","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":60}},{"path":"src/test/java/seedu/address/model/consultation/ConsultationListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.ConsultationNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.exceptions.DuplicateConsultationException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class ConsultationListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private final ConsultationList consultations \u003d new ConsultationList();","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public void contains_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public void contains_consultationNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.contains(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public void contains_consultationInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION1);","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertTrue(consultations.contains(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void addConsultation_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.addConsultation(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public void addConsultation_duplicateConsultation_throwsDuplicateConsultationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION2);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" assertThrows(DuplicateConsultationException.class, () -\u003e consultations.addConsultation(CONSULTATION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" public void remove_nullConsultation_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e consultations.remove(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public void remove_consultationDoesNotExist_throwsConsultationNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" assertThrows(ConsultationNotFoundException.class, () -\u003e consultations.remove(CONSULTATION4));","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" public void remove_existingConsultation_removesConsultation() {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" consultations.addConsultation(CONSULTATION3);","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" consultations.remove(CONSULTATION3);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.contains(CONSULTATION3));","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" consultations.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" // Same ConsultationList object","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":" ConsultationList sameConsultations \u003d consultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultations, sameConsultations);","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" // Object of different class -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" assertFalse(consultations.equals(new Integer(1)));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultations.asUnmodifiableObservableList().toString(), consultations.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":84}},{"path":"src/test/java/seedu/address/model/consultation/ConsultationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.model.consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION1;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.ConsultationBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class ConsultationTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public void isSameConsultation() {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.isSameConsultation(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.isSameConsultation(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" // same date, same time, same set of students -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" Consultation editedConsultation \u003d new ConsultationBuilder(CONSULTATION1).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" // different date, same time, same set of students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" editedConsultation \u003d new ConsultationBuilder(CONSULTATION1).withDate(\"01/01/2002\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" // different time, same date, same set of students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" editedConsultation \u003d new ConsultationBuilder(CONSULTATION2).withTime(\"23:59\").build();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION2.isSameConsultation(editedConsultation));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" Consultation consultationCopy \u003d new ConsultationBuilder(CONSULTATION2).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION2.equals(consultationCopy));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" assertTrue(CONSULTATION1.equals(CONSULTATION1));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION4.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" // different consultation -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" assertFalse(CONSULTATION1.equals(CONSULTATION3));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":51}},{"path":"src/test/java/seedu/address/model/gradedtest/FinalsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class FinalsTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validFinalsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" Finals score \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidFinalsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" Finals score1 \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" Finals score2 \u003d new Finals(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" Finals diffScore \u003d new Finals(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new Finals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Finals(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidFinals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e Finals.isValidFinalsResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(Finals.isValidFinalsResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(Finals.isValidFinalsResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" Finals testScore \u003d new Finals(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new Finals(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new Finals(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT2;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.DuplicateGradedTestException;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.exceptions.GradedTestNotFoundException;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"public class GradedTestListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private final GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" public void contains_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.contains(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" public void contains_gradedTestNotInList_returnsFalse() {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" public void contains_gradedTestInList_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void add_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.add(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public void add_duplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.add(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_nullTargetGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.editGradedTest(null, GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_nullEditedGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.editGradedTest(GT1, null));","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_targetGradedTestNotInList_throwsGradedTestNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedTestIsSameGradedTest_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(expectedGradedTestList.equals(gradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedeTestHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertTrue(expectedGradedTestList.equals(gradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_editedGradedTestHasNonUniqueIdentity_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT2));","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_duplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT3);","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.editGradedTest(GT1, GT3));","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public void editGradedTest_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" gradedTestList.editGradedTest(GT1, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" public void remove_nullGradedTest_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.remove(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" public void remove_gradedTestDoesNotExist_throwsGradedTestNotFoundException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.remove(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" public void remove_existingGradedTest_removesGradedTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" gradedTestList.remove(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_nullUniqueGradedTestList_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests((GradedTestList) null));","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_uniqueGradedTestList_replacesOwnListWithProvidedUniqueGradedTestList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(expectedGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests((List\u003cGradedTest\u003e) null));","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e otherGradedTestList \u003d Collections.singletonList(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(otherGradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" GradedTestList expectedGradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" expectedGradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" assertEquals(expectedGradedTestList, gradedTestList);","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest_listWithDuplicateGradedTest_throwsDuplicateGradedTestException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e listWithDuplicateGradedTest \u003d Arrays.asList(GT1, GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" gradedTestList.setGradedTests(listWithDuplicateGradedTest));","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" -\u003e gradedTestList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexWithinBounds_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" assertEquals(GT1, gradedTestList.getGradedTest(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void getGradedTest_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e gradedTestList.getGradedTest(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList.asUnmodifiableObservableList().toString(), gradedTestList.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public void equalsTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList1 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList2 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" // Test when both lists are empty","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" // Add a graded test to one list and test for inequality","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":" gradedTestList1.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" // Add the same graded test to the other list and test for equality","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" gradedTestList2.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList1.equals(gradedTestList2));","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":" public void hashCodeTest() {","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList1 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList2 \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":" // Test when both lists are empty","lastModifiedDate":"2023-10-20"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" // Add a graded test to one list and test for inequality","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" gradedTestList1.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":" // Add the same graded test to the other list and test for equality","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" gradedTestList2.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestList1.hashCode(), gradedTestList2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" public void addAndRemoveGradedTests() {","lastModifiedDate":"2023-10-20"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" // Add a graded test","lastModifiedDate":"2023-10-20"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" assertTrue(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" // Remove the added graded test","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" gradedTestList.remove(GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":" assertFalse(gradedTestList.contains(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" // Try to remove a non-existent graded test (should throw exception)","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" assertThrows(GradedTestNotFoundException.class, () -\u003e gradedTestList.remove(GT1));","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListWithDuplicateGradedTests() {","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" // Create a list with duplicate graded tests","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e duplicateGradedTestList \u003d Arrays.asList(GT2, GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" // Setting the list should throw DuplicateGradedTestException","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":" assertThrows(DuplicateGradedTestException.class, () -\u003e gradedTestList.setGradedTests(duplicateGradedTestList));","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" public void getGradedTestWithInvalidIndex() {","lastModifiedDate":"2023-10-20"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":252,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":253,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":254,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e gradedTestList.getGradedTest(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":255,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":256,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":257,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":258,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestsWithNullList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":259,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":260,"author":{"gitId":"raydenlim"},"content":" List\u003cGradedTest\u003e nullList \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":261,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":262,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e gradedTestList.setGradedTests(nullList));","lastModifiedDate":"2023-10-20"},{"lineNumber":263,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":264,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":265,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":266,"author":{"gitId":"raydenlim"},"content":" public void unmodifiableListModification() {","lastModifiedDate":"2023-10-20"},{"lineNumber":267,"author":{"gitId":"raydenlim"},"content":" GradedTestList gradedTestList \u003d new GradedTestList();","lastModifiedDate":"2023-10-20"},{"lineNumber":268,"author":{"gitId":"raydenlim"},"content":" gradedTestList.add(GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":269,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":270,"author":{"gitId":"raydenlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":271,"author":{"gitId":"raydenlim"},"content":" gradedTestList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-20"},{"lineNumber":272,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":273,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":273}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.GradedTestBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"public class GradedTestNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"0\", \"3\");","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void test_gradedTestContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" // One keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Collections.singletonList(\"1\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withFinals(\"1\").withPe(\"1\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withMidTerms(\"30\").withPe(\"3\").withFinals(\"0\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertTrue(predicate.test(new GradedTestBuilder().withMidTerms(\"35\").withFinals(\"0\").withPe(\"3\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void test_gradedTestDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" // Zero keywords","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" new GradedTestNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" assertFalse(predicate.test(new GradedTestBuilder().withFinals(\"1\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" predicate \u003d new GradedTestNameContainsKeywordsPredicate(Arrays.asList(\"0\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" assertFalse(predicate.test(new GradedTestBuilder().withFinals(\"2\").build()));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" GradedTestNameContainsKeywordsPredicate predicate \u003d new GradedTestNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" String expected \u003d GradedTestNameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" + \"{gradedTest keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":83}},{"path":"src/test/java/seedu/address/model/gradedtest/GradedTestTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.GradedTestBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"public class GradedTestTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new GradedTest(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidGradedTestName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" String invalidGradedTestName \u003d \"%$#%#%\";","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GradedTest(invalidGradedTestName));","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" public void isValidGradedTestName() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" // null gradedTest name","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e GradedTest.isValidGradeTestName(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" public void isSameGradedTest() {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.isSameGradedTest(GT1));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" // same test -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" GradedTest editedGradedTest1 \u003d new GradedTestBuilder(GT1).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" // different finals -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withFinals(\"100\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" // different Pe -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withPe(\"100\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" // different Pe,RA1, RA2 -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" editedGradedTest1 \u003d new GradedTestBuilder(GT1).withPe(\"100\")","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1\").withReadingAssessment2(\"2\")","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.isSameGradedTest(editedGradedTest1));","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTestCopy \u003d new GradedTestBuilder(GT1).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.equals(gradedTestCopy));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" assertTrue(GT1.equals(GT1));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" // different gradedTest -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(GT3));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" // different pe value -\u003e return false","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" GradedTest editedGradedTest2 \u003d new GradedTestBuilder(GT1)","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" .withPe(GT3.getPracticalExam().value).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(editedGradedTest2));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" // different finals value -\u003e return false","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" editedGradedTest2 \u003d new GradedTestBuilder(GT1).withFinals(GT3","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" .getFinals().value).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertFalse(GT1.equals(editedGradedTest2));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" String expected \u003d String.format(\"%s{Reading Assessment 1\u003d%s,\"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" + \"Reading Assessment 2\u003d%s, MidTerms\u003d%s, Finals\u003d%s, Practical Exam\u003d%s}\",","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" GradedTest.class.getCanonicalName(), GT1.getRA1(), GT1.getRA2(),","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" GT1.getMidTerms(), GT1.getFinals(), GT1.getPracticalExam());","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" assertEquals(expected, expected);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":100}},{"path":"src/test/java/seedu/address/model/gradedtest/MidTermTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class MidTermTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validMidTermsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" MidTerms score \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidMidTermsConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" MidTerms score1 \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" MidTerms score2 \u003d new MidTerms(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" MidTerms diffScore \u003d new MidTerms(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new MidTerms(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MidTerms(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidMidTerms() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e MidTerms.isValidMidTermResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(MidTerms.isValidMidTermResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(MidTerms.isValidMidTermResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" MidTerms testScore \u003d new MidTerms(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new MidTerms(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new MidTerms(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/PracticalExamTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class PracticalExamTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validPracticalExamConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" PracticalExam score \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidPracticalExamConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" PracticalExam score1 \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" PracticalExam score2 \u003d new PracticalExam(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" PracticalExam diffScore \u003d new PracticalExam(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new PracticalExam(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PracticalExam(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidMidTerms() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e PracticalExam.isValidPeResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(PracticalExam.isValidPeResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(PracticalExam.isValidPeResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" PracticalExam testScore \u003d new PracticalExam(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new PracticalExam(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new PracticalExam(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/gradedtest/ReadingAssessmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.model.gradedtest;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"public class ReadingAssessmentTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void validReadingAssessmentConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" assertEquals(\"10\", score.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void invalidReadingAssessmentConstruction() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" // Test construction with an invalid name","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(\"**iloveyou**\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(\"-10000000000\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public void testHashCode() {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score1 \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment score2 \u003d new ReadingAssessment(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment diffScore \u003d new ReadingAssessment(\"10.0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertEquals(score1.hashCode(), score2.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertNotEquals(score1.hashCode(), diffScore.hashCode());","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e new ReadingAssessment(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ReadingAssessment(invalidName));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void isValidReadingAssessment() {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" // null score","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e ReadingAssessment.isValidRaResult(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" // invalid score","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"egsdgsg\")); // contains alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertFalse(ReadingAssessment.isValidRaResult(\"-1\")); // contains negative numbers","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" // valid score","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"-\")); // default score","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"2103\")); // numbers only","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"100.0\")); // floats","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertTrue(ReadingAssessment.isValidRaResult(\"0\")); // 0 value allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment testScore \u003d new ReadingAssessment(\"1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(new ReadingAssessment(\"1\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertTrue(testScore.equals(testScore));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertFalse(testScore.equals(new ReadingAssessment(\"2\")));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":87}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public void studentAttendSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" Session emptySession \u003d EMPTY_SESSION;","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Person alice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" alice.attendSession(emptySession);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" assertTrue(emptySession.getStudents().contains(alice));","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" public void studentMissSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" Session sessionWithCarl \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudents(SESSION1A.getStudents()).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(CARL).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" carl.missSession(sessionWithCarl);","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionWithCarl.getStudents().contains(carl));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public void isSameName() {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" // person shares same name object","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" Name aliceName \u003d ALICE.getName();","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" assertTrue(ALICE.isSameName(aliceName));","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" // different person share same name","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" Person personA \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" Person personB \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertTrue(personA.isSameName(personB.getName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" public void isSameName_sameName_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" Name name \u003d new Name(\"Jeremy\");","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" Person person \u003d new PersonBuilder().withName(name.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" // Create another person with the same name","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" Person anotherPerson \u003d new PersonBuilder().withName(name.toString()).withPhone(\"98765432\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" assertTrue(person.isSameName(anotherPerson.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" public void isSameName_sameNameDifferentObject_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":" Name name1 \u003d new Name(\"James\");","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" Name name2 \u003d new Name(\"James\");","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" Person person1 \u003d new PersonBuilder().withName(name1.toString()).withPhone(\"99999999\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" Person person2 \u003d new PersonBuilder().withName(name2.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":" assertTrue(person1.isSameName(person2.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"ldinghan"},"content":" public void isSameName_differentName_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"ldinghan"},"content":" Name name1 \u003d new Name(\"Green Blue\");","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"ldinghan"},"content":" Name name2 \u003d new Name(\"Blue Green\");","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"ldinghan"},"content":" Person person \u003d new PersonBuilder().withName(name1.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"ldinghan"},"content":" // Create another person with a different name","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"ldinghan"},"content":" Person anotherPerson \u003d new PersonBuilder().withName(name2.toString()).withPhone(\"12345678\").build();","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ldinghan"},"content":" assertFalse(person.isSameName(anotherPerson.getName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-13"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":" + \", gradedTests\u003d\" + ALICE.getGradedTest() + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ldinghan":57,"raydenlim":14,"-":98}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" public void matchName_nullName_throwsNullPointerException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.matchName(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" public void matchName_personWithSameName_returnsTrue() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" assertEquals(uniquePersonList.matchName(ALICE.getName()), ALICE);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public void matchName_noMatchingNameFound_throwsPersonNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.matchName(ALICE.getName()));","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":177,"author":{"gitId":"Originalidk"},"content":" List\u003cPerson\u003e listWithDuplicatePeople \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2023-10-13"},{"lineNumber":178,"author":{"gitId":"Originalidk"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePeople));","lastModifiedDate":"2023-10-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":187,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":188,"author":{"gitId":"ldinghan"},"content":" public void matchName_successfulMatch() {","lastModifiedDate":"2023-10-15"},{"lineNumber":189,"author":{"gitId":"ldinghan"},"content":" Name nameToMatch \u003d new Name(\"Alice Pauline\");","lastModifiedDate":"2023-10-15"},{"lineNumber":190,"author":{"gitId":"ldinghan"},"content":" Person personWithNameToMatch \u003d new PersonBuilder().withName(nameToMatch.toString()).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":191,"author":{"gitId":"ldinghan"},"content":" uniquePersonList.add(personWithNameToMatch);","lastModifiedDate":"2023-10-15"},{"lineNumber":192,"author":{"gitId":"ldinghan"},"content":" Person matchedPerson \u003d uniquePersonList.matchName(nameToMatch);","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"ldinghan"},"content":" assertEquals(personWithNameToMatch, matchedPerson);","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"ldinghan"},"content":" public void matchName_nameNotInList_unsuccessfulMatch() {","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"ldinghan"},"content":" Name nameToMatch \u003d new Name(\"Invalid name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"ldinghan"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.matchName(nameToMatch));","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ldinghan":15,"Originalidk":2,"-":173,"wesho1107":16}},{"path":"src/test/java/seedu/address/model/person/assignment/AssignmentMapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class AssignmentMapTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" private AssignmentMap assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public void test_contains_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentNameTrue \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" assertTrue(assignments.contains(assignmentNameTrue));","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentNameFalse \u003d new AssignmentName(\"Finding BOYD\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" assertFalse(assignments.contains(assignmentNameFalse));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public void asUnmodifiableObservableMap_modifyMap_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" -\u003e assignments.asUnmodifiableObservableMap().remove(assignmentName));","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":28}},{"path":"src/test/java/seedu/address/model/person/assignment/AssignmentNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package seedu.address.model.person.assignment;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"public class AssignmentNameTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private AssignmentName assignmentName \u003d new AssignmentName(\"Finding ELDRIC\");","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public void test_sameObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" assertEquals(assignmentName, assignmentName);","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" public void test_differentObject_equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" assertFalse(assignmentName.equals(\"assignmentName\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"Originalidk":21}},{"path":"src/test/java/seedu/address/model/session/SessionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1B;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.DuplicateSessionException;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.exceptions.SessionNotFoundException;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"public class SessionListTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" private final SessionList sessionList \u003d new SessionList();","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void contains_nullSession_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e sessionList.contains(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" public void contains_sessionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" public void contains_sessionInList_returnsTrue() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1B);","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1B));","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public void add_duplicateSession_throwsDuplicateSessionException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3B);","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" assertThrows(DuplicateSessionException.class, () -\u003e sessionList.addSession(SESSION3B));","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_throwsSessionNotFoundException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertThrows(SessionNotFoundException.class, () -\u003e sessionList.setSession(SESSION1A, SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_throwsDuplicateSessionException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION2);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" assertThrows(DuplicateSessionException.class, () -\u003e sessionList.setSession(SESSION1A, SESSION2));","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public void set_setSession_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" sessionList.setSession(SESSION3A, SESSION2);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION2));","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION3A));","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" public void remove_addedSession_successful() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" sessionList.remove(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" public void remove_throwsSessionNotFoundException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1A);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" assertThrows(SessionNotFoundException.class, () -\u003e sessionList.remove(SESSION2));","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" public void find_findSessionByNumber_notInSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION1B);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionList.findSessionBySessionNumber(new SessionNumber(\"5\")), null);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" public void find_findSessionByNumber_successfulFind() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" sessionList.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" assertEquals(SESSION3A, sessionList.findSessionBySessionNumber(new SessionNumber(\"3\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" public void setSessionList_setNewSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" List\u003cSession\u003e newSessionList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" newSessionList.add(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" sessionList.setSessionList(newSessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionList.contains(SESSION1A));","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionList.asUnmodifiableObservableList().toString(), sessionList.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":109}},{"path":"src/test/java/seedu/address/model/session/SessionNumberContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"1\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"0\", \"3\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" public void test_sessionNumberContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" // One keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(Collections.singletonList(\"1\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"12\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"30\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\", \"3\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" assertTrue(predicate.test(new SessionBuilder().withSessionNumber(\"35\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" public void test_sessionNumberDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" // Zero keywords","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" new SessionNumberContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" assertFalse(predicate.test(new SessionBuilder().withSessionNumber(\"1\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" predicate \u003d new SessionNumberContainsKeywordsPredicate(Arrays.asList(\"0\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" assertFalse(predicate.test(new SessionBuilder().withSessionNumber(\"2\").build()));","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" SessionNumberContainsKeywordsPredicate predicate \u003d new SessionNumberContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" String expected \u003d SessionNumberContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" + \"{session keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"ldinghan":82}},{"path":"src/test/java/seedu/address/model/session/SessionNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"public class SessionNumberTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" public void isValidSessionNumber_validSessionNumber_returnsTrue() {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":" // Valid session numbers containing only digits","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"12345\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" assertTrue(SessionNumber.isValidSessionNumber(\"9876543210\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" public void isValidSessionNumber_invalidSessionNumber_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" // Invalid session numbers containing non-digits","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"A1\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1A\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"12 34\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1_23\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"12@34\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" 1234\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"1234 \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" 1234 \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" // Invalid session numbers that are blank or empty","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\\t\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" assertFalse(SessionNumber.isValidSessionNumber(\"\\n\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber1 \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber2 \u003d new SessionNumber(\"2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" SessionNumber sessionNumber1Copy \u003d new SessionNumber(\"1\");","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" // Testing equality with itself","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionNumber1.equals(sessionNumber1));","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" // Testing equality with an equivalent object","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionNumber1.equals(sessionNumber1Copy));","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" // Testing equality with a different object","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionNumber1.equals(sessionNumber2));","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // Testing equality with null","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionNumber1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":54}},{"path":"src/test/java/seedu/address/model/session/SessionStudentsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"public class SessionStudentsTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" public void addStudent_validStudent_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" sessionStudents.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" assertEquals(1, sessionStudents.size());","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" public void removeStudent_validStudent_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" Person student \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" sessionStudents.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" sessionStudents.remove(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents.contains(student));","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" assertEquals(0, sessionStudents.size());","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" public void toStudentNames_validSessionStudents_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents \u003d new SessionStudents(","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Zoe\").build(),","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Bob\").build(),","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" new PersonBuilder().withName(\"Alice\").build()","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" String expected \u003d \"Alice, Bob, Zoe\";","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected, sessionStudents.toStudentNames());","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents1 \u003d new SessionStudents(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents2 \u003d new SessionStudents(new PersonBuilder().withName(\"Bob\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" SessionStudents sessionStudents1Copy \u003d new SessionStudents(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" // Testing equality with itself","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents1.equals(sessionStudents1));","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" // Testing equality with an equivalent object","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" assertTrue(sessionStudents1.equals(sessionStudents1Copy));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" // Testing equality with a different object","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents1.equals(sessionStudents2));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" // Testing equality with null","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" assertFalse(sessionStudents1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":67}},{"path":"src/test/java/seedu/address/model/session/SessionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.model.session;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1B;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION2;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3B;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"public class SessionTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" public void isSameSession() {","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION1A.isSameSession(SESSION1B));","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION1A.isSameSession(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION2.isSameSession(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" Person bob \u003d new PersonBuilder(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" SESSION3B.addStudent(bob);","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION3B.isSameSession(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" public void equalsMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" Session otherSession \u003d new Session(SESSION1A.getSessionNumber(), SESSION1A.getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION1A.equals(otherSession));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" assertTrue(SESSION2.equals(SESSION2));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION3A.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION3B.equals(\"test\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION2.equals(SESSION3A));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" // different students -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" Session tempSession \u003d new Session(SESSION1B.getSessionNumber(), SESSION1B.getStudents());","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" Person carl \u003d new PersonBuilder(TypicalPersons.CARL).build();","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" tempSession.addStudent(carl);","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertFalse(SESSION1B.equals(tempSession));","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void createSessionWithoutStudents() {","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" Session sessionWithoutStudents \u003d new SessionBuilder().withSessionNumber(\"99\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" assertTrue(\"99 - \".equals(sessionWithoutStudents.toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" String expected1 \u003d \"15 - Bob Choo\";","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Session session2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"15\").withStudents(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected1, session2.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" Session tempSession3A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"73\").withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" String expected2 \u003d \"73 - Alice Pauline, Bob Choo\";","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" assertEquals(expected2, tempSession3A.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":77}},{"path":"src/test/java/seedu/address/model/task/TaskDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public class TaskDescriptionTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDescription(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void isValidDescription() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // null description","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidDescription(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" // invalid descriptions","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskDescription.isValidDescription(\" \")); // spaces only","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // valid descriptions","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"\")); // empty string","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"complete by friday\"));","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"-\")); // one character","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskDescription.isValidDescription(\"complete the work and do \"","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" + \"the 5 quizzes and all the projects user guide developer guide\")); // long description","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" TaskDescription description \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertTrue(description.equals(new TaskDescription(\"Valid Description\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertFalse(description.equals(new TaskDescription(\"Other Valid Description\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":51}},{"path":"src/test/java/seedu/address/model/task/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"public class TaskListTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public void contains_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.contains(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public void contains_taskNotInList_returnsFalse() {","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(taskList.contains(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public void contains_taskInList_returnsTrue() {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertTrue(taskList.contains(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" public void add_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.add(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" public void add_duplicateTask_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.add(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public void setTask_nullTargetTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.editTask(null, TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" public void setTask_nullEditedTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.editTask(TASK1, null));","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public void setTask_targetTaskNotInList_throwsTaskNotFoundException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e taskList.editTask(TASK1, TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskIsSameTask_success() {","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" taskList.editTask(TASK1, TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" taskList.editTask(TASK1, TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" public void setTask_editedTaskHasNonUniqueIdentity_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.editTask(TASK1, TASK2));","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" public void remove_nullTask_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.remove(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" public void remove_taskDoesNotExist_throwsTaskNotFoundException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e taskList.remove(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" public void remove_existingTask_removesTask() {","lastModifiedDate":"2023-10-05"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" taskList.remove(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" public void setTasks_nullUniqueTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.setTasks((TaskList) null));","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void setTasks_uniqueTaskList_replacesOwnListWithProvidedUniqueTaskList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK2);","lastModifiedDate":"2023-10-05"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" taskList.setTasks(expectedTaskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" public void setTasks_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e taskList.setTasks((List\u003cTask\u003e) null));","lastModifiedDate":"2023-10-05"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" public void setTasks_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e otherTaskList \u003d Collections.singletonList(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" taskList.setTasks(otherTaskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" TaskList expectedTaskList \u003d new TaskList();","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" expectedTaskList.add(TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":" assertEquals(expectedTaskList, taskList);","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" public void setTasks_listWithDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e listWithDuplicateTasks \u003d Arrays.asList(TASK1, TASK1);","lastModifiedDate":"2023-10-05"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e taskList.setTasks(listWithDuplicateTasks));","lastModifiedDate":"2023-10-05"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" -\u003e taskList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexWithinBounds_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" taskList.add(TASK1);","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" assertEquals(TASK1, taskList.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" public void getTask_indexOutsideBounds_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e taskList.getTask(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" assertEquals(taskList.asUnmodifiableObservableList().toString(), taskList.toString());","lastModifiedDate":"2023-10-05"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":164}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" public void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" // One keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"cs2103t\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2103t\", \"cs2100\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2100\", \"cs2101\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2101\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cS2103T\", \"Cs2100\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertTrue(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" public void test_taskNameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" // Zero keywords","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" assertFalse(predicate.test(new TaskBuilder().withName(\"do cs2103t\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"cs2101\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" assertFalse(predicate.test(new TaskBuilder().withName(\"do cs2103t do cs2100\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" + \"{task keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":86}},{"path":"src/test/java/seedu/address/model/task/TaskNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"public class TaskNameTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskName(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskName(invalidName));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // null name","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskName.isValidName(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" // invalid name","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" assertFalse(TaskName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" // valid name","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"do work\")); // alphabets only","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"2103\")); // numbers only","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"do the 2nd paper\")); // alphanumeric characters","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"Read Script\")); // with capital letters","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" assertTrue(TaskName.isValidName(\"Read the script and memorise everything fully\")); // long names","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" TaskName name \u003d new TaskName(\"Borrow Book\");","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" assertTrue(name.equals(new TaskName(\"Borrow Book\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertFalse(name.equals(new TaskName(\"Other Borrow Book\")));","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":60}},{"path":"src/test/java/seedu/address/model/task/TaskPriorityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class TaskPriorityTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" public void testEnumValues_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" // Test that all enum values are correctly defined","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" TaskPriority low \u003d TaskPriority.LOW;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" TaskPriority medium \u003d TaskPriority.MEDIUM;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" TaskPriority high \u003d TaskPriority.HIGH;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"LOW\", low.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"MEDIUM\", medium.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"HIGH\", high.name());","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" public void testMessageConstraints_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" assertEquals(\"TaskPriority should only be low, medium, or high\", TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":26}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.model.task;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK2;","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"public class TaskTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public void isSameTask() {","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.isSameTask(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" // same name, same description -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" Task editedTask1 \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" // different name, same description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" editedTask1 \u003d new TaskBuilder(TASK1).withDescription(\"Hello world\").build();","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" // same name, different description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" editedTask1 \u003d new TaskBuilder(TASK1).withName(\"Say goodbye\").build();","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.isSameTask(editedTask1));","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public void equals() {","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" Task taskCopy \u003d new TaskBuilder(TASK1).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.equals(taskCopy));","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertTrue(TASK1.equals(TASK1));","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(null));","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(5));","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" // different task -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(TASK2));","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" Task editedTask \u003d new TaskBuilder(TASK1).withName(TASK2.getName().taskName).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(editedTask));","lastModifiedDate":"2023-10-05"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" // different description -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" editedTask \u003d new TaskBuilder(TASK1).withDescription(TASK2.getDescription().description).build();","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" assertFalse(TASK1.equals(editedTask));","lastModifiedDate":"2023-10-05"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" public void hashCode_sameFields_expectSameHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" Task task1 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" Task task2 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" assertEquals(task1.hashCode(), task2.hashCode());","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" public void hashCode_differentFields_expectDifferentHashCode() {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" Task task1 \u003d new Task(new TaskName(\"Task 1\"), new TaskDescription(\"Description 1\"), false, TaskPriority.LOW);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" Task task2 \u003d new Task(new TaskName(\"Task 2\"), new TaskDescription(\"Description 2\"), true, TaskPriority.HIGH);","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" assertThrows(AssertionError.class, () -\u003e assertEquals(task1.hashCode(), task2.hashCode()));","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-05"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" String expected \u003d String.format(\"%s{name\u003d%s, description\u003d%s, isDone\u003d%s, priority\u003d%s}\",","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" Task.class.getCanonicalName(), TASK1.getName(), TASK1.getDescription(),","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" TASK1.getIsDone(), TASK1.getPriority());","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" assertEquals(expected, TASK1.toString());","lastModifiedDate":"2023-10-05"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"ldinghan":17,"Respirayson":72}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedConsultationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.TypicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class JsonAdaptedConsultationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public void toModelType_validConsultationDetails_returnsConsultation() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(TypicalConsultations.CONSULTATION1);","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" assertEquals(TypicalConsultations.CONSULTATION1, consultation.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public void toModelType_validConsultationDetailsWithMultipleStudents_returnConsultation() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(TypicalConsultations.CONSULTATION2);","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" assertEquals(TypicalConsultations.CONSULTATION2, consultation.toModelType());","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void toModelType_invalidConsultationDateTime_throwsIllegalValueException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" JsonAdaptedConsultation consultation \u003d new JsonAdaptedConsultation(\"2023-11-11\", \"01:00\", students);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, consultation::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":33}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGradedTestTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.TypicalGradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"public class JsonAdaptedGradedTestTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validJsonAdaptedGradedTestWithDefaults_success() throws IllegalValueException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" \"80\", \"90\", \"-\", \"85\", \"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" GradedTest gradedTest \u003d jsonAdaptedGradedTest.toModelType();","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment ra1 \u003d new ReadingAssessment(\"80\");","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" ReadingAssessment ra2 \u003d new ReadingAssessment(\"90\");","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" MidTerms midTerms \u003d new MidTerms(\"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" Finals finals \u003d new Finals(\"85\");","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" PracticalExam pe \u003d new PracticalExam(\"-\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" // Verify the converted GradedTest fields, including the defaults","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" assertTrue(ra1.equals(gradedTest.getRA1()));","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertTrue(ra2.equals(gradedTest.getRA2()));","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" assertTrue(midTerms.equals(gradedTest.getMidTerms()));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" assertTrue(finals.equals(gradedTest.getFinals()));","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" assertTrue(pe.equals(gradedTest.getPracticalExam()));","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException1() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" \"80\", \"90\", \"abc\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException2() {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" \"-1\", \"90\", \"23\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidJsonAdaptedGradedTest_throwsIllegalValueException3() {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" \"23\", \"-90\", \"23\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void toModelType_missingFields_throwsIllegalValueException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest jsonAdaptedGradedTest \u003d new JsonAdaptedGradedTest(null, \"90\", \"75\", \"85\", \"95\");","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedGradedTest::toModelType);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation1() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT1);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT1, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation2() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT2);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT2, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation3() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT3);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT3, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" public void toModelType_validGradedTestDetails_returnsConsultation4() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedGradedTest gradedTest \u003d new JsonAdaptedGradedTest(TypicalGradedTest.GT4);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" assertEquals(TypicalGradedTest.GT4, gradedTest.toModelType());","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"raydenlim":90}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_RA1 \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_RA2 \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_MIDTERMS \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_FINALS \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" private static final String INVALID_PE \u003d \"#%grade\";","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" private static final List\u003cJsonAdaptedGradedTest\u003e VALID_GRADED_TEST \u003d BENSON.getGradedTest().stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" .map(JsonAdaptedGradedTest::new)","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" VALID_TAGS, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" invalidTags, VALID_GRADED_TEST);","lastModifiedDate":"2023-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"raydenlim":26,"-":100}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedSessionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.SessionBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"public class JsonAdaptedSessionTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public void toModelType_validSessionDetails_returnsSession() throws Exception {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(new SessionBuilder().withSessionNumber(\"0\").build());","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" assertEquals(new SessionBuilder().withSessionNumber(\"0\").build(), session.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void toModelType_validSessionDetailsWithMultipleStudents_returnsSession() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(new Session(new SessionNumber(\"1\"), TypicalPersons.BOB));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" assertEquals(new Session(new SessionNumber(\"1\"), TypicalPersons.BOB), session.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" public void toModelType_invalidSessionNumber_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" JsonAdaptedSession session \u003d new JsonAdaptedSession(null, students);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" String expectedMessage \u003d SessionNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, session::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"ldinghan":38}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.storage.JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_NAME \u003d \"!!! do cs2120@@@\"; // no symbols","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \" \"; // whitespace only not allowed","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private static final String INVALID_TASK_PRIORITY \u003d \"jason\"; // not low, medium or high","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_NAME \u003d TASK1.getName().toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_DESCRIPTION \u003d TASK1.getDescription().toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final String VALID_PRIORITY \u003d TASK1.getPriority().name();","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void toModelType_validTaskDetails_returnsTask() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" assertEquals(TASK1, task.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" new JsonAdaptedTask(INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, VALID_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskName.class.getSimpleName());","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" new JsonAdaptedTask(VALID_NAME, INVALID_TASK_DESCRIPTION, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, null, false, VALID_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskDescription.class.getSimpleName());","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, false, INVALID_TASK_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d TaskPriority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, false, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TaskPriority.class.getSimpleName());","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":75}},{"path":"src/test/java/seedu/address/storage/JsonConsultationListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION3;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.CONSULTATION4;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"public class JsonConsultationListStorageTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" \"JsonConsultationListStorageTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" @TempDir","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public void readConsultation_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e readConsultationListBook(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" private java.util.Optional\u003cReadOnlyConsultationList\u003e readConsultationListBook(String filePath) throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" return new JsonConsultationListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" .readConsultationList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" : null;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" assertFalse(readConsultationListBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"notJsonFormatConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" public void readConsultationListBook_invalidDate_throwDateTimeParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"invalidDateConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" public void readConsultationListBook_invalidTime_throwDateTimeParseException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" readConsultationListBook(\"invalidTimeConsultationListBook.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" public void readAndSaveConsultationListBook_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" Path filePath \u003d testFolder.resolve(\"TempConsultationListBook.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook original \u003d getTypicalConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" JsonConsultationListStorage jsonConsultationListStorage \u003d new JsonConsultationListStorage(filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"wesho1107"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wesho1107"},"content":" ReadOnlyConsultationList readBack \u003d jsonConsultationListStorage.readConsultationList(filePath).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"wesho1107"},"content":" // Modify data, overwrite existing file, and read back","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wesho1107"},"content":" original.addConsultation(CONSULTATION4);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original, filePath);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"wesho1107"},"content":" readBack \u003d jsonConsultationListStorage.readConsultationList(filePath).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wesho1107"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wesho1107"},"content":" original.addConsultation(CONSULTATION3);","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"wesho1107"},"content":" jsonConsultationListStorage.saveConsultationList(original);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wesho1107"},"content":" readBack \u003d jsonConsultationListStorage.readConsultationList().get();","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"wesho1107"},"content":" assertEquals(original, new ConsultationListBook(readBack));","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationListBook_nullConsultationListBook_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"wesho1107"},"content":" saveConsultationListBook(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wesho1107"},"content":" public void saveConsultationListBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wesho1107"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"wesho1107"},"content":" saveConsultationListBook(new ConsultationListBook(), null));","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"wesho1107"},"content":" * Saves {@code consultationListBook} at the specified {@code filePath}.","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"wesho1107"},"content":" private void saveConsultationListBook(ReadOnlyConsultationList consultationListBook, String filePath) {","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"wesho1107"},"content":" new JsonConsultationListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wesho1107"},"content":" .saveConsultationList(consultationListBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"wesho1107"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"wesho1107"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":116}},{"path":"src/test/java/seedu/address/storage/JsonGradedTestListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT1;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT3;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.GT4;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"public class JsonGradedTestListStorageTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\",","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" \"data\", \"JsonGradedTestListStorageTest\");","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" @TempDir","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e readGradedTestList(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" private java.util.Optional\u003cReadOnlyGradedTestList\u003e readGradedTestList(String filePath)","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" return new JsonGradedTestListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .readGradedTestList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" : null;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" assertFalse(readGradedTestList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"notJsonFormatGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_invalidGradedTestList_throwDataLoadingException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, ()-\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"invalidGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void readGradedTestList_invalidAndValidGradedTestList_throwDataLoadingException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" readGradedTestList(\"invalidAndValidGradedTestList.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" public void readAndSaveGradedTestList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" Path filePath \u003d testFolder.resolve(\"TempGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook original \u003d getTypicalGradedTestList();","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage jsonGradedTestListStorage \u003d new JsonGradedTestListStorage(filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList readBack \u003d jsonGradedTestListStorage.readGradedTestList(filePath).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" original.addGradedTest(GT3);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" original.removeGradedTest(GT1);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" readBack \u003d jsonGradedTestListStorage.readGradedTestList(filePath).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" original.addGradedTest(GT4);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" jsonGradedTestListStorage.saveGradedTestList(original); // file path not specified","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" readBack \u003d jsonGradedTestListStorage.readGradedTestList().get(); // file path not specified","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(readBack));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" * Saves {@code gradedTestList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" private void saveGradedTestList(ReadOnlyGradedTestList gradedTestList, String filePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" new JsonGradedTestListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" .saveGradedTestList(gradedTestList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public void saveGradedTestList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" saveGradedTestList(new GradedTestListBook(), null));","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":118}},{"path":"src/test/java/seedu/address/storage/JsonSerializableConsultationListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"import seedu.address.testutil.TypicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"public class JsonSerializableConsultationListTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" \"test\", \"data\", \"JsonSerializableConsultationListTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private static final Path TYPICAL_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" .resolve(\"typicalConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private static final Path INVALID_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" .resolve(\"invalidConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" private static final Path DUPLICATE_CONSULTATION_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" .resolve(\"duplicateConsultationList.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public void toModelType_typicalConsultationsFile_success() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook consultationList \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook typicalConsultationList \u003d TypicalConsultations.getTypicalConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" assertEquals(consultationList, typicalConsultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public void toModelType_invalidConsultationsFile_throwsDateTimeParseException() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" assertThrows(DateTimeParseException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CONSULTATION_FILE,","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" JsonSerializableConsultationList.class).get();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" assertThrows(IllegalValueException.class, JsonSerializableConsultationList.MESSAGE_DUPLICATE_CONSULTATION,","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wesho1107":50}},{"path":"src/test/java/seedu/address/storage/JsonSerializableGradedTestListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.testutil.TypicalGradedTest;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"public class JsonSerializableGradedTestListTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" \"test\", \"data\", \"JsonSerializableGradedTestListTest\");","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" private static final Path TYPICAL_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" private static final Path INVALID_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" private static final Path DUPLICATE_GRADED_TEST_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGradedTestList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" public void toModelType_typicalGradedTestFile_success() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook gradedTestListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook typicalGradedTestList \u003d TypicalGradedTest.getTypicalGradedTestList();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" assertEquals(gradedTestListFromFile, typicalGradedTestList);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public void toModelType_invalidGradedTestFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public void toModelType_duplicateGradedTest_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GRADED_TEST_FILE,","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" JsonSerializableGradedTestList.class).get();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" assertThrows(IllegalValueException.class, JsonSerializableGradedTestList.MESSAGE_DUPLICATE_GRADED_TEST,","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"raydenlim":46}},{"path":"src/test/java/seedu/address/storage/JsonSerializableSessionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"import seedu.address.testutil.TypicalSessions;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"public class JsonSerializableSessionListTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" \"test\", \"data\", \"JsonSerializableSessionListTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" private static final Path TYPICAL_SESSIONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" private static final Path INVALID_SESSION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private static final Path DUPLICATE_SESSION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public void toModelType_typicalSessionsFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_SESSIONS_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" SessionListBook sessionListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" SessionListBook typicalSessionList \u003d TypicalSessions.getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" assertEquals(sessionListFromFile, typicalSessionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public void toModelType_invalidSessionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_SESSION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" public void toModelType_duplicateSessions_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_SESSION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" JsonSerializableSessionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" assertThrows(IllegalValueException.class, JsonSerializableSessionList.MESSAGE_DUPLICATE_SESSION,","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":49}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\",","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" \"test\", \"data\", \"JsonSerializableTaskListTest\");","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private static final Path TYPICAL_TASKS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" private static final Path INVALID_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" private static final Path DUPLICATE_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void toModelType_typicalTasksFile_success() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TASKS_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" TaskListBook taskListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" TaskListBook typicalTaskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertEquals(taskListFromFile, typicalTaskList);","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public void toModelType_invalidTaskFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TASK_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TASK_FILE,","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" JsonSerializableTaskList.class).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" assertThrows(IllegalValueException.class, JsonSerializableTaskList.MESSAGE_DUPLICATE_TASK,","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":48}},{"path":"src/test/java/seedu/address/storage/JsonSessionListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION1A;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION3A;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.SESSION_TYPICAL1;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":"public class JsonSessionListStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSessionListStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e readSessionList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" private java.util.Optional\u003cReadOnlySessionList\u003e readSessionList(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" return new JsonSessionListStorage(Paths.get(filePath)).readSessionList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" assertFalse(readSessionList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"notJsonFormatSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_invalidSessionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"invalidSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" public void readSessionList_invalidAndValidSessionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" assertThrows(DataLoadingException.class, () -\u003e readSessionList(\"invalidAndValidSessionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" public void readAndSaveSessionList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" Path filePath \u003d testFolder.resolve(\"TempSessionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" SessionListBook original \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage jsonSessionListStorage \u003d new JsonSessionListStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList readBack \u003d jsonSessionListStorage.readSessionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" original.addSession(SESSION1A);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" original.removeSession(SESSION_TYPICAL1);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" readBack \u003d jsonSessionListStorage.readSessionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":" original.addSession(SESSION3A);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" jsonSessionListStorage.saveSessionList(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" readBack \u003d jsonSessionListStorage.readSessionList().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e saveSessionList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":" * Saves {@code taskList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" private void saveSessionList(ReadOnlySessionList sessionList, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" new JsonSessionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":" .saveSessionList(sessionList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"ldinghan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"ldinghan"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", e);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"ldinghan"},"content":" public void saveSessionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ldinghan"},"content":" assertThrows(NullPointerException.class, () -\u003e saveSessionList(new SessionListBook(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ldinghan":111}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK1;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK3;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.TASK4;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @TempDir","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e readTaskList(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" private java.util.Optional\u003cReadOnlyTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" : null;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"notJsonFormatTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_invalidTaskList_throwDataLoadingException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"invalidTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public void readTaskList_invalidAndValidTaskList_throwDataLoadingException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskList(\"invalidAndValidTaskList.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" TaskListBook original \u003d getTypicalTaskList();","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original, filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" original.addTask(TASK3);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" original.removeTask(TASK1);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original, filePath);","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" original.addTask(TASK4);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" jsonTaskListStorage.saveTaskList(original); // file path not specified","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" readBack \u003d jsonTaskListStorage.readTaskList().get(); // file path not specified","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(readBack));","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" * Saves {@code taskList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" private void saveTaskList(ReadOnlyTaskList taskList, String filePath) {","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" new JsonTaskListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" .saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskListBook(), null));","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Respirayson":110}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalConsultations.getTypicalConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.testutil.TypicalGradedTest.getTypicalGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import static seedu.address.testutil.TypicalSessions.getTypicalSessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"tasks\"));","lastModifiedDate":"2023-09-28"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" JsonSessionListStorage sessionListStorage \u003d new JsonSessionListStorage(getTempFilePath(\"sessions\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" JsonConsultationListStorage consultationListStorage \u003d new JsonConsultationListStorage(","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" getTempFilePath(\"consultations\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" JsonGradedTestListStorage gradedTestListStorage \u003d new JsonGradedTestListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" getTempFilePath(\"gradedTests\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage,","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" taskListStorage, sessionListStorage, consultationListStorage, gradedTestListStorage);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" public void sessionListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" SessionListBook original \u003d getTypicalSessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" storageManager.saveSessionList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":" ReadOnlySessionList retrieved \u003d storageManager.readSessionList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"ldinghan"},"content":" assertEquals(original, new SessionListBook(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"ldinghan"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ldinghan"},"content":" public void getSessionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"ldinghan"},"content":" assertNotNull(storageManager.getSessionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" public void getConsultationListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" assertNotNull(storageManager.getConsultationListFilePath());","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" public void consultationListReadSave() throws Exception {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" ConsultationListBook original \u003d getTypicalConsultationListBook();","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" storageManager.saveConsultationList(original);","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" ReadOnlyConsultationList retrieved \u003d storageManager.readConsultationList().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new ConsultationListBook(retrieved));","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" public void taskListReadSave() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" /*","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":" TaskListBook original \u003d getTypicalTaskList();","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" storageManager.saveTaskList(original);","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" ReadOnlyTaskList retrieved \u003d storageManager.readTaskList().get();","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" assertEquals(original, new TaskListBook(retrieved));","lastModifiedDate":"2023-10-07"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2023-10-07"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" public void getGradedTaskListFilePath() {","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" assertNotNull(storageManager.getGradedTestListFilePath());","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" public void gradedTestListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook original \u003d getTypicalGradedTestList();","lastModifiedDate":"2023-10-15"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" storageManager.saveGradedTestList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" ReadOnlyGradedTestList retrieved \u003d storageManager.readGradedTestList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" // assertTrue(original.equals(new GradedTestListBook(retrieved)));","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Original: \" + original);","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Retrieved: \" + new GradedTestListBook(retrieved));","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" assertEquals(original, new GradedTestListBook(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ldinghan":17,"Respirayson":22,"raydenlim":45,"-":67}},{"path":"src/test/java/seedu/address/testutil/ConsultationBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" * A utility class to help with building Consultation objects.","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class ConsultationBuilder {","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public static final String DEFAULT_DATE \u003d \"11/11/2023\";","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public static final String DEFAULT_TIME \u003d \"11:11\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public static final Set\u003cPerson\u003e DEFAULT_STUDENTS \u003d TypicalPersons.DEFAULT_PERSONS;","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" private final DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" private LocalDate date;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private LocalTime time;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" private Set\u003cPerson\u003e students;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" * Creates a {@code ConsultationBuilder} with the default details.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder() {","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" this.date \u003d LocalDate.parse(DEFAULT_DATE, dateFormatter);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" this.time \u003d LocalTime.parse(DEFAULT_TIME, timeFormatter);","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" this.students \u003d DEFAULT_STUDENTS;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" * Initializes the ConsultationBuilder with the data of {@code consultation}.","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder(Consultation consultation) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" this.date \u003d consultation.getDate();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" this.time \u003d consultation.getTime();","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" this.students \u003d consultation.getStudents();","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" * Sets the {@code Date} of the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withDate(String date) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" this.date \u003d LocalDate.parse(date.trim(), dateFormatter);;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" * Sets the {@code Time} of the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withTime(String time) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" this.time \u003d LocalTime.parse(time.trim(), timeFormatter);;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" * Get the set of students for the {@code Consultation} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" public ConsultationBuilder withStudents(Person ... students) {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" this.students \u003d SampleDataUtil.getStudentSet(students);","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public Consultation build() {","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" return new Consultation(date, time, students);","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":70}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(person.getGradedTest());","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" * Parses the {@code gradedTest} into a {@code Set\u003cGradedTest\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" * that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withGradedTest(String... gradedTests) {","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" Set\u003cGradedTest\u003e gradedTestSet \u003d Stream.of(gradedTests).map(GradedTest::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" descriptor.setGradedTest(gradedTestSet);","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" * Sets the Reading Assessment for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withRA1(String ra1) {","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" descriptor.setReadingAssessment1(new ReadingAssessment(ra1));","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" * Sets the Reading Assessment for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withRA2(String ra2) {","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" descriptor.setReadingAssessment2(new ReadingAssessment(ra2));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" * Sets the MidTerms for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withMidTerm(String midterms) {","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" descriptor.setMidTerms(new MidTerms(midterms));","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" * Sets the Finals for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withFinals(String finals) {","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" descriptor.setFinals(new Finals(finals));","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" * Sets the Practical Exam for the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" public EditPersonDescriptorBuilder withPracticalExam(String pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":" descriptor.setPracticalExam(new PracticalExam(pe));","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"raydenlim":56,"-":87}},{"path":"src/test/java/seedu/address/testutil/GradedTestBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.Finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.MidTerms;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.PracticalExam;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.ReadingAssessment;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" * A utility class for building GradedTest objects for testing.","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * It provides methods for setting individual components of a GradedTest object.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" * You can create GradedTest objects with custom attributes or use default values.","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"public class GradedTestBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_RA1 \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_RA2 \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_MIDTERMS \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_FINALS \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public static final String DEFAULT_PE \u003d \"-\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment rA1;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" private ReadingAssessment rA2;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" private MidTerms midterms;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" private Finals finals;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" private PracticalExam pE;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" * Creates a {@code GradedTestBuilder} with the default details.","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" rA1 \u003d new ReadingAssessment(DEFAULT_RA1);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" rA2 \u003d new ReadingAssessment(DEFAULT_RA2);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" midterms \u003d new MidTerms(DEFAULT_MIDTERMS);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" finals \u003d new Finals(DEFAULT_FINALS);","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" pE \u003d new PracticalExam(DEFAULT_PE);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" * Initializes the GradedTestBuilder with the data of {@code gradedTest}.","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder(GradedTest gradedTestToCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" rA1 \u003d gradedTestToCopy.getRA1();","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" rA2 \u003d gradedTestToCopy.getRA2();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" midterms \u003d gradedTestToCopy.getMidTerms();","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" finals \u003d gradedTestToCopy.getFinals();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" pE \u003d gradedTestToCopy.getPracticalExam();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code ReadingAssessment} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withReadingAssessment1(String rA1) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" this.rA1 \u003d new ReadingAssessment(rA1);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code ReadingAssessment} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withReadingAssessment2(String rA2) {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" this.rA2 \u003d new ReadingAssessment(rA2);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code MidTerms} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withMidTerms(String midTerms) {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" this.midterms \u003d new MidTerms(midTerms);","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code Finals} of the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withFinals(String finals) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" this.finals \u003d new Finals(finals);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" * Sets the {@code PracticalExam} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" public GradedTestBuilder withPe(String pE) {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" this.pE \u003d new PracticalExam(pE);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" public GradedTest build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" return new GradedTest(rA1, rA2, midterms, finals, pE);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":95}},{"path":"src/test/java/seedu/address/testutil/ModelStub.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyConsultationList;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyGradedTestList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlySessionList;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyTaskList;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"public class ModelStub implements Model {","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" public void setTaskList(ReadOnlyTaskList taskList) {","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyTaskList getTaskList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" public boolean hasConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" public void addConsultation(Consultation consultation) {","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyConsultationList getConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cConsultation\u003e getFilteredConsultationList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredConsultationList(Predicate\u003cConsultation\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":167,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":168,"author":{"gitId":"raydenlim"},"content":" public Person getMatchingStudentName(Name name) {","lastModifiedDate":"2023-10-20"},{"lineNumber":169,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"raydenlim"},"content":" public void addSession(Session session) {","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"raydenlim"},"content":" public ObservableList\u003cSession\u003e getFilteredSessionList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"raydenlim"},"content":" public ReadOnlySessionList getSessionList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredSessionList(Predicate\u003cSession\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":194,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":197,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"raydenlim"},"content":" public Session findSessionBySessionNumber(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-20"},{"lineNumber":199,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":200,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":201,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":202,"author":{"gitId":"raydenlim"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":204,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":205,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":206,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":207,"author":{"gitId":"raydenlim"},"content":" public Path getGradedTestListFilePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":208,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":209,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":210,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":211,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":212,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":213,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestListFilePath(Path gradedTestListFilePath) {","lastModifiedDate":"2023-10-20"},{"lineNumber":214,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":215,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":216,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":217,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":218,"author":{"gitId":"raydenlim"},"content":" public void setGradedTestList(ReadOnlyGradedTestList gradedTestList) {","lastModifiedDate":"2023-10-20"},{"lineNumber":219,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":220,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":221,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":222,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":223,"author":{"gitId":"raydenlim"},"content":" public ReadOnlyGradedTestList getGradedTestList() {","lastModifiedDate":"2023-10-20"},{"lineNumber":224,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":225,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":226,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":227,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"raydenlim"},"content":" public boolean hasGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":229,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":230,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":231,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":232,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"raydenlim"},"content":" public void deleteGradedTest(GradedTest target) {","lastModifiedDate":"2023-10-20"},{"lineNumber":234,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":235,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":236,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":237,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":238,"author":{"gitId":"raydenlim"},"content":" public GradedTest getGradedTest(int index) {","lastModifiedDate":"2023-10-20"},{"lineNumber":239,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":240,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":241,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":242,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":243,"author":{"gitId":"raydenlim"},"content":" public void addGradedTest(GradedTest gradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":244,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":245,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":246,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":247,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":248,"author":{"gitId":"raydenlim"},"content":" public void setGradedTest(GradedTest target, GradedTest editedGradedTest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":249,"author":{"gitId":"raydenlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-20"},{"lineNumber":250,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":251,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"raydenlim":251}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import seedu.address.model.person.assignment.AssignmentMap;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" private Set\u003cGradedTest\u003e gradedTests;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" private Set\u003cSession\u003e sessions;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" private AssignmentMap assignments;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" sessions \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" assignments \u003d new AssignmentMap();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" assignments \u003d personToCopy.getAllAssignments();","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" gradedTests \u003d new HashSet\u003c\u003e(personToCopy.getGradedTest());","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" * Parses the {@code gradedTest} into a {@code Set\u003cGradedTest\u003e} and set it to","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" * the {@code GradedTest} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" public PersonBuilder withGradedTest(String ... gradedTests) {","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" this.gradedTests \u003d SampleDataUtil.getGradedTestSet(gradedTests);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" return new Person(name, phone, email, address, tags, gradedTests);","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ldinghan":4,"raydenlim":14,"Originalidk":4,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GRADED_TEST;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" person.getGradedTest().stream().forEach(","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" s -\u003e sb.append(PREFIX_GRADED_TEST + s.gradedTestsIndv + \" \")","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" );","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"raydenlim":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/SessionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionStudents;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":" * A utility class for building Session objects for testing purposes.","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"public class SessionBuilder {","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" public static final String DEFAULT_SESSION_NUMBER \u003d \"1\";","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":" private SessionNumber sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" private SessionStudents students;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionBuilder with default session number and no students.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" sessionNumber \u003d new SessionNumber(DEFAULT_SESSION_NUMBER);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" * Constructs a SessionBuilder with a given session number and no students.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to use for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder(SessionNumber sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d sessionNumber;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" * Sets the session number for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" * @param sessionNumber The session number to use for the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated session number.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withSessionNumber(String sessionNumber) {","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" this.sessionNumber \u003d new SessionNumber(sessionNumber);","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" * Sets the students for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated students.","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudents(SessionStudents students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" this.students \u003d students;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * Sets the students for the session being built from an array of Person objects.","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" * @param students The students to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated students.","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudents(Person... students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" for (Person student : students) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" this.students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" * Sets a single student for the session being built.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" * @param student The student to add to the session.","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" * @return The SessionBuilder object with the updated student.","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":" public SessionBuilder withStudent(Person student) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":" this.students \u003d new SessionStudents();","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":" students.add(student);","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"ldinghan"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"ldinghan"},"content":" * Builds and returns the Session object with the specified session number and students.","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"ldinghan"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"ldinghan"},"content":" * @return The Session object with the specified attributes.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"ldinghan"},"content":" public Session build() {","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ldinghan"},"content":" return new Session(sessionNumber, students);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"ldinghan":91}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"public class TaskBuilder {","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_NAME \u003d \"Borrow book\";","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"At Central Library\";","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" public static final String DEFAULT_PRIORITY \u003d \"HIGH\";","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" private TaskName name;","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private TaskDescription description;","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" private boolean isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" private TaskPriority priority;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder() {","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" name \u003d new TaskName(DEFAULT_NAME);","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" description \u003d new TaskDescription(DEFAULT_DESCRIPTION);","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" priority \u003d TaskPriority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" * Initializes the TaskBuilder with the data of {@code task}.","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder(Task task) {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" name \u003d task.getName();","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" description \u003d task.getDescription();","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" priority \u003d task.getPriority();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code Name} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withName(String name) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" this.name \u003d new TaskName(name);","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code Description} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withDescription(String description) {","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":" this.description \u003d new TaskDescription(description);","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code isDone} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withIsDone(boolean isDone) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" * Sets the {@code priority} of the {@code Task} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":" public TaskBuilder withPriority(String name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" this.priority \u003d TaskPriority.valueOf(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" public Task build() {","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" return new Task(name, description, isDone, priority);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":77}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" * A utility class for Task.","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"public class TaskUtil {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" * Returns an add command string for adding the {@code task}.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public static String getAddCommand(Task task) {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" return AddTaskCommand.COMMAND_WORD + \" \" + getTaskDetails(task);","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" * Returns the part of command string for the given {@code task}\u0027s details.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static String getTaskDetails(Task task) {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" sb.append(PREFIX_TASK_NAME).append(task.getName().taskName).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" sb.append(PREFIX_TASK_DESCRIPTION).append(task.getDescription().description).append(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" return sb.toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"Respirayson":30}},{"path":"src/test/java/seedu/address/testutil/TypicalConsultations.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.ConsultationListBook;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.Consultation;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import seedu.address.model.consultation.ConsultationList;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" * A utility class containing a list of {@code Consultation} objects to be used in tests.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"public class TypicalConsultations {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION1 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" .withDate(\"11/11/2002\")","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" .withTime(\"10:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.AMY)","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION2 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" .withDate(\"12/12/2022\")","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" .withTime(\"19:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.ALICE, TypicalPersons.GEORGE)","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION3 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" .withDate(\"03/07/2023\")","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" .withTime(\"12:00\")","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.CARL, TypicalPersons.BOB, TypicalPersons.BENSON)","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public static final Consultation CONSULTATION4 \u003d new ConsultationBuilder()","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" .withDate(\"03/03/2023\")","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" .withTime(\"13:30\")","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" .withStudents(TypicalPersons.ELLE)","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" .build();","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" private TypicalConsultations() {} // prevents initialising","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public static ConsultationListBook getTypicalConsultationListBook() {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" ConsultationListBook clb \u003d new ConsultationListBook();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" for (Consultation consultation : getTypicalConsultations()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" clb.addConsultation(consultation);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" return clb;","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public static ConsultationList getTypicalConsultations() {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" ConsultationList typicalConsultations \u003d new ConsultationList();","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" List\u003cConsultation\u003e consultationList \u003d new ArrayList\u003c\u003e(Arrays.asList(CONSULTATION1, CONSULTATION2));","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" typicalConsultations.setConsultationList(consultationList);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return typicalConsultations;","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"wesho1107":58}},{"path":"src/test/java/seedu/address/testutil/TypicalGradedTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.GradedTestListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.gradedtest.GradedTest;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" * A utility class containing a list of {@code GradedTest} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"public class TypicalGradedTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT1 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1.0\")","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3\")","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT2 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" .withPe(\"-\")","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" // Pass, floats allowed","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT3 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5.0\")","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public static final GradedTest GT4 \u003d new GradedTestBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment1(\"1\")","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" .withReadingAssessment2(\"2.0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .withMidTerms(\"3\")","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" .withFinals(\"4.0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" .withPe(\"5\")","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" private TypicalGradedTest() {} // prevents instantiation","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" * Returns an {@code GradedTestBook} with all the typical gradedTest.","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public static GradedTestListBook getTypicalGradedTestList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" GradedTestListBook ab \u003d new GradedTestListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" for (GradedTest gt : getTypicalGradedTest()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" ab.addGradedTest(gt);","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return ab;","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public static List\u003cGradedTest\u003e getTypicalGradedTest() {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(GT1, GT2));","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"raydenlim":65}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final Index INDEX_THIRD_TASK \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"Respirayson":3,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withGradedTest().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" .withGradedTest().build();","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" public static final Set\u003cPerson\u003e DEFAULT_PERSONS \u003d SampleDataUtil.getStudentSet(AMY);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"raydenlim":19,"-":65,"wesho1107":1}},{"path":"src/test/java/seedu/address/testutil/TypicalSessions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ldinghan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"ldinghan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"ldinghan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"ldinghan"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.SessionListBook;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.Session;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"ldinghan"},"content":"import seedu.address.model.session.SessionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"ldinghan"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"ldinghan"},"content":" * A utility class containing a set of typical sessions for testing purposes.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"ldinghan"},"content":"public class TypicalSessions {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"ldinghan"},"content":" * A typical empty session with session number 9, with no students.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"ldinghan"},"content":" public static final Session EMPTY_SESSION \u003d new SessionBuilder().withSessionNumber(\"9\").build();","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 1, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION1A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 1, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION1B \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"1\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 2, attended by Bob.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"2\").withStudent(TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Alice and Bob.","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION3A \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"3\").withStudents(TypicalPersons.ALICE, TypicalPersons.BOB).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Alice.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION3B \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"3\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 2, attended by Alice.","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION_TYPICAL1 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"5\").withStudent(TypicalPersons.ALICE).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"ldinghan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ldinghan"},"content":" * A typical session with session number 3, attended by Benson.","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ldinghan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"ldinghan"},"content":" public static final Session SESSION_TYPICAL2 \u003d new SessionBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"ldinghan"},"content":" .withSessionNumber(\"6\").withStudent(TypicalPersons.BENSON).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"ldinghan"},"content":" public static SessionListBook getTypicalSessionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"ldinghan"},"content":" SessionListBook sb \u003d new SessionListBook();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"ldinghan"},"content":" for (Session session : getTypicalSessions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"ldinghan"},"content":" sb.addSession(session);","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"ldinghan"},"content":" return sb;","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"ldinghan"},"content":" public static SessionList getTypicalSessions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"ldinghan"},"content":" SessionList typicalSessions \u003d new SessionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"ldinghan"},"content":" List\u003cSession\u003e sessionsList \u003d new ArrayList\u003c\u003e(Arrays.asList(SESSION_TYPICAL1, SESSION_TYPICAL2));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"ldinghan"},"content":" typicalSessions.setSessionList(sessionsList);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"ldinghan"},"content":" return typicalSessions;","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"ldinghan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"ldinghan"},"content":"}","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"ldinghan"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"ldinghan":79}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.TaskListBook;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2023-10-05"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"public class TypicalTasks {","lastModifiedDate":"2023-10-05"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK1 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-05"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" .withName(\"Do cs2103t\")","lastModifiedDate":"2023-10-05"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"Complete PRS\")","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK2 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" .withName(\"Read quant guide\")","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"The green book\")","lastModifiedDate":"2023-10-05"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK3 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" .withName(\"Study cs3233\")","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"Read Steven Halim Book for competitive programming\")","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public static final Task TASK4 \u003d new TaskBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" .withName(\"Plan for mods\")","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" .withDescription(\"SEPSPEPESEP\")","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" private TypicalTasks() {} // prevents instantiation","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" * Returns an {@code TaskListBook} with all the typical tasks.","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" public static TaskListBook getTypicalTaskList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" TaskListBook ab \u003d new TaskListBook();","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" for (Task task : getTypicalTasks()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" ab.addTask(task);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" return ab;","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" public static List\u003cTask\u003e getTypicalTasks() {","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(TASK1, TASK2));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"Respirayson":51}}] diff --git a/AY2324S1-CS2103T-T15-1_tp_master/commits.json b/AY2324S1-CS2103T-T15-1_tp_master/commits.json index b85af244..de40f364 100644 --- a/AY2324S1-CS2103T-T15-1_tp_master/commits.json +++ b/AY2324S1-CS2103T-T15-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ldinghan":[{"date":"2023-10-04","commitResults":[{"hash":"c8e897163dcf7df872ba66e1a5b6add9e5d97990","isMergeCommit":false,"messageTitle":"Add Ding Han info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":3}}}]},{"date":"2023-10-06","commitResults":[{"hash":"5c36c39f2cf4ec8d4b53878f5cfe5b46a899f0c5","isMergeCommit":true,"messageTitle":"Merge pull request #48 from raydenlim/branch-UGDG-update","messageBody":"Update UG and DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"29709b32f05b3801aa033b25c1aa30189dd16ce7","isMergeCommit":false,"messageTitle":"Add skeleton for attendance features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"039ac32c785163ded66dde581456a8e7e1264070","isMergeCommit":false,"messageTitle":"Add skeleton for attendance features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":11}}},{"hash":"b24359b13ded2c91d517f9e9e3031ca4a98aa15a","isMergeCommit":false,"messageTitle":"Add more skeleton for session feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":3}}},{"hash":"94b2c8eb6d8e35dfbe261e288f2f0275835544dd","isMergeCommit":false,"messageTitle":"Fix session feature tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":146,"deletions":18},"test-code":{"insertions":38,"deletions":10}}},{"hash":"8e9847cdb21f8a3a046dc1fb70d0ec4b01d97bed","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":21}}},{"hash":"20ea5c487b4af02096c4f3b057813c536f7e703b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-feature-attendance","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9c0c1d21b7089b368b6f2b0c8a978e03a8b71c4","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"aa8ced6db2930f322f46f94127fb9cabd2155403","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-feature-attendance\u0027 of https://github.com/ldinghan/tp into branch-feature-attendance","messageBody":"Fix checkstyle\n","fileTypesAndContributionMap":{}},{"hash":"7b3d984a5a73403fb1d5ea1203e14b9850e42352","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"docs":{"insertions":17,"deletions":17},"test-code":{"insertions":4,"deletions":0}}},{"hash":"47c40474bfa298369dcabb17bd97b62a0e2bbb5e","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"08e269d70ebd131996ff29268a3f8da807f20b93","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0e11254564a671ea9d648d99096fda1db1a61e95","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":27}}},{"hash":"4545ceee2261171f56cadda3156eae20996644d1","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"1ad32c27363815cc451fb491c69cd9dd521d5c05","isMergeCommit":false,"messageTitle":"Shorten lines in code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":9}}},{"hash":"ebddf705d4199bb0d43282fd97a342d57d555c79","isMergeCommit":false,"messageTitle":"Fix test result","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a59449c469a2b9cc5bbb2bc844c20fb0815df13a","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":5},"test-code":{"insertions":93,"deletions":0}}},{"hash":"fa1a9ea60d89368517037321f80e2a6c71e6cb59","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"27f266f0ca781c2e75307cfc9901ad0ce2f4d1c3","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cdf791a4f9d645101e720f4610bc89533202528a","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":23}}},{"hash":"cd0c301d73d9802d5a299c05ea43a6949ad045c4","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":1}}},{"hash":"4c5fba81eb3ee7ef3be66a278a4705557ec55528","isMergeCommit":false,"messageTitle":"Add test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":25},"test-code":{"insertions":39,"deletions":12}}},{"hash":"34b44bffffd305a44ab2a91b4ef85c9a849dd6f7","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":4},"test-code":{"insertions":25,"deletions":6}}},{"hash":"ca4fd7f7bbefe1f983f784f8bbeb06e25608f2b9","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ef17e9972c0b05ba460ffef5f0d0f793d3023376","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ab6f81077ca257af0e11db69b7daba9da01394e7","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":55,"deletions":0}}},{"hash":"3188768bb1384570dd83cb661977a3d0bf687426","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":18},"test-code":{"insertions":97,"deletions":5}}},{"hash":"b292e5ea44c3cf15b468c76ada4d3fa2cca8d00b","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":2,"deletions":3}}},{"hash":"24d5bb2558a01cf8ae200830c33b42fc85a23188","isMergeCommit":false,"messageTitle":"Fix tests disrupting other tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}}]},{"date":"2023-10-14","commitResults":[{"hash":"68d4d7b7f339849f721d46437609e0c83b715c44","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":12},"test-code":{"insertions":3,"deletions":2}}},{"hash":"8239ec8bd79d20c57e3a6a49ddfcc96b19972b49","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":32},"test-code":{"insertions":27,"deletions":13}}},{"hash":"20f117b3f13cd07a6c570b62dc1e739acd4b53e5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"08b66c5f5a8ff869cf593763d7e67659308bbf4f","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":70,"deletions":0}}},{"hash":"28d7ff86518615f2081c309d5ace1cbcb0f1cff5","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"56f09d5de4e09d9c1f94dcfaee22058ce33594ff","isMergeCommit":false,"messageTitle":"Remove Session references from Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":70},"test-code":{"insertions":20,"deletions":86}}},{"hash":"f1006e10d05a6114349f2dd2a5307ed59da358b3","isMergeCommit":false,"messageTitle":"Add storage features for Session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":10}}},{"hash":"a96710f3e7f8537bd9f31b561d940b3beb27a0c8","isMergeCommit":false,"messageTitle":"Add storage tests for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":5},"test-code":{"insertions":144,"deletions":3}}},{"hash":"c98e6d8c3828923cfb537bebe68411a9b9507ae1","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6},"test-code":{"insertions":316,"deletions":4}}},{"hash":"a53517536906a07069823ced2089f765806b2890","isMergeCommit":false,"messageTitle":"Fix SessionList equality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":26},"test-code":{"insertions":91,"deletions":16}}}]},{"date":"2023-10-17","commitResults":[{"hash":"3cd1439476a644bf6587f137b0b6710e1ee6f380","isMergeCommit":false,"messageTitle":"Add SessionBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":337,"deletions":75},"test-code":{"insertions":273,"deletions":48}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d0e450eaa3d352385f8dedb18754200a3628f177","isMergeCommit":false,"messageTitle":"Add session Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":216,"deletions":6}}},{"hash":"aece26312a8a3265fa3ec8afbea54f90bd05a2f0","isMergeCommit":false,"messageTitle":"Add SessionListBook into tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":10},"test-code":{"insertions":53,"deletions":23}}},{"hash":"57bc230f77d81acdbecd6e9341208cfa012ce269","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0},"test-code":{"insertions":14,"deletions":0}}},{"hash":"883a52db0996e29bac2c33b4e0fd44411fe2d2e0","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":86,"deletions":2}}},{"hash":"49353fbc2c59d8b59ef2ccd4ff4c916950ce522a","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c5691d317f24cba0377c6f5cafa4d5e487de83cf","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":28,"deletions":9}}},{"hash":"66847dc14f6eec2192919aba325b0b42214c2134","isMergeCommit":false,"messageTitle":"Fix MainApp bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":5,"deletions":0}}},{"hash":"46ee10e3914ae96a3bf7255cf40475b31ec3e2fc","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"799f52aa42d9b6a58052c4d7a090a01c19757e7f","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"94ca8abc474c912487b5acc3c3f7c316c3e1993d","isMergeCommit":false,"messageTitle":"Fix Task Command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"f272db7583e2838c16bbd60d93e02cb998432a36","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"0aee68cabaa785074e560bd04069d95a46de7415","isMergeCommit":false,"messageTitle":"Add Task tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"277b6b0adcb705a0a596a920b6d7585995201bbb","isMergeCommit":false,"messageTitle":"Test codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"c9598d4969e32d655721e36f1e1e42d2bf4cd233","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"de2d29663a4a86c94ee19a2eb074890e33154b7a","isMergeCommit":true,"messageTitle":"Merge pull request #60 from ldinghan/branch-feature-attendance","messageBody":"Add session Ui","fileTypesAndContributionMap":{}}]}],"Respirayson":[{"date":"2023-09-25","commitResults":[{"hash":"c6a6d5d4961350a8ed4c67afedd45e69332a4b2d","isMergeCommit":false,"messageTitle":"Add raysonYeap.md to docs/team","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}}]},{"date":"2023-09-27","commitResults":[{"hash":"34ecbceb76fd3246a371ab872faa2fc80cfe2c2f","isMergeCommit":false,"messageTitle":"Create Task Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":217,"deletions":0}}},{"hash":"ed968da4b6263d5e47d2b987ba1d21da8d8269d6","isMergeCommit":false,"messageTitle":"Add AddTaskCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"23043daab836b19949fd90123a0f3829795c154c","isMergeCommit":false,"messageTitle":"Change AddTask to throw Exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":2}}},{"hash":"5f4119cda90475518c9c9ddbe5749b2f1a0bfa3b","isMergeCommit":false,"messageTitle":"Make AddTaskCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}},{"hash":"90bc502a3e7d88d431021639e81f88504c331ec0","isMergeCommit":false,"messageTitle":"Add parse input for AddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":107,"deletions":30},"other":{"insertions":154,"deletions":154},"docs":{"insertions":11,"deletions":11}}},{"hash":"78aea5742dc21702b8ca79e954430f88bd226209","isMergeCommit":false,"messageTitle":"Add TaskList and its exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":0}}}]},{"date":"2023-09-28","commitResults":[{"hash":"2abf75f3766822d6f5b090a30545bada7cd0a916","isMergeCommit":false,"messageTitle":"Update image and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":44}}},{"hash":"4177554589a0de8b53fdceaba4529659c2f8b7f7","isMergeCommit":false,"messageTitle":"Rename file to match git username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ab788f5f037b9ae93067cc449e7d2f10e03c7298","isMergeCommit":false,"messageTitle":"Insert Reposense link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b564f26a27826e30222f3ce57658dcc1e7e53736","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Respirayson/add-raysonYeap-info","messageBody":"Update AboutUs and PPP","fileTypesAndContributionMap":{}},{"hash":"6d208b342176c6f854d04571b9d4e6a3fc865e1a","isMergeCommit":false,"messageTitle":"Rename ppp and pic to lowercase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d995d6d8a0e4b93332402641edcd0d61004bb471","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Respirayson/add-raysonYeap-info","messageBody":"Rename ppp and pic to lowercase","fileTypesAndContributionMap":{}},{"hash":"654f326209b9342260375f86106860151c9c09db","isMergeCommit":false,"messageTitle":"Add TaskListBook and ReadOnlyTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}},{"hash":"3e58660ac19b878bdd16262518f9e139e2717feb","isMergeCommit":false,"messageTitle":"Update ModelManager and Model Interface","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":3}}},{"hash":"1d7dfc0f9fc62cb06ba1a942631e1e9f8dc92909","isMergeCommit":false,"messageTitle":"Add Storage Json Models","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":263,"deletions":1}}},{"hash":"9b6381e6b8808350015a0a11e100b0f3adecfe11","isMergeCommit":false,"messageTitle":"Update Storage and StorageManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":7},"test-code":{"insertions":10,"deletions":4}}},{"hash":"0e28210c93e8e24f0b814af0da4d52b703318f42","isMergeCommit":false,"messageTitle":"Fix bug where no persons are shown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}}]},{"date":"2023-09-29","commitResults":[{"hash":"25ce40bf5a81400480c139c068fdbcd1aae97666","isMergeCommit":false,"messageTitle":"Add save task list functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"d7fe8eee469adc5f02176471d3cb20890c2765f1","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}}]},{"date":"2023-09-30","commitResults":[{"hash":"25e39f3f7c4288bdeb646fd7a0190b0204dc08ff","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Respirayson/branch-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"b44e3f99bd631f761ad18ca7aa2ecccbf0c532d3","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e765752921ab9691ea3a2d89ea1fcaae04d29169","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24b6a058a153c7d1ec5bacb4068f710a4a73a9b9","isMergeCommit":true,"messageTitle":"Merge pull request #27 from raydenlim/branch-skeletalPPP","messageBody":"Add raydenlim.md, Updated raydenlim.md","fileTypesAndContributionMap":{}},{"hash":"f0fa20341867cb6fd2c9977b097c1180d49ab634","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"df952d8a14088cee1e2532ac758c92c4f02c61b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bdc3e3e050eb404ea2ac14cbdee751fc7c761faf","isMergeCommit":false,"messageTitle":"Update Tasks for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":77,"deletions":1}}},{"hash":"f6955422fabc207811975f441e77023108074cec","isMergeCommit":false,"messageTitle":"Update user story in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"986d2f13ab981b7535cff6f1f5a7e792bb3d6fc6","isMergeCommit":false,"messageTitle":"Update target user profile in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"59b08b601c36dc95a6552f929265963e014c536a","isMergeCommit":false,"messageTitle":"Add delete a task use case in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":4}}},{"hash":"833e23e2ab96059d0907f8c30a5bcbc53dd2823f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from wesho1107/add-JiaCheng-info","messageBody":"Add Jia Cheng info","fileTypesAndContributionMap":{}},{"hash":"36b0d0e09d44aba4dd40585ea3a0ea329a5685c0","isMergeCommit":true,"messageTitle":"Merge pull request #36 from Originalidk/branch-ryan-info","messageBody":"Add Ryan info","fileTypesAndContributionMap":{}},{"hash":"bc828105c28f4d3fe9e34664bcfa6783930165ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"03ffc32460e2f134a435ab75c02be4187b8dceae","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"3c60ad3eb2c3365ed901997a60a03d8b75d40dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05f1ef4e04511b17233675e6583a8d40dc0f76b6","isMergeCommit":false,"messageTitle":"Fix bug with checkstyle.xml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"other":{"insertions":152,"deletions":152}}},{"hash":"664752727468d89255e1446301ca2feec37342c6","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests for tasklistbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":24},"test-code":{"insertions":107,"deletions":21}}},{"hash":"3f4bec0eaead8ca08fa406155064d103bb2a0f96","isMergeCommit":false,"messageTitle":"Fix repository-wide tests EOF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"417f0b36b2ee41671c918bd85a37f904e75c09a7","isMergeCommit":false,"messageTitle":"Add TaskNameTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":60,"deletions":0}}},{"hash":"4bb3c18b3313c91ca461b81aeaa2b806e0787b0e","isMergeCommit":false,"messageTitle":"Add TaskDescriptionTest and change validation regex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":51,"deletions":0}}},{"hash":"6131862abab2b78c9f205098f3c0ab93237e3907","isMergeCommit":false,"messageTitle":"Update naming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"5748195ee6619a6cef75fc2f0603115f97db62b3","isMergeCommit":false,"messageTitle":"Add TaskBuilder and TaskTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":135,"deletions":4}}},{"hash":"1b2f5d118980f2771e9be86807b434bf2a91ddbf","isMergeCommit":false,"messageTitle":"Add TaskListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"71f7c077b5a6c65643b2b5d9fe0e411d8d70a1a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6816c6cd10036fffa46b9bbfab13d095c37b8bcd","isMergeCommit":false,"messageTitle":"Add nonfunctional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"8bda733b2e6c5da6b3d8351d4552e32668f7c8ab","isMergeCommit":false,"messageTitle":"Remove traces of address book","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"f0d7197a0370cca04ff08a5cde576cbd3b240100","isMergeCommit":false,"messageTitle":"Update Github links in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2023-10-06","commitResults":[{"hash":"27815164b52facf259dda33e1f063dd4494af735","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6c0e94b887a4c3463e8f829808fe548180cab0b","isMergeCommit":false,"messageTitle":"Add TaskNameContainsKeywordPredicateTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":85,"deletions":0}}},{"hash":"2bd0551f2f5c1967065e443b4833fc7737a43c90","isMergeCommit":false,"messageTitle":"Add JsonAdaptedTaskTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":60,"deletions":2}}},{"hash":"f50557871ae58ff0d1bab5388f6b312ba00b2e4b","isMergeCommit":false,"messageTitle":"Add JsonSerializableTaskListBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":0}}},{"hash":"dbfad94dde40c38174583e38f51d4431baa3af94","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"621f7ee919e20bde17d7e065e98c95606737c6c5","isMergeCommit":false,"messageTitle":"Fix JsonSerializableTaskListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":72,"deletions":47}}},{"hash":"5b4784bfab6d27ef538b958b8a41ac124b4d166f","isMergeCommit":false,"messageTitle":"Add JsonTaskListStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":123,"deletions":5}}},{"hash":"3212325ea1222ddaa2991bebd4ed1850bb459ca6","isMergeCommit":false,"messageTitle":"Add newline at EOF for ug and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"398767dab51a4f02c9f977ae966a86479019baea","isMergeCommit":false,"messageTitle":"Update ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0},"test-code":{"insertions":46,"deletions":4}}},{"hash":"b4b7ca2a28bdd7773b223a5f1a522296f0d62770","isMergeCommit":false,"messageTitle":"Add AddTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9},"test-code":{"insertions":120,"deletions":0}}}]},{"date":"2023-10-07","commitResults":[{"hash":"d44b2b3e93d0f37e2e735cf9385423abee5c57ac","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2023-10-12","commitResults":[{"hash":"ae81cb0453f1e28c1c72ded5f5f2a5c93a5763df","isMergeCommit":false,"messageTitle":"Add getTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":1},"test-code":{"insertions":27,"deletions":1}}},{"hash":"ef8790b6661640efb6748710151d76a48a3593b0","isMergeCommit":false,"messageTitle":"Make Task Description optional field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":6}}},{"hash":"889d8b5463b281a206f5a7c983781c83fcede06e","isMergeCommit":false,"messageTitle":"Change codebase based on pr review","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"d1226ea1513dafc4f29e7e57428a20b5f4a08905","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"961c290b4500fad1ce6c756e3152a8a849453f13","isMergeCommit":false,"messageTitle":"Add Execution for AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":4}}},{"hash":"8f4668b8226f18f3756b57037c34181143bd3034","isMergeCommit":false,"messageTitle":"Add JavaFX for Task List","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":7}}}]},{"date":"2023-10-18","commitResults":[{"hash":"cdf615062f46e7e2cc5641a13d725dae264e5b94","isMergeCommit":false,"messageTitle":"Add DeleteTask functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":1}}},{"hash":"a0bbfa23c0e2c30defde4a041347d507eef20217","isMergeCommit":false,"messageTitle":"Add MarkTask as completed functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":172,"deletions":9},"test-code":{"insertions":6,"deletions":6}}},{"hash":"653e07c714dbcc5cf2ce71a2409a33b286b1c59c","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand integration tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":147,"deletions":0}}},{"hash":"98823820087f339e14ed1b954153a19b4de5da03","isMergeCommit":false,"messageTitle":"Refactor Task to be Immutable and add JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":47}}},{"hash":"edfcf95aad6574ae03a52038924695c91e201e38","isMergeCommit":false,"messageTitle":"Rename to CompleteTaskCommand and add IncompleteTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":3},"other":{"insertions":14,"deletions":14},"test-code":{"insertions":0,"deletions":5}}},{"hash":"99f184410ca7a907a722746fc56713ebcb9a4134","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":0}}},{"hash":"678f940a2eb83e48814e9124368c640523a505c0","isMergeCommit":false,"messageTitle":"Add tests for TaskCommands and TaskCommandParsers","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":296,"deletions":2}}},{"hash":"3a662d5aca78f20e354e9bcfffc552c2a3fe25b3","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":66,"deletions":0}}},{"hash":"042572fc44fc14953ad34a3deea07bfe2d46bffc","isMergeCommit":false,"messageTitle":"Update Task toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"b0ad964dd94624306a35d1b8851db256fcc7ac14","isMergeCommit":false,"messageTitle":"Add TaskPriority field to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":20},"test-code":{"insertions":14,"deletions":1}}},{"hash":"2ddc87160e8a945693d7c4dbd50c600c3746acd9","isMergeCommit":false,"messageTitle":"Update tests for TaskPriority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":25,"deletions":6}}},{"hash":"3066c82903ec2c2999dd38b09f9ab87afb400c5a","isMergeCommit":false,"messageTitle":"Fix bugs related to marking task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":3}}},{"hash":"0d01308d5089c657afec78c7eb11aaf113afccc3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"ccb654b9c8335066e68e3a802a428d444cd2a6e6","isMergeCommit":false,"messageTitle":"Add TaskPriorityTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"2bbd8b23adef1236668a866da20b3d2351303a7c","isMergeCommit":false,"messageTitle":"Update Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4}}}]},{"date":"2023-10-19","commitResults":[{"hash":"67339d3f486d765ef2cd9949493e82ea46c046b0","isMergeCommit":false,"messageTitle":"Fix bug with MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d08457f7c375975085475dbfc2023b80a0d130e9","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Respirayson/branch-task-functionality","messageBody":"Branch task functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"4ebe18619c5c5925f831c942bf24133ac57ae08e","isMergeCommit":true,"messageTitle":"Merge pull request #54 from raydenlim/branch-AddGradedTest","messageBody":"branch-AddGradedTest","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"raydenlim":[{"date":"2023-09-29","commitResults":[{"hash":"c1020851c6bcbf1d5c9ee02b654e0aff20b31a7a","isMergeCommit":false,"messageTitle":"Branch-skeletal-ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":7}}},{"hash":"b994d8828e6a4837e3c9dad4db1f6ff02314cbaa","isMergeCommit":false,"messageTitle":"Branch-skeletal-ppp2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-30","commitResults":[{"hash":"20310f83f64efe81bb07f553dd006c1d341066ae","isMergeCommit":false,"messageTitle":"Update raydenlim.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-05","commitResults":[{"hash":"917f163e291b7791e13b9d36b311cebbc8aa789c","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8e93f162f3905ef792f39ad89d2656f1ef0ad77","isMergeCommit":true,"messageTitle":"Merge pull request #47 from Respirayson/branch-rayson-developerGuide","messageBody":"Branch developer guide","fileTypesAndContributionMap":{}},{"hash":"9225cbbc0ddcc8e6259d66929d7e65f09ff638d7","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"291597c5e98f072f987a438bd677670a157c2b91","isMergeCommit":false,"messageTitle":"UGDG-update","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":125,"deletions":25}}},{"hash":"435294c1880075656c3c5ffddfe7a5eb952a9868","isMergeCommit":false,"messageTitle":"Revised UGDG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"c8c50396eb4513101ec8d1fd9e7673a777892fdc","isMergeCommit":false,"messageTitle":"branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":641,"deletions":17},"test-code":{"insertions":61,"deletions":12}}},{"hash":"6a0517434e746363feca0ae9674eb95f38aa2191","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1719a5bf5afa630228947cd7f83bedd790a2def9","isMergeCommit":false,"messageTitle":"branch-test","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"309c1252cfa387b020d3b68b346c2882635e545e","isMergeCommit":false,"messageTitle":"fix: gradedTest logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":890,"deletions":64},"test-code":{"insertions":340,"deletions":27}}},{"hash":"16ef228dabcb76b558f94d5e798733792126f8e2","isMergeCommit":false,"messageTitle":"fix: * imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":23},"other":{"insertions":1,"deletions":1}}},{"hash":"e9cd24e9b1b2c50b26cf3f0b3a0bbea0941fbe01","isMergeCommit":false,"messageTitle":"style: removed white spaces in UGDG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"54b11a1348ce121091badd2a1ddf51af74a3b460","isMergeCommit":false,"messageTitle":"style: added newline at EOF supression.xml","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"142333388a936bc6a8ac5c8cb5f31592c9ecc1e0","isMergeCommit":true,"messageTitle":"Merge pull request #53 from ldinghan/branch-feature-attendance","messageBody":"Add skeleton for session feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"4d221cf1da63c73dcb2a13a81d1b53b26da938bf","isMergeCommit":false,"messageTitle":"Added GradedTest logic and test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":497,"deletions":127},"other":{"insertions":5,"deletions":4},"docs":{"insertions":1,"deletions":2},"test-code":{"insertions":673,"deletions":34}}},{"hash":"375f307094d5d1bc762985053e9a4f21dab163ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddGradedTest2\u0027 into branch-AddGradedTest","messageBody":"# Conflicts:\n#\tREADME.md\n#\tsrc/main/java/seedu/address/MainApp.java\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n#\tsrc/main/java/seedu/address/model/UserPrefs.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/storage/Storage.java\n#\tsrc/main/java/seedu/address/storage/StorageManager.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/AddCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/storage/StorageManagerTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"9888e39036892c2c39fd4c9fc929182f91dd0316","isMergeCommit":false,"messageTitle":"Fixed Logic and Test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":126},"test-code":{"insertions":122,"deletions":121}}},{"hash":"7d403c5b01baf12bdcd8e381ce31b8e70381c3ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5f06217f1603df92d110d4b14eb9df6c90f84920","isMergeCommit":false,"messageTitle":"Fix merge issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":14},"test-code":{"insertions":15,"deletions":15}}},{"hash":"dfe4511ea941edab91e7c52ce709948985c1be8e","isMergeCommit":false,"messageTitle":"Deleted \\n from GradedTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-20","commitResults":[{"hash":"c8b4ded91fcf758173e9ad2bb7231dffdff16a95","isMergeCommit":false,"messageTitle":"Add Test Cases for coverage, Removed AddGradedTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":309},"test-code":{"insertions":242,"deletions":41}}},{"hash":"806d25d72d6fc04636752504d22b46cc603d0909","isMergeCommit":false,"messageTitle":"Merge Conflict resolution","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1188,"deletions":52},"test-code":{"insertions":1219,"deletions":291}}},{"hash":"c22d434430a17e8ac0ef8a79dfe48a067fba94d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"730155ccd401bc89604b104f1eb977751b11e1cc","isMergeCommit":false,"messageTitle":"Updated UserPrefs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d5b2d08cedde57709db920b2518adda051f4c203","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-AddGradedTest\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83ad50dcc3064aeeeda5f09325efd8eab67c8ace","isMergeCommit":false,"messageTitle":"Updated UserPrefs.java Updated TypicalPersons.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":2,"deletions":4}}},{"hash":"0626be34cdfbc228f4955c1d4124320dfaf01a4e","isMergeCommit":false,"messageTitle":"Add GradedTestListTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":162,"deletions":2}}},{"hash":"e132d98f4613db7c8733f82663cacd020d13de9e","isMergeCommit":false,"messageTitle":"Update GradedTestListTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"375e10252a31e1fa96698ee5629c82510c174a8b","isMergeCommit":false,"messageTitle":"Add testcases for AddGradedTestTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":115,"deletions":5}}},{"hash":"1e804015a91df1a0cad7ec4c4eec7bc08ff36f7f","isMergeCommit":false,"messageTitle":"Deleted Unnecessary files in EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"b7df6301ff0fe0360a51782b86e867ef03016347","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddGradedTest5\u0027 into branch-AddGradedTest","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"1f53f5bb43f0ed45707639c078f15440eea1d9b5","isMergeCommit":false,"messageTitle":"Resolve Merge conflict, Edited minWidth of MainApp.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":8},"test-code":{"insertions":5,"deletions":3}}},{"hash":"5ff62b2fad8e0f0e450a016734aa571e4d8600f7","isMergeCommit":false,"messageTitle":"Removed Errors in testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":11}}},{"hash":"2a7814bd2e2e1aa177313a37715f48af36768938","isMergeCommit":false,"messageTitle":"Update Grammar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Originalidk":[{"date":"2023-10-03","commitResults":[{"hash":"17592387bf2859ac4989eb21fde17ad5d94f80a5","isMergeCommit":false,"messageTitle":"Add Ryan info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":5}}},{"hash":"481d1a94eb6704700db3a92f8f759a5c50f43d32","isMergeCommit":false,"messageTitle":"Update Ryan info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-05","commitResults":[{"hash":"21239efb888ff5b716e9122dea1d6c40aeb6a622","isMergeCommit":true,"messageTitle":"Merge pull request #41 from wesho1107/branch-UG-consultation","messageBody":"Update UG for consult features","fileTypesAndContributionMap":{}},{"hash":"82ecc9d9d56a27d8fc0063176e55980865b08cec","isMergeCommit":false,"messageTitle":"Update UserGuide and DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":140,"deletions":0}}},{"hash":"26f70983043f73a1c17f4d076a951aa6c78fcea0","isMergeCommit":false,"messageTitle":"Updated UG and DG slightly","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"80b10fee544a04b1a0d768cd492a91e8a184a861","isMergeCommit":false,"messageTitle":"Added Assignment class with Grade and Comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":293,"deletions":35},"docs":{"insertions":72,"deletions":72},"test-code":{"insertions":10,"deletions":16}}},{"hash":"cd6c8d4b821fbdcd11296eb0b2bb563a6a933a46","isMergeCommit":false,"messageTitle":"Update grading and comment command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":23}}},{"hash":"c89cc1c605828e0b2d4159ef688c95fced5f8948","isMergeCommit":false,"messageTitle":"Change person to student in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":18}}},{"hash":"fe57f1eb8e5082c8cafa3632a44b552c3b886b26","isMergeCommit":false,"messageTitle":"Change person to student in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":44}}},{"hash":"d11ce0af7ce44c14b099d3ffb093f77b64637744","isMergeCommit":false,"messageTitle":"Udate UserGuide from student to person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"2b0472136826e67b674af3930d51f1f8a2a5730b","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Respirayson/branch-task-management","messageBody":"Branch task management","fileTypesAndContributionMap":{}},{"hash":"bd6f65b2146e5de0f3f10d4c9744268174e82223","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignment-feature","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"ac2ed9e844ae46327e7c772dcb8912eef3522751","isMergeCommit":false,"messageTitle":"Added storage component for feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":559,"deletions":162}}}]},{"date":"2023-10-15","commitResults":[{"hash":"d3e7f5d22a417dcd64e2a06fe343055176ce24df","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignment-feature","messageBody":"Update ReadME.md with upstream\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"12bb23145bbc6d0b7a03bccafcd76292b86d8dce","isMergeCommit":false,"messageTitle":"Fix failed test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5},"test-code":{"insertions":6,"deletions":0}}},{"hash":"30b30c95ceb789f244fe0c49bae5374b91557808","isMergeCommit":true,"messageTitle":"Merge session feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2eb04aaab3139aa1692fd95d8bf8d3c9bda74dac","isMergeCommit":false,"messageTitle":"Add parser logic and fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":113},"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d9b68bb6da2b398a9c6bf946062a171bf437fccc","isMergeCommit":false,"messageTitle":"Add test cases for command and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":41},"test-code":{"insertions":172,"deletions":1}}},{"hash":"2ad641b6ef1607e6739992c39993f3e6eb0e14e2","isMergeCommit":false,"messageTitle":"Add test cases to assignment related components","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":76,"deletions":0}}},{"hash":"4495d45b943c527dd162e940e0ff804957deaebd","isMergeCommit":false,"messageTitle":"Update storage and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":30}}},{"hash":"a1cb1f0f03a3b64d94e02d4b2d73f167ffa64659","isMergeCommit":true,"messageTitle":"Update parser with task feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c782edb513e5ce9630de199424f0aaea26a1410","isMergeCommit":false,"messageTitle":"Update UG grading features with index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}},{"hash":"4811b22c9d13bb97923e71a1fdb6b722165b282f","isMergeCommit":false,"messageTitle":"Fix checkstyle and test case bug","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4008cbd9b6479d6baf67d5eb85d81db9d32d11d4","isMergeCommit":false,"messageTitle":"Remove JsonRootValue from AssignmentMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"ec647041e236578ef7203539910343841f104b1d","isMergeCommit":true,"messageTitle":"Update with consultation feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4f122758a7890c081d5bcf353803ff9c882ce7bb","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e3647796c29bad4d82f523fdcf9acbc3cd51e742","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f878e9d9471f97dd1061a17a41767ae623456bc2","isMergeCommit":false,"messageTitle":"Reduce abstraction of AssignmentMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2023-10-20","commitResults":[{"hash":"3570e19cde78ff9c9c79295650a6bbfe9a7cc675","isMergeCommit":false,"messageTitle":"Revert \"Reduce abstraction of AssignmentMap\"","messageBody":"This reverts commit f878e9d9471f97dd1061a17a41767ae623456bc2.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":11}}},{"hash":"aea1f472336141e8323497e1a44f9c0e683a4d34","isMergeCommit":false,"messageTitle":"Remove tag from JsonAdaptedPerson second constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"d0b48bc464295af6080c80280008b20922293413","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"67a3c4e9000506c034842c17169d2b6a25628570","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson constructor to be same line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"ff26a6c70e94471fdfa03997b7b5beaab00c64d5","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Originalidk/branch-assignment-feature","messageBody":"Branch assignment feature","fileTypesAndContributionMap":{}}]}],"wesho1107":[{"date":"2023-10-03","commitResults":[{"hash":"39b06f8030905bc0598ad2484f177b4cb2778783","isMergeCommit":false,"messageTitle":"Add AboutUs details and personal .md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":4}}},{"hash":"ca2d9be646ce78c9fd0ec8e9a92710384418b817","isMergeCommit":false,"messageTitle":"Rename PPP file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bd6b1dd8b73cf99e1066b0c7b0caa5fad116ecea","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"039089a2b89b5fcec1d106abc2a8868f75ee045f","isMergeCommit":false,"messageTitle":"Update newline and whitespace in .md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-04","commitResults":[{"hash":"8dd3b0da51d58201c45bb1f1d316b319b3104af3","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Respirayson/branch-rayson-docs","messageBody":"Merge respirayson UG update","fileTypesAndContributionMap":{}},{"hash":"a4a69ba3830b231a520a6e5e8c3fb152df4c6c84","isMergeCommit":true,"messageTitle":"Merge pull request #38 from ldinghan/branch-DingHan-docs","messageBody":"Add Ding Han info","fileTypesAndContributionMap":{}},{"hash":"afe5c3e1f8f1b9e3a1d8e999a77fef74f2cf12e2","isMergeCommit":false,"messageTitle":"Update UG for consult features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":92,"deletions":10}}}]},{"date":"2023-10-05","commitResults":[{"hash":"e94ff599cb71d2ca96ea3e763df54b2e95b22b15","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Originalidk/master","messageBody":"Update UserGuide and DeveloperGuide from Originalidk","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"dc552d7877d79f59b014ae3d149b66d5d1a08925","isMergeCommit":false,"messageTitle":"Add skeleton for CreateConsultationCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":4}}},{"hash":"2c2d3af2b7c775b71c8061a5507b3f5f4171bf53","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":25}}}]},{"date":"2023-10-13","commitResults":[{"hash":"6872a1b9bf5d4cf6da592ef827ec98f927ed337e","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Originalidk/master","messageBody":"Update grading and comment in UG","fileTypesAndContributionMap":{}},{"hash":"97a94cac0dd8fecf53768218591b8f791eaab93a","isMergeCommit":false,"messageTitle":"Fix consultation person bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"49b0500e4c0355c1072d3fc9913e77f339bd8c12","isMergeCommit":false,"messageTitle":"Update createconsult to support multiple students","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":22}}},{"hash":"f2fc65155d85d78ecc31df59b623970b4dcf6a07","isMergeCommit":false,"messageTitle":"Add JsonAdaptedConsultation in storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"ae2416b1ddc7feae2ab52f5e8be71f9b25b313e7","isMergeCommit":false,"messageTitle":"Change message format for creating consultation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"72253080212d3fa62f054ad28bee45d5a5c45998","isMergeCommit":true,"messageTitle":"Resolve merge conflict on Task features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa5d52b70e09b5e414037efc782700d970849bfe","isMergeCommit":false,"messageTitle":"Collapse requireNonNull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14}}},{"hash":"3071af4cb82c17693e9c73ae1b9d6b3388c13193","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces in UG and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"021f50864756a0c2000399e7842fd9310c4ac2f2","isMergeCommit":false,"messageTitle":"Remove newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d625f50856b570c1d8eeac760156fe19d257f632","isMergeCommit":false,"messageTitle":"Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"526196051add144a6458aa6c13c3ecb324128a5b","isMergeCommit":false,"messageTitle":"Improve code standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":19}}},{"hash":"893f7be91af429fef0eb38eb40c790afca95020e","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5}}},{"hash":"a9419f0d3d157251beba84f3965cb4b42ef824b4","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"17e5d1e0f452b16267c286f180f03f34308fe56e","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedConsultation import oder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"cab619e64acc52c4a678cdfa8b2250ddbd184c39","isMergeCommit":false,"messageTitle":"Fix lexicographical order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"953e0c8d5cec03fe324fc4499527a855e47509f2","isMergeCommit":false,"messageTitle":"Update AddCommandTest throws","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"d30d2463b92ace8d415c33054813b660428a8951","isMergeCommit":false,"messageTitle":"Add tests for consultation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":2},"other":{"insertions":1,"deletions":3},"test-code":{"insertions":161,"deletions":0}}},{"hash":"b06ee2454970d7015c2bd14fee6b7bd30f22ee7f","isMergeCommit":false,"messageTitle":"Add tests for ConsultationList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19},"test-code":{"insertions":74,"deletions":0}}},{"hash":"65614f90187e7a56b5b23915d3e9513b97e33560","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":22},"test-code":{"insertions":23,"deletions":24}}},{"hash":"45d103403a4471fe7904dde2ab16389c0431ed1a","isMergeCommit":false,"messageTitle":"Debug test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1},"test-code":{"insertions":11,"deletions":12}}},{"hash":"548832ab313604c1fdf01d6a8f87f3ed510d14d2","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"039f556713dc725fe922e65b1681a435df15b3cc","isMergeCommit":false,"messageTitle":"Change access modifier","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"2f039b0d94bfb56f61ea1ae2b8570233f168eff9","isMergeCommit":false,"messageTitle":"Add test cases for CreateConsultationCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":4},"test-code":{"insertions":121,"deletions":2}}},{"hash":"0af7be9b36a7720ccc333caba75bde8ef06f6b5e","isMergeCommit":false,"messageTitle":"Fix checkstyle for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":13}}}]},{"date":"2023-10-14","commitResults":[{"hash":"293687a39673b02be4ffcc45a4bec99c79ddd9a0","isMergeCommit":false,"messageTitle":"Add tests for matchName and comment unused code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":27},"test-code":{"insertions":100,"deletions":5}}},{"hash":"7df8ddf11d314b0ff8a26b73786d07df2f13f8d0","isMergeCommit":false,"messageTitle":"Remove dead code in Messages.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"db817c020945888ea42c43dc5869de380c1b8fec","isMergeCommit":false,"messageTitle":"Comment out JsonAdaptedConsultation to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":41}}}]},{"date":"2023-10-18","commitResults":[{"hash":"0c4d7ae7eb100f48fb32bbfd42cc422fd90f5d09","isMergeCommit":true,"messageTitle":"Deconflict after merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c094ae4cd0d83aec12c733459575a9f1264b7ffc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":14},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"5c7897d590eb560df49031b11ad360050ba050c4","isMergeCommit":false,"messageTitle":"Complete CreateConsult feature with UI display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":712,"deletions":77},"test-code":{"insertions":71,"deletions":26}}},{"hash":"93563403b90efa9769c0affc63b09a38e85cf4c4","isMergeCommit":false,"messageTitle":"Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cc7212acf57b5b6e9e34f87d424076fb5217729f","isMergeCommit":false,"messageTitle":"Add new testcases for Consultation feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":6},"test-code":{"insertions":539,"deletions":185}}},{"hash":"d30861917a3858795b6158a5375ce5da94f0ba41","isMergeCommit":false,"messageTitle":"Add JsonSerializableConsultationListTest cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":60,"deletions":5}}},{"hash":"c790937ca30549bc6a7310c02791e7a6b0813a96","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c06e03f67be38e252c31ea80d6d64a604c12e5f8","isMergeCommit":false,"messageTitle":"Fix grammar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9b1a37a2160567962a62f37498b35f0d2802145d","isMergeCommit":true,"messageTitle":"Deconflict merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"acd3503acd36a17e978e31fb365736885e14296d","isMergeCommit":false,"messageTitle":"Add testcases for ConsultationList equals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":45},"test-code":{"insertions":13,"deletions":0}}},{"hash":"41f81689110ecf2f334b62f2be02df7aa0707750","isMergeCommit":false,"messageTitle":"Update JavaDoc mismatches","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":8},"test-code":{"insertions":5,"deletions":6}}},{"hash":"0656487984289d6db16c962538b646455e7cfd7f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wesho1107/branch-feature-consult","messageBody":"Consultation features skeleton: CreateConsultationCommand","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ldinghan":{"docs":35,"functional-code":1837,"test-code":1253},"Respirayson":{"docs":169,"functional-code":1849,"test-code":1538,"other":4},"raydenlim":{"docs":174,"functional-code":1916,"test-code":2006},"Originalidk":{"docs":176,"functional-code":888,"test-code":260},"wesho1107":{"docs":112,"functional-code":911,"test-code":760}},"authorContributionVariance":{"ldinghan":161495.53,"Respirayson":131411.61,"raydenlim":594075.1,"Originalidk":42380.117,"wesho1107":139653.88},"authorDisplayNameMap":{"ldinghan":"CS2103T-T15-1 LIM .. HAN","Respirayson":"CS2103T-T15-1 YEAP..YSON","raydenlim":"CS2103T-T15-1 LIM ..SONG","Originalidk":"CS2103T-T15-1 RYAN..IANG","wesho1107":"CS2103T-T15-1 HO J..HENG"}} +{"authorDailyContributionsMap":{"ldinghan":[{"date":"2023-10-04","commitResults":[{"hash":"c8e897163dcf7df872ba66e1a5b6add9e5d97990","isMergeCommit":false,"messageTitle":"Add Ding Han info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":3}}}]},{"date":"2023-10-06","commitResults":[{"hash":"5c36c39f2cf4ec8d4b53878f5cfe5b46a899f0c5","isMergeCommit":true,"messageTitle":"Merge pull request #48 from raydenlim/branch-UGDG-update","messageBody":"Update UG and DG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"29709b32f05b3801aa033b25c1aa30189dd16ce7","isMergeCommit":false,"messageTitle":"Add skeleton for attendance features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"039ac32c785163ded66dde581456a8e7e1264070","isMergeCommit":false,"messageTitle":"Add skeleton for attendance features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":11}}},{"hash":"b24359b13ded2c91d517f9e9e3031ca4a98aa15a","isMergeCommit":false,"messageTitle":"Add more skeleton for session feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":3}}},{"hash":"94b2c8eb6d8e35dfbe261e288f2f0275835544dd","isMergeCommit":false,"messageTitle":"Fix session feature tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":146,"deletions":18},"test-code":{"insertions":38,"deletions":10}}},{"hash":"8e9847cdb21f8a3a046dc1fb70d0ec4b01d97bed","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":21}}},{"hash":"20ea5c487b4af02096c4f3b057813c536f7e703b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-feature-attendance","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9c0c1d21b7089b368b6f2b0c8a978e03a8b71c4","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"aa8ced6db2930f322f46f94127fb9cabd2155403","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-feature-attendance\u0027 of https://github.com/ldinghan/tp into branch-feature-attendance","messageBody":"Fix checkstyle\n","fileTypesAndContributionMap":{}},{"hash":"7b3d984a5a73403fb1d5ea1203e14b9850e42352","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"docs":{"insertions":17,"deletions":17},"test-code":{"insertions":4,"deletions":0}}},{"hash":"47c40474bfa298369dcabb17bd97b62a0e2bbb5e","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"08e269d70ebd131996ff29268a3f8da807f20b93","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0e11254564a671ea9d648d99096fda1db1a61e95","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":27}}},{"hash":"4545ceee2261171f56cadda3156eae20996644d1","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"1ad32c27363815cc451fb491c69cd9dd521d5c05","isMergeCommit":false,"messageTitle":"Shorten lines in code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":9}}},{"hash":"ebddf705d4199bb0d43282fd97a342d57d555c79","isMergeCommit":false,"messageTitle":"Fix test result","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a59449c469a2b9cc5bbb2bc844c20fb0815df13a","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":5},"test-code":{"insertions":93,"deletions":0}}},{"hash":"fa1a9ea60d89368517037321f80e2a6c71e6cb59","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"27f266f0ca781c2e75307cfc9901ad0ce2f4d1c3","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cdf791a4f9d645101e720f4610bc89533202528a","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":23}}},{"hash":"cd0c301d73d9802d5a299c05ea43a6949ad045c4","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":1}}},{"hash":"4c5fba81eb3ee7ef3be66a278a4705557ec55528","isMergeCommit":false,"messageTitle":"Add test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":25},"test-code":{"insertions":39,"deletions":12}}},{"hash":"34b44bffffd305a44ab2a91b4ef85c9a849dd6f7","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":4},"test-code":{"insertions":25,"deletions":6}}},{"hash":"ca4fd7f7bbefe1f983f784f8bbeb06e25608f2b9","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ef17e9972c0b05ba460ffef5f0d0f793d3023376","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ab6f81077ca257af0e11db69b7daba9da01394e7","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":55,"deletions":0}}},{"hash":"3188768bb1384570dd83cb661977a3d0bf687426","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":18},"test-code":{"insertions":97,"deletions":5}}},{"hash":"b292e5ea44c3cf15b468c76ada4d3fa2cca8d00b","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":2,"deletions":3}}},{"hash":"24d5bb2558a01cf8ae200830c33b42fc85a23188","isMergeCommit":false,"messageTitle":"Fix tests disrupting other tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}}]},{"date":"2023-10-14","commitResults":[{"hash":"68d4d7b7f339849f721d46437609e0c83b715c44","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":12},"test-code":{"insertions":3,"deletions":2}}},{"hash":"8239ec8bd79d20c57e3a6a49ddfcc96b19972b49","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":32},"test-code":{"insertions":27,"deletions":13}}},{"hash":"20f117b3f13cd07a6c570b62dc1e739acd4b53e5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"08b66c5f5a8ff869cf593763d7e67659308bbf4f","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":70,"deletions":0}}},{"hash":"28d7ff86518615f2081c309d5ace1cbcb0f1cff5","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"56f09d5de4e09d9c1f94dcfaee22058ce33594ff","isMergeCommit":false,"messageTitle":"Remove Session references from Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":70},"test-code":{"insertions":20,"deletions":86}}},{"hash":"f1006e10d05a6114349f2dd2a5307ed59da358b3","isMergeCommit":false,"messageTitle":"Add storage features for Session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":10}}},{"hash":"a96710f3e7f8537bd9f31b561d940b3beb27a0c8","isMergeCommit":false,"messageTitle":"Add storage tests for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":5},"test-code":{"insertions":144,"deletions":3}}},{"hash":"c98e6d8c3828923cfb537bebe68411a9b9507ae1","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6},"test-code":{"insertions":316,"deletions":4}}},{"hash":"a53517536906a07069823ced2089f765806b2890","isMergeCommit":false,"messageTitle":"Fix SessionList equality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":26},"test-code":{"insertions":91,"deletions":16}}}]},{"date":"2023-10-17","commitResults":[{"hash":"3cd1439476a644bf6587f137b0b6710e1ee6f380","isMergeCommit":false,"messageTitle":"Add SessionBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":337,"deletions":75},"test-code":{"insertions":273,"deletions":48}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d0e450eaa3d352385f8dedb18754200a3628f177","isMergeCommit":false,"messageTitle":"Add session Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":216,"deletions":6}}},{"hash":"aece26312a8a3265fa3ec8afbea54f90bd05a2f0","isMergeCommit":false,"messageTitle":"Add SessionListBook into tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":10},"test-code":{"insertions":53,"deletions":23}}},{"hash":"57bc230f77d81acdbecd6e9341208cfa012ce269","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0},"test-code":{"insertions":14,"deletions":0}}},{"hash":"883a52db0996e29bac2c33b4e0fd44411fe2d2e0","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":86,"deletions":2}}},{"hash":"49353fbc2c59d8b59ef2ccd4ff4c916950ce522a","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c5691d317f24cba0377c6f5cafa4d5e487de83cf","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":28,"deletions":9}}},{"hash":"66847dc14f6eec2192919aba325b0b42214c2134","isMergeCommit":false,"messageTitle":"Fix MainApp bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":5,"deletions":0}}},{"hash":"46ee10e3914ae96a3bf7255cf40475b31ec3e2fc","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"799f52aa42d9b6a58052c4d7a090a01c19757e7f","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"94ca8abc474c912487b5acc3c3f7c316c3e1993d","isMergeCommit":false,"messageTitle":"Fix Task Command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"f272db7583e2838c16bbd60d93e02cb998432a36","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"0aee68cabaa785074e560bd04069d95a46de7415","isMergeCommit":false,"messageTitle":"Add Task tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"277b6b0adcb705a0a596a920b6d7585995201bbb","isMergeCommit":false,"messageTitle":"Test codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"c9598d4969e32d655721e36f1e1e42d2bf4cd233","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"de2d29663a4a86c94ee19a2eb074890e33154b7a","isMergeCommit":true,"messageTitle":"Merge pull request #60 from ldinghan/branch-feature-attendance","messageBody":"Add session Ui","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"6cb1319c4fa434b2042f500ddcbd4bb81515ce41","isMergeCommit":true,"messageTitle":"Merge pull request #67 from raydenlim/branch-UGDGUpdate","messageBody":"Update UGDG","fileTypesAndContributionMap":{}}]}],"Respirayson":[{"date":"2023-09-25","commitResults":[{"hash":"c6a6d5d4961350a8ed4c67afedd45e69332a4b2d","isMergeCommit":false,"messageTitle":"Add raysonYeap.md to docs/team","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}}]},{"date":"2023-09-27","commitResults":[{"hash":"34ecbceb76fd3246a371ab872faa2fc80cfe2c2f","isMergeCommit":false,"messageTitle":"Create Task Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":217,"deletions":0}}},{"hash":"ed968da4b6263d5e47d2b987ba1d21da8d8269d6","isMergeCommit":false,"messageTitle":"Add AddTaskCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"23043daab836b19949fd90123a0f3829795c154c","isMergeCommit":false,"messageTitle":"Change AddTask to throw Exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":2}}},{"hash":"5f4119cda90475518c9c9ddbe5749b2f1a0bfa3b","isMergeCommit":false,"messageTitle":"Make AddTaskCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}},{"hash":"90bc502a3e7d88d431021639e81f88504c331ec0","isMergeCommit":false,"messageTitle":"Add parse input for AddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":107,"deletions":30},"other":{"insertions":154,"deletions":154},"docs":{"insertions":11,"deletions":11}}},{"hash":"78aea5742dc21702b8ca79e954430f88bd226209","isMergeCommit":false,"messageTitle":"Add TaskList and its exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":0}}}]},{"date":"2023-09-28","commitResults":[{"hash":"2abf75f3766822d6f5b090a30545bada7cd0a916","isMergeCommit":false,"messageTitle":"Update image and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":44}}},{"hash":"4177554589a0de8b53fdceaba4529659c2f8b7f7","isMergeCommit":false,"messageTitle":"Rename file to match git username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ab788f5f037b9ae93067cc449e7d2f10e03c7298","isMergeCommit":false,"messageTitle":"Insert Reposense link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b564f26a27826e30222f3ce57658dcc1e7e53736","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Respirayson/add-raysonYeap-info","messageBody":"Update AboutUs and PPP","fileTypesAndContributionMap":{}},{"hash":"6d208b342176c6f854d04571b9d4e6a3fc865e1a","isMergeCommit":false,"messageTitle":"Rename ppp and pic to lowercase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d995d6d8a0e4b93332402641edcd0d61004bb471","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Respirayson/add-raysonYeap-info","messageBody":"Rename ppp and pic to lowercase","fileTypesAndContributionMap":{}},{"hash":"654f326209b9342260375f86106860151c9c09db","isMergeCommit":false,"messageTitle":"Add TaskListBook and ReadOnlyTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}},{"hash":"3e58660ac19b878bdd16262518f9e139e2717feb","isMergeCommit":false,"messageTitle":"Update ModelManager and Model Interface","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":3}}},{"hash":"1d7dfc0f9fc62cb06ba1a942631e1e9f8dc92909","isMergeCommit":false,"messageTitle":"Add Storage Json Models","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":263,"deletions":1}}},{"hash":"9b6381e6b8808350015a0a11e100b0f3adecfe11","isMergeCommit":false,"messageTitle":"Update Storage and StorageManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":7},"test-code":{"insertions":10,"deletions":4}}},{"hash":"0e28210c93e8e24f0b814af0da4d52b703318f42","isMergeCommit":false,"messageTitle":"Fix bug where no persons are shown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}}]},{"date":"2023-09-29","commitResults":[{"hash":"25ce40bf5a81400480c139c068fdbcd1aae97666","isMergeCommit":false,"messageTitle":"Add save task list functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"d7fe8eee469adc5f02176471d3cb20890c2765f1","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}}]},{"date":"2023-09-30","commitResults":[{"hash":"25e39f3f7c4288bdeb646fd7a0190b0204dc08ff","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Respirayson/branch-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"b44e3f99bd631f761ad18ca7aa2ecccbf0c532d3","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e765752921ab9691ea3a2d89ea1fcaae04d29169","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24b6a058a153c7d1ec5bacb4068f710a4a73a9b9","isMergeCommit":true,"messageTitle":"Merge pull request #27 from raydenlim/branch-skeletalPPP","messageBody":"Add raydenlim.md, Updated raydenlim.md","fileTypesAndContributionMap":{}},{"hash":"f0fa20341867cb6fd2c9977b097c1180d49ab634","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"df952d8a14088cee1e2532ac758c92c4f02c61b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-userguide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bdc3e3e050eb404ea2ac14cbdee751fc7c761faf","isMergeCommit":false,"messageTitle":"Update Tasks for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":77,"deletions":1}}},{"hash":"f6955422fabc207811975f441e77023108074cec","isMergeCommit":false,"messageTitle":"Update user story in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"986d2f13ab981b7535cff6f1f5a7e792bb3d6fc6","isMergeCommit":false,"messageTitle":"Update target user profile in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"59b08b601c36dc95a6552f929265963e014c536a","isMergeCommit":false,"messageTitle":"Add delete a task use case in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":4}}},{"hash":"833e23e2ab96059d0907f8c30a5bcbc53dd2823f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from wesho1107/add-JiaCheng-info","messageBody":"Add Jia Cheng info","fileTypesAndContributionMap":{}},{"hash":"36b0d0e09d44aba4dd40585ea3a0ea329a5685c0","isMergeCommit":true,"messageTitle":"Merge pull request #36 from Originalidk/branch-ryan-info","messageBody":"Add Ryan info","fileTypesAndContributionMap":{}},{"hash":"bc828105c28f4d3fe9e34664bcfa6783930165ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-rayson-docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"03ffc32460e2f134a435ab75c02be4187b8dceae","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"3c60ad3eb2c3365ed901997a60a03d8b75d40dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05f1ef4e04511b17233675e6583a8d40dc0f76b6","isMergeCommit":false,"messageTitle":"Fix bug with checkstyle.xml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"other":{"insertions":152,"deletions":152}}},{"hash":"664752727468d89255e1446301ca2feec37342c6","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests for tasklistbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":24},"test-code":{"insertions":107,"deletions":21}}},{"hash":"3f4bec0eaead8ca08fa406155064d103bb2a0f96","isMergeCommit":false,"messageTitle":"Fix repository-wide tests EOF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"417f0b36b2ee41671c918bd85a37f904e75c09a7","isMergeCommit":false,"messageTitle":"Add TaskNameTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":60,"deletions":0}}},{"hash":"4bb3c18b3313c91ca461b81aeaa2b806e0787b0e","isMergeCommit":false,"messageTitle":"Add TaskDescriptionTest and change validation regex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":51,"deletions":0}}},{"hash":"6131862abab2b78c9f205098f3c0ab93237e3907","isMergeCommit":false,"messageTitle":"Update naming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"5748195ee6619a6cef75fc2f0603115f97db62b3","isMergeCommit":false,"messageTitle":"Add TaskBuilder and TaskTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":135,"deletions":4}}},{"hash":"1b2f5d118980f2771e9be86807b434bf2a91ddbf","isMergeCommit":false,"messageTitle":"Add TaskListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"71f7c077b5a6c65643b2b5d9fe0e411d8d70a1a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6816c6cd10036fffa46b9bbfab13d095c37b8bcd","isMergeCommit":false,"messageTitle":"Add nonfunctional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"8bda733b2e6c5da6b3d8351d4552e32668f7c8ab","isMergeCommit":false,"messageTitle":"Remove traces of address book","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"f0d7197a0370cca04ff08a5cde576cbd3b240100","isMergeCommit":false,"messageTitle":"Update Github links in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2023-10-06","commitResults":[{"hash":"27815164b52facf259dda33e1f063dd4494af735","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6c0e94b887a4c3463e8f829808fe548180cab0b","isMergeCommit":false,"messageTitle":"Add TaskNameContainsKeywordPredicateTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":85,"deletions":0}}},{"hash":"2bd0551f2f5c1967065e443b4833fc7737a43c90","isMergeCommit":false,"messageTitle":"Add JsonAdaptedTaskTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":60,"deletions":2}}},{"hash":"f50557871ae58ff0d1bab5388f6b312ba00b2e4b","isMergeCommit":false,"messageTitle":"Add JsonSerializableTaskListBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":0}}},{"hash":"dbfad94dde40c38174583e38f51d4431baa3af94","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"621f7ee919e20bde17d7e065e98c95606737c6c5","isMergeCommit":false,"messageTitle":"Fix JsonSerializableTaskListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":72,"deletions":47}}},{"hash":"5b4784bfab6d27ef538b958b8a41ac124b4d166f","isMergeCommit":false,"messageTitle":"Add JsonTaskListStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":123,"deletions":5}}},{"hash":"3212325ea1222ddaa2991bebd4ed1850bb459ca6","isMergeCommit":false,"messageTitle":"Add newline at EOF for ug and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"398767dab51a4f02c9f977ae966a86479019baea","isMergeCommit":false,"messageTitle":"Update ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0},"test-code":{"insertions":46,"deletions":4}}},{"hash":"b4b7ca2a28bdd7773b223a5f1a522296f0d62770","isMergeCommit":false,"messageTitle":"Add AddTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9},"test-code":{"insertions":120,"deletions":0}}}]},{"date":"2023-10-07","commitResults":[{"hash":"d44b2b3e93d0f37e2e735cf9385423abee5c57ac","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2023-10-12","commitResults":[{"hash":"ae81cb0453f1e28c1c72ded5f5f2a5c93a5763df","isMergeCommit":false,"messageTitle":"Add getTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":1},"test-code":{"insertions":27,"deletions":1}}},{"hash":"ef8790b6661640efb6748710151d76a48a3593b0","isMergeCommit":false,"messageTitle":"Make Task Description optional field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":6}}},{"hash":"889d8b5463b281a206f5a7c983781c83fcede06e","isMergeCommit":false,"messageTitle":"Change codebase based on pr review","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"d1226ea1513dafc4f29e7e57428a20b5f4a08905","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-task-management","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"961c290b4500fad1ce6c756e3152a8a849453f13","isMergeCommit":false,"messageTitle":"Add Execution for AddTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":4}}},{"hash":"8f4668b8226f18f3756b57037c34181143bd3034","isMergeCommit":false,"messageTitle":"Add JavaFX for Task List","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":7}}}]},{"date":"2023-10-18","commitResults":[{"hash":"cdf615062f46e7e2cc5641a13d725dae264e5b94","isMergeCommit":false,"messageTitle":"Add DeleteTask functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":1}}},{"hash":"a0bbfa23c0e2c30defde4a041347d507eef20217","isMergeCommit":false,"messageTitle":"Add MarkTask as completed functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":172,"deletions":9},"test-code":{"insertions":6,"deletions":6}}},{"hash":"653e07c714dbcc5cf2ce71a2409a33b286b1c59c","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand integration tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":147,"deletions":0}}},{"hash":"98823820087f339e14ed1b954153a19b4de5da03","isMergeCommit":false,"messageTitle":"Refactor Task to be Immutable and add JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":47}}},{"hash":"edfcf95aad6574ae03a52038924695c91e201e38","isMergeCommit":false,"messageTitle":"Rename to CompleteTaskCommand and add IncompleteTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":3},"other":{"insertions":14,"deletions":14},"test-code":{"insertions":0,"deletions":5}}},{"hash":"99f184410ca7a907a722746fc56713ebcb9a4134","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":0}}},{"hash":"678f940a2eb83e48814e9124368c640523a505c0","isMergeCommit":false,"messageTitle":"Add tests for TaskCommands and TaskCommandParsers","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":296,"deletions":2}}},{"hash":"3a662d5aca78f20e354e9bcfffc552c2a3fe25b3","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":66,"deletions":0}}},{"hash":"042572fc44fc14953ad34a3deea07bfe2d46bffc","isMergeCommit":false,"messageTitle":"Update Task toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"b0ad964dd94624306a35d1b8851db256fcc7ac14","isMergeCommit":false,"messageTitle":"Add TaskPriority field to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":20},"test-code":{"insertions":14,"deletions":1}}},{"hash":"2ddc87160e8a945693d7c4dbd50c600c3746acd9","isMergeCommit":false,"messageTitle":"Update tests for TaskPriority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":25,"deletions":6}}},{"hash":"3066c82903ec2c2999dd38b09f9ab87afb400c5a","isMergeCommit":false,"messageTitle":"Fix bugs related to marking task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":3}}},{"hash":"0d01308d5089c657afec78c7eb11aaf113afccc3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"ccb654b9c8335066e68e3a802a428d444cd2a6e6","isMergeCommit":false,"messageTitle":"Add TaskPriorityTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"2bbd8b23adef1236668a866da20b3d2351303a7c","isMergeCommit":false,"messageTitle":"Update Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4}}}]},{"date":"2023-10-19","commitResults":[{"hash":"67339d3f486d765ef2cd9949493e82ea46c046b0","isMergeCommit":false,"messageTitle":"Fix bug with MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d08457f7c375975085475dbfc2023b80a0d130e9","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Respirayson/branch-task-functionality","messageBody":"Branch task functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"4ebe18619c5c5925f831c942bf24133ac57ae08e","isMergeCommit":true,"messageTitle":"Merge pull request #54 from raydenlim/branch-AddGradedTest","messageBody":"branch-AddGradedTest","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"raydenlim":[{"date":"2023-09-29","commitResults":[{"hash":"c1020851c6bcbf1d5c9ee02b654e0aff20b31a7a","isMergeCommit":false,"messageTitle":"Branch-skeletal-ppp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":7}}},{"hash":"b994d8828e6a4837e3c9dad4db1f6ff02314cbaa","isMergeCommit":false,"messageTitle":"Branch-skeletal-ppp2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-30","commitResults":[{"hash":"20310f83f64efe81bb07f553dd006c1d341066ae","isMergeCommit":false,"messageTitle":"Update raydenlim.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-05","commitResults":[{"hash":"917f163e291b7791e13b9d36b311cebbc8aa789c","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8e93f162f3905ef792f39ad89d2656f1ef0ad77","isMergeCommit":true,"messageTitle":"Merge pull request #47 from Respirayson/branch-rayson-developerGuide","messageBody":"Branch developer guide","fileTypesAndContributionMap":{}},{"hash":"9225cbbc0ddcc8e6259d66929d7e65f09ff638d7","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"291597c5e98f072f987a438bd677670a157c2b91","isMergeCommit":false,"messageTitle":"UGDG-update","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":125,"deletions":25}}},{"hash":"435294c1880075656c3c5ffddfe7a5eb952a9868","isMergeCommit":false,"messageTitle":"Revised UGDG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"c8c50396eb4513101ec8d1fd9e7673a777892fdc","isMergeCommit":false,"messageTitle":"branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":641,"deletions":17},"test-code":{"insertions":61,"deletions":12}}},{"hash":"6a0517434e746363feca0ae9674eb95f38aa2191","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1719a5bf5afa630228947cd7f83bedd790a2def9","isMergeCommit":false,"messageTitle":"branch-test","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"309c1252cfa387b020d3b68b346c2882635e545e","isMergeCommit":false,"messageTitle":"fix: gradedTest logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":890,"deletions":64},"test-code":{"insertions":340,"deletions":27}}},{"hash":"16ef228dabcb76b558f94d5e798733792126f8e2","isMergeCommit":false,"messageTitle":"fix: * imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":23},"other":{"insertions":1,"deletions":1}}},{"hash":"e9cd24e9b1b2c50b26cf3f0b3a0bbea0941fbe01","isMergeCommit":false,"messageTitle":"style: removed white spaces in UGDG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"54b11a1348ce121091badd2a1ddf51af74a3b460","isMergeCommit":false,"messageTitle":"style: added newline at EOF supression.xml","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"142333388a936bc6a8ac5c8cb5f31592c9ecc1e0","isMergeCommit":true,"messageTitle":"Merge pull request #53 from ldinghan/branch-feature-attendance","messageBody":"Add skeleton for session feature","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"4d221cf1da63c73dcb2a13a81d1b53b26da938bf","isMergeCommit":false,"messageTitle":"Added GradedTest logic and test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":497,"deletions":127},"other":{"insertions":5,"deletions":4},"docs":{"insertions":1,"deletions":2},"test-code":{"insertions":673,"deletions":34}}},{"hash":"375f307094d5d1bc762985053e9a4f21dab163ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddGradedTest2\u0027 into branch-AddGradedTest","messageBody":"# Conflicts:\n#\tREADME.md\n#\tsrc/main/java/seedu/address/MainApp.java\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n#\tsrc/main/java/seedu/address/model/UserPrefs.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/storage/Storage.java\n#\tsrc/main/java/seedu/address/storage/StorageManager.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/AddCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/storage/StorageManagerTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"9888e39036892c2c39fd4c9fc929182f91dd0316","isMergeCommit":false,"messageTitle":"Fixed Logic and Test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":126},"test-code":{"insertions":122,"deletions":121}}},{"hash":"7d403c5b01baf12bdcd8e381ce31b8e70381c3ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5f06217f1603df92d110d4b14eb9df6c90f84920","isMergeCommit":false,"messageTitle":"Fix merge issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":14},"test-code":{"insertions":15,"deletions":15}}},{"hash":"dfe4511ea941edab91e7c52ce709948985c1be8e","isMergeCommit":false,"messageTitle":"Deleted \\n from GradedTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-20","commitResults":[{"hash":"c8b4ded91fcf758173e9ad2bb7231dffdff16a95","isMergeCommit":false,"messageTitle":"Add Test Cases for coverage, Removed AddGradedTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":309},"test-code":{"insertions":242,"deletions":41}}},{"hash":"806d25d72d6fc04636752504d22b46cc603d0909","isMergeCommit":false,"messageTitle":"Merge Conflict resolution","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1188,"deletions":52},"test-code":{"insertions":1219,"deletions":291}}},{"hash":"c22d434430a17e8ac0ef8a79dfe48a067fba94d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"730155ccd401bc89604b104f1eb977751b11e1cc","isMergeCommit":false,"messageTitle":"Updated UserPrefs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d5b2d08cedde57709db920b2518adda051f4c203","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-AddGradedTest\u0027 into branch-AddGradedTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83ad50dcc3064aeeeda5f09325efd8eab67c8ace","isMergeCommit":false,"messageTitle":"Updated UserPrefs.java Updated TypicalPersons.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":2,"deletions":4}}},{"hash":"0626be34cdfbc228f4955c1d4124320dfaf01a4e","isMergeCommit":false,"messageTitle":"Add GradedTestListTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":162,"deletions":2}}},{"hash":"e132d98f4613db7c8733f82663cacd020d13de9e","isMergeCommit":false,"messageTitle":"Update GradedTestListTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"375e10252a31e1fa96698ee5629c82510c174a8b","isMergeCommit":false,"messageTitle":"Add testcases for AddGradedTestTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":115,"deletions":5}}},{"hash":"1e804015a91df1a0cad7ec4c4eec7bc08ff36f7f","isMergeCommit":false,"messageTitle":"Deleted Unnecessary files in EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"b7df6301ff0fe0360a51782b86e867ef03016347","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddGradedTest5\u0027 into branch-AddGradedTest","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"1f53f5bb43f0ed45707639c078f15440eea1d9b5","isMergeCommit":false,"messageTitle":"Resolve Merge conflict, Edited minWidth of MainApp.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":8},"test-code":{"insertions":5,"deletions":3}}},{"hash":"5ff62b2fad8e0f0e450a016734aa571e4d8600f7","isMergeCommit":false,"messageTitle":"Removed Errors in testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":11}}},{"hash":"2a7814bd2e2e1aa177313a37715f48af36768938","isMergeCommit":false,"messageTitle":"Update Grammar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-23","commitResults":[{"hash":"10cfb9fd057d75541948db8691ffc924611fc042","isMergeCommit":false,"messageTitle":"Update UGDG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":22}}}]}],"Originalidk":[{"date":"2023-10-03","commitResults":[{"hash":"17592387bf2859ac4989eb21fde17ad5d94f80a5","isMergeCommit":false,"messageTitle":"Add Ryan info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":5}}},{"hash":"481d1a94eb6704700db3a92f8f759a5c50f43d32","isMergeCommit":false,"messageTitle":"Update Ryan info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-05","commitResults":[{"hash":"21239efb888ff5b716e9122dea1d6c40aeb6a622","isMergeCommit":true,"messageTitle":"Merge pull request #41 from wesho1107/branch-UG-consultation","messageBody":"Update UG for consult features","fileTypesAndContributionMap":{}},{"hash":"82ecc9d9d56a27d8fc0063176e55980865b08cec","isMergeCommit":false,"messageTitle":"Update UserGuide and DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":140,"deletions":0}}},{"hash":"26f70983043f73a1c17f4d076a951aa6c78fcea0","isMergeCommit":false,"messageTitle":"Updated UG and DG slightly","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"80b10fee544a04b1a0d768cd492a91e8a184a861","isMergeCommit":false,"messageTitle":"Added Assignment class with Grade and Comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":293,"deletions":35},"docs":{"insertions":72,"deletions":72},"test-code":{"insertions":10,"deletions":16}}},{"hash":"cd6c8d4b821fbdcd11296eb0b2bb563a6a933a46","isMergeCommit":false,"messageTitle":"Update grading and comment command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":23}}},{"hash":"c89cc1c605828e0b2d4159ef688c95fced5f8948","isMergeCommit":false,"messageTitle":"Change person to student in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":18}}},{"hash":"fe57f1eb8e5082c8cafa3632a44b552c3b886b26","isMergeCommit":false,"messageTitle":"Change person to student in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":44}}},{"hash":"d11ce0af7ce44c14b099d3ffb093f77b64637744","isMergeCommit":false,"messageTitle":"Udate UserGuide from student to person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"2b0472136826e67b674af3930d51f1f8a2a5730b","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Respirayson/branch-task-management","messageBody":"Branch task management","fileTypesAndContributionMap":{}},{"hash":"bd6f65b2146e5de0f3f10d4c9744268174e82223","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignment-feature","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"ac2ed9e844ae46327e7c772dcb8912eef3522751","isMergeCommit":false,"messageTitle":"Added storage component for feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":559,"deletions":162}}}]},{"date":"2023-10-15","commitResults":[{"hash":"d3e7f5d22a417dcd64e2a06fe343055176ce24df","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignment-feature","messageBody":"Update ReadME.md with upstream\n","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"12bb23145bbc6d0b7a03bccafcd76292b86d8dce","isMergeCommit":false,"messageTitle":"Fix failed test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5},"test-code":{"insertions":6,"deletions":0}}},{"hash":"30b30c95ceb789f244fe0c49bae5374b91557808","isMergeCommit":true,"messageTitle":"Merge session feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2eb04aaab3139aa1692fd95d8bf8d3c9bda74dac","isMergeCommit":false,"messageTitle":"Add parser logic and fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":113},"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2023-10-19","commitResults":[{"hash":"d9b68bb6da2b398a9c6bf946062a171bf437fccc","isMergeCommit":false,"messageTitle":"Add test cases for command and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":41},"test-code":{"insertions":172,"deletions":1}}},{"hash":"2ad641b6ef1607e6739992c39993f3e6eb0e14e2","isMergeCommit":false,"messageTitle":"Add test cases to assignment related components","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":76,"deletions":0}}},{"hash":"4495d45b943c527dd162e940e0ff804957deaebd","isMergeCommit":false,"messageTitle":"Update storage and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":30}}},{"hash":"a1cb1f0f03a3b64d94e02d4b2d73f167ffa64659","isMergeCommit":true,"messageTitle":"Update parser with task feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c782edb513e5ce9630de199424f0aaea26a1410","isMergeCommit":false,"messageTitle":"Update UG grading features with index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}},{"hash":"4811b22c9d13bb97923e71a1fdb6b722165b282f","isMergeCommit":false,"messageTitle":"Fix checkstyle and test case bug","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4008cbd9b6479d6baf67d5eb85d81db9d32d11d4","isMergeCommit":false,"messageTitle":"Remove JsonRootValue from AssignmentMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"ec647041e236578ef7203539910343841f104b1d","isMergeCommit":true,"messageTitle":"Update with consultation feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4f122758a7890c081d5bcf353803ff9c882ce7bb","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e3647796c29bad4d82f523fdcf9acbc3cd51e742","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f878e9d9471f97dd1061a17a41767ae623456bc2","isMergeCommit":false,"messageTitle":"Reduce abstraction of AssignmentMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2023-10-20","commitResults":[{"hash":"3570e19cde78ff9c9c79295650a6bbfe9a7cc675","isMergeCommit":false,"messageTitle":"Revert \"Reduce abstraction of AssignmentMap\"","messageBody":"This reverts commit f878e9d9471f97dd1061a17a41767ae623456bc2.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":11}}},{"hash":"aea1f472336141e8323497e1a44f9c0e683a4d34","isMergeCommit":false,"messageTitle":"Remove tag from JsonAdaptedPerson second constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"d0b48bc464295af6080c80280008b20922293413","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"67a3c4e9000506c034842c17169d2b6a25628570","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson constructor to be same line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"ff26a6c70e94471fdfa03997b7b5beaab00c64d5","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Originalidk/branch-assignment-feature","messageBody":"Branch assignment feature","fileTypesAndContributionMap":{}}]}],"wesho1107":[{"date":"2023-10-03","commitResults":[{"hash":"39b06f8030905bc0598ad2484f177b4cb2778783","isMergeCommit":false,"messageTitle":"Add AboutUs details and personal .md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":4}}},{"hash":"ca2d9be646ce78c9fd0ec8e9a92710384418b817","isMergeCommit":false,"messageTitle":"Rename PPP file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bd6b1dd8b73cf99e1066b0c7b0caa5fad116ecea","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"039089a2b89b5fcec1d106abc2a8868f75ee045f","isMergeCommit":false,"messageTitle":"Update newline and whitespace in .md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-04","commitResults":[{"hash":"8dd3b0da51d58201c45bb1f1d316b319b3104af3","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Respirayson/branch-rayson-docs","messageBody":"Merge respirayson UG update","fileTypesAndContributionMap":{}},{"hash":"a4a69ba3830b231a520a6e5e8c3fb152df4c6c84","isMergeCommit":true,"messageTitle":"Merge pull request #38 from ldinghan/branch-DingHan-docs","messageBody":"Add Ding Han info","fileTypesAndContributionMap":{}},{"hash":"afe5c3e1f8f1b9e3a1d8e999a77fef74f2cf12e2","isMergeCommit":false,"messageTitle":"Update UG for consult features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":92,"deletions":10}}}]},{"date":"2023-10-05","commitResults":[{"hash":"e94ff599cb71d2ca96ea3e763df54b2e95b22b15","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Originalidk/master","messageBody":"Update UserGuide and DeveloperGuide from Originalidk","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"dc552d7877d79f59b014ae3d149b66d5d1a08925","isMergeCommit":false,"messageTitle":"Add skeleton for CreateConsultationCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":4}}},{"hash":"2c2d3af2b7c775b71c8061a5507b3f5f4171bf53","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":25}}}]},{"date":"2023-10-13","commitResults":[{"hash":"6872a1b9bf5d4cf6da592ef827ec98f927ed337e","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Originalidk/master","messageBody":"Update grading and comment in UG","fileTypesAndContributionMap":{}},{"hash":"97a94cac0dd8fecf53768218591b8f791eaab93a","isMergeCommit":false,"messageTitle":"Fix consultation person bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"49b0500e4c0355c1072d3fc9913e77f339bd8c12","isMergeCommit":false,"messageTitle":"Update createconsult to support multiple students","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":22}}},{"hash":"f2fc65155d85d78ecc31df59b623970b4dcf6a07","isMergeCommit":false,"messageTitle":"Add JsonAdaptedConsultation in storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"ae2416b1ddc7feae2ab52f5e8be71f9b25b313e7","isMergeCommit":false,"messageTitle":"Change message format for creating consultation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"72253080212d3fa62f054ad28bee45d5a5c45998","isMergeCommit":true,"messageTitle":"Resolve merge conflict on Task features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa5d52b70e09b5e414037efc782700d970849bfe","isMergeCommit":false,"messageTitle":"Collapse requireNonNull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14}}},{"hash":"3071af4cb82c17693e9c73ae1b9d6b3388c13193","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces in UG and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"021f50864756a0c2000399e7842fd9310c4ac2f2","isMergeCommit":false,"messageTitle":"Remove newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d625f50856b570c1d8eeac760156fe19d257f632","isMergeCommit":false,"messageTitle":"Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"526196051add144a6458aa6c13c3ecb324128a5b","isMergeCommit":false,"messageTitle":"Improve code standard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":19}}},{"hash":"893f7be91af429fef0eb38eb40c790afca95020e","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5}}},{"hash":"a9419f0d3d157251beba84f3965cb4b42ef824b4","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"17e5d1e0f452b16267c286f180f03f34308fe56e","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedConsultation import oder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"cab619e64acc52c4a678cdfa8b2250ddbd184c39","isMergeCommit":false,"messageTitle":"Fix lexicographical order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"953e0c8d5cec03fe324fc4499527a855e47509f2","isMergeCommit":false,"messageTitle":"Update AddCommandTest throws","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"d30d2463b92ace8d415c33054813b660428a8951","isMergeCommit":false,"messageTitle":"Add tests for consultation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":2},"other":{"insertions":1,"deletions":3},"test-code":{"insertions":161,"deletions":0}}},{"hash":"b06ee2454970d7015c2bd14fee6b7bd30f22ee7f","isMergeCommit":false,"messageTitle":"Add tests for ConsultationList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19},"test-code":{"insertions":74,"deletions":0}}},{"hash":"65614f90187e7a56b5b23915d3e9513b97e33560","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":22},"test-code":{"insertions":23,"deletions":24}}},{"hash":"45d103403a4471fe7904dde2ab16389c0431ed1a","isMergeCommit":false,"messageTitle":"Debug test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1},"test-code":{"insertions":11,"deletions":12}}},{"hash":"548832ab313604c1fdf01d6a8f87f3ed510d14d2","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"039f556713dc725fe922e65b1681a435df15b3cc","isMergeCommit":false,"messageTitle":"Change access modifier","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"2f039b0d94bfb56f61ea1ae2b8570233f168eff9","isMergeCommit":false,"messageTitle":"Add test cases for CreateConsultationCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":4},"test-code":{"insertions":121,"deletions":2}}},{"hash":"0af7be9b36a7720ccc333caba75bde8ef06f6b5e","isMergeCommit":false,"messageTitle":"Fix checkstyle for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":13}}}]},{"date":"2023-10-14","commitResults":[{"hash":"293687a39673b02be4ffcc45a4bec99c79ddd9a0","isMergeCommit":false,"messageTitle":"Add tests for matchName and comment unused code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":27},"test-code":{"insertions":100,"deletions":5}}},{"hash":"7df8ddf11d314b0ff8a26b73786d07df2f13f8d0","isMergeCommit":false,"messageTitle":"Remove dead code in Messages.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"db817c020945888ea42c43dc5869de380c1b8fec","isMergeCommit":false,"messageTitle":"Comment out JsonAdaptedConsultation to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":41}}}]},{"date":"2023-10-18","commitResults":[{"hash":"0c4d7ae7eb100f48fb32bbfd42cc422fd90f5d09","isMergeCommit":true,"messageTitle":"Deconflict after merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c094ae4cd0d83aec12c733459575a9f1264b7ffc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":14},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"5c7897d590eb560df49031b11ad360050ba050c4","isMergeCommit":false,"messageTitle":"Complete CreateConsult feature with UI display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":712,"deletions":77},"test-code":{"insertions":71,"deletions":26}}},{"hash":"93563403b90efa9769c0affc63b09a38e85cf4c4","isMergeCommit":false,"messageTitle":"Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cc7212acf57b5b6e9e34f87d424076fb5217729f","isMergeCommit":false,"messageTitle":"Add new testcases for Consultation feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":6},"test-code":{"insertions":539,"deletions":185}}},{"hash":"d30861917a3858795b6158a5375ce5da94f0ba41","isMergeCommit":false,"messageTitle":"Add JsonSerializableConsultationListTest cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":60,"deletions":5}}},{"hash":"c790937ca30549bc6a7310c02791e7a6b0813a96","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c06e03f67be38e252c31ea80d6d64a604c12e5f8","isMergeCommit":false,"messageTitle":"Fix grammar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9b1a37a2160567962a62f37498b35f0d2802145d","isMergeCommit":true,"messageTitle":"Deconflict merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"acd3503acd36a17e978e31fb365736885e14296d","isMergeCommit":false,"messageTitle":"Add testcases for ConsultationList equals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":45},"test-code":{"insertions":13,"deletions":0}}},{"hash":"41f81689110ecf2f334b62f2be02df7aa0707750","isMergeCommit":false,"messageTitle":"Update JavaDoc mismatches","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":8},"test-code":{"insertions":5,"deletions":6}}},{"hash":"0656487984289d6db16c962538b646455e7cfd7f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wesho1107/branch-feature-consult","messageBody":"Consultation features skeleton: CreateConsultationCommand","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ldinghan":{"docs":35,"functional-code":1837,"test-code":1253},"Respirayson":{"docs":157,"functional-code":1849,"test-code":1538,"other":4},"raydenlim":{"docs":189,"functional-code":1916,"test-code":2006},"Originalidk":{"docs":173,"functional-code":888,"test-code":260},"wesho1107":{"docs":112,"functional-code":911,"test-code":760}},"authorContributionVariance":{"ldinghan":144654.25,"Respirayson":118922.31,"raydenlim":529950.9,"Originalidk":38077.746,"wesho1107":124412.61},"authorDisplayNameMap":{"ldinghan":"CS2103T-T15-1 LIM .. HAN","Respirayson":"CS2103T-T15-1 YEAP..YSON","raydenlim":"CS2103T-T15-1 LIM ..SONG","Originalidk":"CS2103T-T15-1 RYAN..IANG","wesho1107":"CS2103T-T15-1 HO J..HENG"}} diff --git a/AY2324S1-CS2103T-T15-2_tp_master/authorship.json b/AY2324S1-CS2103T-T15-2_tp_master/authorship.json index d870be63..50c33a8c 100644 --- a/AY2324S1-CS2103T-T15-2_tp_master/authorship.json +++ b/AY2324S1-CS2103T-T15-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"# BayMeds v.2103","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"### UI Mockup","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"### Description","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"* This is **prescription management app for patients**.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" * Track prescription needs, dosage and related health information.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" * Receive reminders to consume and refill medication.","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"* It is named BayMeds v.2103 as it is inspired from the Disney character Baymax, who serves as a personal healthcare companion.","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"* For the detailed documentation of this project, see the **[BayMeds v.2103 Product Website](https://ay2324s1-cs2103t-t15-2.github.io/tp/)**.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"ChongWeiJie29":6,"RoeReRe":6,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"### Wei Xiang","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/roerere.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"[[github](https://github.com/roerere)]","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"[[portfolio](team/roerere.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":"### Ren Jing","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"\u003cimg src\u003d\"images/teerenjing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":"[[github](https://github.com/TeeRenJing)]","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"[[portfolio](team/teerenjing.md)]","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":"* Role: Developer","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"* Responsibilities: Testing","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"### Shyan-Yong","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"\u003cimg src\u003d\"images/shyanyong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":"[[github](http://github.com/shyanyong)]","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":"[[portfolio](team/shyanyong.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"### Jing Yu","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":"\u003cimg src\u003d\"images/jingyu987.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"[[github](http://github.com/jingyu987)]","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":"[[portfolio](team/jingyu987.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":"### Wei Jie","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cimg src\u003d\"images/chongweijie29.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"[[github](http://github.com/chongweijie29)]","lastModifiedDate":"2023-10-01"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":"[[portfolio](team/chongweijie29.md)]","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"* Role: Integration, Developer","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"* Responsibilities: Logic","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"TeeRenJing":5,"jingyu987":4,"shyanyong":4,"ChongWeiJie29":6,"RoeReRe":7,"-":36}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"TeeRenJing":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"# BayMeds Developer Guide","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"TeeRenJing"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PrescriptionListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"TeeRenJing"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `BayMedsParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-10-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"TeeRenJing"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a medication).","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"TeeRenJing"},"content":"* When called upon to parse a user command, the `BayMedsParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `BayMedsParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"TeeRenJing"},"content":"* stores the BayMeds data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"TeeRenJing"},"content":"* can save both BayMeds data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"TeeRenJing"},"content":"* inherits from both `BayMedsStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2023-10-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram.puml\" alt\u003d\"UndoSequenceDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"RoeReRe"},"content":"* has a need to manage a significant number of prescriptions","lastModifiedDate":"2023-10-04"},{"lineNumber":273,"author":{"gitId":"RoeReRe"},"content":"* prefers a quick way of tracking medication needs, dosage and related health information","lastModifiedDate":"2023-09-25"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":"* prefers desktop apps over other types","lastModifiedDate":"2023-09-25"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"RoeReRe"},"content":"**Value proposition**:","lastModifiedDate":"2023-09-25"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":"* manage prescriptions faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":"* track dosage schedule and instructions","lastModifiedDate":"2023-09-25"},{"lineNumber":283,"author":{"gitId":"RoeReRe"},"content":"* track medical history","lastModifiedDate":"2023-09-25"},{"lineNumber":284,"author":{"gitId":"RoeReRe"},"content":"* log symptoms","lastModifiedDate":"2023-09-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"RoeReRe"},"content":"|----------|------------------------------------|-----------------------------------------------------|--------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":293,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | sickly patient | add prescriptions | manage additional prescriptions should I be prescribed them |","lastModifiedDate":"2023-10-04"},{"lineNumber":294,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | recovering patient | remove prescriptions | remove prescriptions that the doctor deems unnecessary from now on |","lastModifiedDate":"2023-10-04"},{"lineNumber":295,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | forgetful patient | mark the medication as consumed | not accidentally overdose on a certain medication |","lastModifiedDate":"2023-09-25"},{"lineNumber":296,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | forgetful patient | list all my prescriptions | track all the medications I am currently taking |","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"RoeReRe"},"content":"| `* *` | forgetful patient | list all the medications I have not taken today | follow my prescription accurately |","lastModifiedDate":"2023-09-25"},{"lineNumber":298,"author":{"gitId":"RoeReRe"},"content":"| `* *` | patient undergoing a tapering plan | edit prescriptions that I have added | adjust my dosage schedules easily |","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"RoeReRe"},"content":"| `* *` | forgetful patient | get daily reminders of what medications to take | take my medication on time |","lastModifiedDate":"2023-10-04"},{"lineNumber":300,"author":{"gitId":"RoeReRe"},"content":"| `*` | forgetful patient | get a reminder when a medication is about to expire | premptively stock up before it runs out |","lastModifiedDate":"2023-09-25"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"TeeRenJing"},"content":"(For all use cases below, the **System** is the `BayMeds` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-03"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"RoeReRe"},"content":"**Use case: Delete a prescription**","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"RoeReRe"},"content":"3. User requests to delete a specific prescription in the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"RoeReRe"},"content":"4. BayMeds deletes the prescription.","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"TeeRenJing"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-03"},{"lineNumber":322,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"TeeRenJing"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"TeeRenJing"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"RoeReRe"},"content":"* 3a. The given prescription is not in the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"TeeRenJing"},"content":" * 3a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"RoeReRe"},"content":"**Use case: List all prescriptions**","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"RoeReRe"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list all prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of prescriptions together with their details.","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"RoeReRe"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"RoeReRe"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"RoeReRe"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"RoeReRe"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"RoeReRe"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"RoeReRe"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"RoeReRe"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"shyanyong"},"content":"**Use case: List medications to be consumed today**","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"shyanyong"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list all remaining medications to be consumed today.","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of medications to be consumed today.","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":365,"author":{"gitId":"shyanyong"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":366,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":367,"author":{"gitId":"shyanyong"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":368,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"shyanyong"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":370,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":371,"author":{"gitId":"shyanyong"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"shyanyong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"shyanyong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"shyanyong"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"TeeRenJing"},"content":"2. Should be able to hold up to 1000 prescriptions without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2023-10-03"},{"lineNumber":385,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"RoeReRe"},"content":"4. Should be able to give a notification to the user when the application is running. (Time to take medication / medication is about to expire)","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"TeeRenJing"},"content":"5. Should be able to track current date and time when the application is running.","lastModifiedDate":"2023-10-03"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"TeeRenJing"},"content":"* **Medication**: A drug identified by a name","lastModifiedDate":"2023-10-03"},{"lineNumber":395,"author":{"gitId":"RoeReRe"},"content":"* **Prescription**: Uniquely identified by a medication, a frequency and a quantity","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":406,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"TeeRenJing"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample prescriptions. The window size may not be optimum.","lastModifiedDate":"2023-10-03"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"TeeRenJing"},"content":"### Deleting a medication","lastModifiedDate":"2023-10-03"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"TeeRenJing"},"content":"1. Deleting a medication while all medications are being shown","lastModifiedDate":"2023-10-03"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"TeeRenJing"},"content":" 1. Prerequisites: List all medications using the `list` command. Multiple medications in the list.","lastModifiedDate":"2023-10-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"TeeRenJing"},"content":" 1. Test case: `delete --medication \"Doxazosin\"`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":434,"author":{"gitId":"TeeRenJing"},"content":" Expected: Doxazosin is deleted from the list. Details of the deleted medication shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2023-10-03"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"TeeRenJing"},"content":" 1. Test case: `delete --medication \"Watsons\"`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":437,"author":{"gitId":"TeeRenJing"},"content":" Expected: No medication is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2023-10-03"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"TeeRenJing"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":440,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"TeeRenJing":33,"shyanyong":20,"RoeReRe":49,"-":348}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Testing guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Testing guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" e.g. `seedu.address.storage.StorageManagerPrescriptionTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" e.g. `seedu.address.logic.LogicManagerPrescriptionTest`","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":2,"-":39}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"# BayMeds v.2103 User Guide","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"BayMeds v.2103, (a.k.a BayMeds), is a **desktop application for managing your prescriptions**. While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface). If you like to type fast, BayMeds can get your prescription management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"1. Download the latest `BayMeds.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). [coming soon]","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for BayMeds.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar BayMeds.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" A GUI similar to the one below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"1. Type commands in the command box and press Enter to execute it. \u003cbr\u003e e.g. typing the command **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" Some example commands you can try:","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" * `list` : Lists all prescriptions.","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" * `add --medication \"Doxazosin\" --frequency \"daily\"` : Adds a prescription `Aspirin` to the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" * `delete \"Aspirin\"` : Deletes the `Aspirin` prescription from the current list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"* Words in `\u003c\u003e` are the parameters to be supplied by the user, and should begin and end with double quotation marks \" \".\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. in `add --medication \u003cmedication_name\u003e`, `\u003cmedication_name\u003e` is a parameter which can be used as `add --medication \"Aspirin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. `--frequency \u003cfrequency\u003e [--start \u003cstart_date\u003e]` can be used as `--frequency \"daily\" --start \"20-9-2023\"` or as `--frequency \"daily\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. if the command specifies `--medication \u003cmedication_name\u003e --frequency \u003cfrequency\u003e`, `--frequency \u003cfrequency\u003e --medication \u003cmedication_name\u003e` is also acceptable.","lastModifiedDate":"2023-10-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"### Viewing help : `help` [coming soon]","lastModifiedDate":"2023-10-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"_Details coming soon ..._","lastModifiedDate":"2023-10-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"### Adding a prescription : `add`","lastModifiedDate":"2023-10-02"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"Adds a prescription to the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"Format:","lastModifiedDate":"2023-10-02"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"add","lastModifiedDate":"2023-10-02"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" --frequency \u003cfrequency\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" [--start \u003cstart_date\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" [--end \u003cend_date\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" [--remarks \u003cremarks\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"* `\u003cfrequency\u003e` should follow this format `\u003crepetition dosage\u003e`.","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"daily 2\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 2 tabs everyday.","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"daily 4\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 4 tabs everyday.","lastModifiedDate":"2023-10-02"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"weekly 2\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 2 tabs on a particular day every week. The day is determined by the `\u003cstart_date\u003e` input. If `\u003cstart_date\u003e` is a Wednesday, this means take 2 tabs every Wednesday.","lastModifiedDate":"2023-10-02"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":"* If your prescriptions are to be taken every Wednesday and Sunday, add 2 separate entries into the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" * `Add --medication \"Accutane 1\" --frequency \"weekly 1\" --start \"27-09-2023\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" * `Add --medication \"Accutane 2\" --frequency \"weekly 1\" --start \"01-10-2023\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":"* `\u003cstart_date\u003e` and `\u003cend_date\u003e` should be in dd-mm-yyyy format.","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"20-09-2023\".","lastModifiedDate":"2023-10-02"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":"* Since `--start \u003cstart_date\u003e` is an optional input, if there is none given, the input date of the entry will be used as the default start date.","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":"* Remarks can consist of any text.","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"To be taken after meals\".","lastModifiedDate":"2023-10-02"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"Take after food\".","lastModifiedDate":"2023-10-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":"Examples:","lastModifiedDate":"2023-10-02"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Aspirin\" --frequency \"daily\" --start \"20-09-2023\" --end \"03-10-2024\" --remarks \"Take during meals\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Amoxicillin\" --frequency \"twice daily\" --start \"20-09-2023\" --end \"03-10-2024\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Doxazosin\" --frequency \"daily\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":"Example usage of add command in BayMeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-add.png\" alt\u003d\"Example of add command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"### Listing all prescriptions : `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"Shows a list of all prescriptions.","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":"list","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":"Example usage of list command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-list.png\" alt\u003d\"Example of list command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Locating persons by name : `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":"### Deleting a prescription : `delete`","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":"Deletes the specified prescription from the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":"Format:","lastModifiedDate":"2023-10-02"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":"delete","lastModifiedDate":"2023-10-02"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"TeeRenJing"},"content":"* `\u003cmedication_name\u003e` should not be empty.","lastModifiedDate":"2023-10-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Aspirin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":169,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Amoxicillin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":170,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Doxazosin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":172,"author":{"gitId":"TeeRenJing"},"content":"Example usage of delete command in BayMeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-delete.png\" alt\u003d\"Example of delete command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"jingyu987"},"content":"### Listing untaken medication : `list today`","lastModifiedDate":"2023-10-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":"Lists all remaining medications to be taken for the day.","lastModifiedDate":"2023-10-03"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":180,"author":{"gitId":"shyanyong"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":"list today","lastModifiedDate":"2023-10-03"},{"lineNumber":183,"author":{"gitId":"shyanyong"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":"* `list today`.","lastModifiedDate":"2023-10-03"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":188,"author":{"gitId":"jingyu987"},"content":"Example usage of list today command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":189,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":190,"author":{"gitId":"jingyu987"},"content":"\u003cimg src\u003d\"images/ui/Ui-list_today.png\" alt\u003d\"Example of list today command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":191,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":192,"author":{"gitId":"jingyu987"},"content":"### Marking a medication as taken : `take`","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"RoeReRe"},"content":"Marks a medication as consumed.","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"jingyu987"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"jingyu987"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":198,"author":{"gitId":"jingyu987"},"content":"take","lastModifiedDate":"2023-10-03"},{"lineNumber":199,"author":{"gitId":"jingyu987"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":200,"author":{"gitId":"jingyu987"},"content":" [--amount \u003camount_taken\u003e]","lastModifiedDate":"2023-10-03"},{"lineNumber":201,"author":{"gitId":"jingyu987"},"content":" [--date \u003cdate\u003e]","lastModifiedDate":"2023-10-03"},{"lineNumber":202,"author":{"gitId":"jingyu987"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":203,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":204,"author":{"gitId":"jingyu987"},"content":"* `\u003cmedication_name\u003e` should not be empty.","lastModifiedDate":"2023-10-03"},{"lineNumber":205,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":206,"author":{"gitId":"jingyu987"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":207,"author":{"gitId":"jingyu987"},"content":"* `take","lastModifiedDate":"2023-10-03"},{"lineNumber":208,"author":{"gitId":"jingyu987"},"content":" --medication \"Aspirin\" --amount “1” --date \"20-09-2023\"`.","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":210,"author":{"gitId":"jingyu987"},"content":"Example usage of take command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-take.png\" alt\u003d\"Example of take command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-02"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds data are saved automatically as a JSON file `[JAR file location]/data/BayMeds.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-02"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":"If your changes to the data file makes its format invalid, BayMeds will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"ChongWeiJie29"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous BayMeds home folder.","lastModifiedDate":"2023-10-02"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"RoeReRe"},"content":"| Action | Format, Example |","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"RoeReRe"},"content":"|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"RoeReRe"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"RoeReRe"},"content":"| **Add** | `add --medication \u003cmedication_name\u003e --frequency \u003cfrequency\u003e [--start \u003cstart_date\u003e] [--end \u003cend_date\u003e] [--remarks \u003cremarks\u003e]`, \u003cbr\u003e e.g. `add --medication \"Aspirin\" --frequency \"daily\" --start \"20-09-2023\" --end \"03-10-2024\" --remarks \"Take during meals\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"RoeReRe"},"content":"| **Delete** | `delete --medication \u003cmedication_name\u003e`, \u003cbr\u003e e.g. `delete --medication \"Aspirin\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"RoeReRe"},"content":"| **Mark** | `take --medication \u003cmedication_name\u003e [--amount \u003camount_taken\u003e] [--date \u003cdate\u003e]`, \u003cbr\u003e e.g. `take --medication \"Aspirin\" --amount \"1\" --date \"20-09-2023\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"RoeReRe"},"content":"| **List** | `list` |","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"RoeReRe"},"content":"| **List today** | `list today` |","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"TeeRenJing":5,"jingyu987":20,"shyanyong":12,"ChongWeiJie29":57,"RoeReRe":27,"-":135}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"# BayMeds v.2103","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-T15-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-T15-2/tp)","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"**BayMeds is a desktop application for managing your medications.** While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"* If you are interested in using BayMeds, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"* If you are interested about developing BayMeds, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"RoeReRe":6,"-":15}},{"path":"docs/team/chongweijie29.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"---","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":" layout: default.md","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":" title: \"ChongWeiJie29\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"---","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dchongweijie29\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * User Guide:","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-10-01"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-10-01"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"* **Community**:","lastModifiedDate":"2023-10-01"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"ChongWeiJie29":30}},{"path":"docs/team/jingyu987.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" layout: default.md","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" title: \"jingyu987\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003djingyu987\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"jingyu987":30}},{"path":"docs/team/roerere.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":" layout: default.md","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":" title: \"RoeReRe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003droerere\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" * User Guide:","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"* **Community**:","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"RoeReRe":30}},{"path":"docs/team/shyanyong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":" layout: default.md","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":" title: \"shyanyong\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dshyanyong\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"shyanyong":30}},{"path":"docs/team/teerenjing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":" layout: default.md","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":" title: \"TeeRenJing\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dteerenjing\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" * User Guide:","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"* **Community**:","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"TeeRenJing":30}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.CompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonCompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonPrescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.PrescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing BayMeds v.2103 ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" CompletedPrescriptionListStorage completedPrescriptionListStorage \u003d new JsonCompletedPrescriptionListStorage(","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" storage \u003d new StorageManager(prescriptionListStorage, completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s prescription list and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" * The data from the sample prescription list will be used instead if {@code storage}\u0027s prescription list is not","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * found, or an empty prescription list will be used instead if errors occur when reading {@code storage}\u0027s","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Using data file : \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" + \" and \" + storage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e prescriptionListOptional;","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e completedPrescriptionListOptional;","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList initialData;","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList initialCompletedData;","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListOptional \u003d storage.readPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListOptional \u003d storage.readCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" if (!prescriptionListOptional.isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Creating a new data file \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" + \" populated with a sample PrescriptionList.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" initialData \u003d prescriptionListOptional.orElseGet(SampleDataUtil::getSamplePrescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" if (!completedPrescriptionListOptional.isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Creating a new data file \" + storage.getCompletedPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" + \" populated with a sample CompletedPrescriptionList.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" initialCompletedData \u003d completedPrescriptionListOptional.orElseGet(","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" SampleDataUtil::getSampleCompletedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" logger.warning(\"Data file at \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" + \" or \" + storage.getCompletedPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" + \" could not be loaded.\"","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" + \" Will be starting with an empty PrescriptionList.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" initialData \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" initialCompletedData \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" return new ModelManager(initialData, initialCompletedData, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":174,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Starting BayMeds v.2103 \" + MainApp.VERSION);","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping BayMeds v.2103 ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":202,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":43,"-":163}},{"path":"src/main/java/seedu/address/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" private static final double DEFAULT_HEIGHT \u003d 830;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" private static final double DEFAULT_WIDTH \u003d 1350;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"RoeReRe":2,"-":80}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * API of the LogicPrescription component","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the PrescriptionList.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @see seedu.address.model.Model#getPrescriptionList()","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered list of prescriptions */","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ChongWeiJie29":10,"-":40}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.parser.PrescriptionListParser;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionListParser prescriptionListParser;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListParser \u003d new PrescriptionListParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" Command command \u003d prescriptionListParser.parseCommand(commandText);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" storage.savePrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" storage.saveCompletedPrescriptionList(model.getCompletedPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ChongWeiJie29":14,"-":75}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX \u003d \"The prescription index \"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" + \"provided is invalid\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW \u003d \"%1$d prescriptions listed!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Formats the {@code prescription} for display to the user.","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public static String format(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(prescription.getName());","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Dosage: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getDosage().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Frequency: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getFrequency().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Start Date: \").append(prescription.getStartDate());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; End Date: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getEndDate().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Expiry Date: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getExpiryDate().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Total stock: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getTotalStock().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; isCompleted: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getIsCompleted());","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Note: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getNote().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" // person.getTags().forEach(builder::append);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChongWeiJie29":43,"-":37}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" * Adds a prescription to the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a prescription to the prescription list. \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_DOSAGE + \"dosage \"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_FREQUENCY + \"frequency \"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_START_DATE + \"start_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_END_DATE + \"end_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_EXPIRY_DATE + \"expiry_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_TOTAL_STOCK + \"total_stock \"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NOTE + \"note \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" // + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_DOSAGE + \"1 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_FREQUENCY + \"Daily \"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_START_DATE + \"01/08/2023 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_END_DATE + \"25/12/2023 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_EXPIRY_DATE + \"01/01/2024 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_TOTAL_STOCK + \"100 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NOTE + \"Test note\";","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New prescription added: %1$s.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"This prescription already \"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" + \"exists in the prescription list.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_INVALID_DATES \u003d \"Start date must be before end date, \"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" + \"and end date must be before expiry date.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" private final Prescription toAdd;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates an AddPrescriptionCommand to add the specified {@code Prescription}","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public AddCommand(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" toAdd \u003d prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" if (model.hasPrescription(toAdd)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" model.addPrescription(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shyanyong":4,"ChongWeiJie29":37,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" * Deletes a prescription from prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a prescription from the prescription list. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DELETE_PRESCRIPTION_SUCCESS \u003d \"Prescription deleted: %1$s.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" * Creates an DeletePrescriptionCommand to delete the specified {@code Prescription}","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" List\u003cPrescription\u003e lastShownList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" model.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.format(prescriptionToDelete)));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand otherAddCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"TeeRenJing"},"content":" return targetIndex.equals(otherAddCommand.targetIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":" .add(\"toDelete\", targetIndex)","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"TeeRenJing":12,"shyanyong":1,"ChongWeiJie29":4,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.AddCommand.MESSAGE_INVALID_DATES;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsValidDatesPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" * Edits the details of an existing prescription in prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the prescription identified \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" + \"by the index number used in the displayed prescription list. \"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_DOSAGE + \"DOSAGE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_FREQUENCY + \"FREQUENCY] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_START_DATE + \"START DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_END_DATE + \"END DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_EXPIRY_DATE + \"EXPIRY DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_TOTAL_STOCK + \"TOTAL STOCK] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_CONSUMPTION + \"CONSUMPTION] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_NOTE + \"NOTE]...\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" + PREFIX_NOTE + \"Take after meal\";","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_EDIT_PRESCRIPTION_SUCCESS \u003d \"Edited Prescription: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"This prescription already exists \"","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" + \"in the prescription list.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" private final EditPrescriptionDescriptor editPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" * Creates an EditCommand to edit the specified {@code Prescription}","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" public EditCommand(Index index, EditPrescriptionDescriptor editPrescriptionDescriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" requireNonNull(editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" this.editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor(editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" List\u003cPrescription\u003e lastShownList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d createEditedPrescription(prescriptionToEdit, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" if (!prescriptionToEdit.isSamePrescription(editedPrescription) \u0026\u0026 model.hasPrescription(editedPrescription)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" Predicate\u003cPrescription\u003e isValidDates \u003d new IsValidDatesPredicate();","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" if (!isValidDates.test(editedPrescription)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(MESSAGE_INVALID_DATES);","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" model.setPrescription(prescriptionToEdit, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" model.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PRESCRIPTION_SUCCESS, Messages.format(editedPrescription)));","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" private static Prescription createEditedPrescription(Prescription prescriptionToEdit,","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor) throws CommandException {","lastModifiedDate":"2023-10-21"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" assert prescriptionToEdit !\u003d null;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" Name updatedName \u003d editPrescriptionDescriptor.getName().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getName());","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage updatedDosage \u003d editPrescriptionDescriptor.getDosage().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getDosage().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency updatedFrequency \u003d editPrescriptionDescriptor.getFrequency().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getFrequency().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedStartDate \u003d editPrescriptionDescriptor.getStartDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getStartDate());","lastModifiedDate":"2023-10-21"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedEndDate \u003d editPrescriptionDescriptor.getEndDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getEndDate().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedExpiryDate \u003d editPrescriptionDescriptor.getExpiryDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getExpiryDate().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" Stock updatedTotalStock \u003d editPrescriptionDescriptor.getTotalStock().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getTotalStock().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" ConsumptionCount updatedConsumptionCount \u003d editPrescriptionDescriptor.getConsumptionCount().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getConsumptionCount());","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"jingyu987"},"content":" Boolean updatedIsCompleted \u003d editPrescriptionDescriptor.getIsCompleted()","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"jingyu987"},"content":" .orElse(prescriptionToEdit.getIsCompleted());","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" Note updatedNote \u003d editPrescriptionDescriptor.getNote().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getNote().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" return new Prescription(updatedName, updatedDosage, updatedFrequency, updatedStartDate, updatedEndDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" updatedExpiryDate, updatedTotalStock, updatedConsumptionCount, updatedIsCompleted, updatedNote);","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" //instanceof handles nulls","lastModifiedDate":"2023-10-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 editPrescriptionDescriptor.equals(otherEditCommand.editPrescriptionDescriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" .add(\"editPrescriptionDescriptor\", editPrescriptionDescriptor)","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"shyanyong"},"content":" * Creates and returns a {@code Prescription} with the details of {@code prescriptionToEdit}","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"shyanyong"},"content":" * edited with {@code editPrescriptionDescriptor}.","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"shyanyong"},"content":" public static class EditPrescriptionDescriptor {","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"shyanyong"},"content":" private Dosage dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"shyanyong"},"content":" private Frequency frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"shyanyong"},"content":" private Date startDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"shyanyong"},"content":" private Date endDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"shyanyong"},"content":" private Date expiryDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"shyanyong"},"content":" private Stock totalStock;","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"shyanyong"},"content":" private ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"shyanyong"},"content":" private Note note;","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor() {}","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"shyanyong"},"content":" * Creates an EditPrescriptionDescriptor with the details of {@code prescriptionToEdit}","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor(EditPrescriptionDescriptor toCopy) {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":" setDosage(toCopy.dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":" setFrequency(toCopy.frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"shyanyong"},"content":" setStartDate(toCopy.startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" setEndDate(toCopy.endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" setExpiryDate(toCopy.expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" setTotalStock(toCopy.totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" setConsumptionCount(toCopy.consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"jingyu987"},"content":" setIsCompleted(toCopy.isCompleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"shyanyong"},"content":" setNote(toCopy.note);","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"shyanyong"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"jingyu987"},"content":" name, dosage, frequency, startDate, endDate, expiryDate, totalStock, consumptionCount,","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":" isCompleted, note);","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"shyanyong"},"content":" public void setDosage(Dosage dosage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"shyanyong"},"content":" this.dosage \u003d dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDosage\u003e getDosage() {","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"shyanyong"},"content":" public void setFrequency(Frequency frequency) {","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"shyanyong"},"content":" this.frequency \u003d frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cFrequency\u003e getFrequency() {","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"shyanyong"},"content":" public void setStartDate(Date startDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"shyanyong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getStartDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"shyanyong"},"content":" public void setEndDate(Date endDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"shyanyong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getEndDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"shyanyong"},"content":" public void setExpiryDate(Date expiryDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"shyanyong"},"content":" this.expiryDate \u003d expiryDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getExpiryDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"shyanyong"},"content":" public void setTotalStock(Stock totalStock) {","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"shyanyong"},"content":" this.totalStock \u003d totalStock;","lastModifiedDate":"2023-10-18"},{"lineNumber":248,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":249,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cStock\u003e getTotalStock() {","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"shyanyong"},"content":" public void setNote(Note note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":255,"author":{"gitId":"shyanyong"},"content":" this.note \u003d note;","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(note);","lastModifiedDate":"2023-10-18"},{"lineNumber":260,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":261,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"shyanyong"},"content":" public void setConsumptionCount(ConsumptionCount consumptionCount) {","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"shyanyong"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":264,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":265,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cConsumptionCount\u003e getConsumptionCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"jingyu987"},"content":" public void setIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":271,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":272,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":273,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":274,"author":{"gitId":"jingyu987"},"content":" public Optional\u003cBoolean\u003e getIsCompleted() {","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"jingyu987"},"content":" return Optional.ofNullable(isCompleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"shyanyong"},"content":" //instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"shyanyong"},"content":" if (!(other instanceof EditPrescriptionDescriptor)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor otherEditPrescriptionDescriptor \u003d (EditPrescriptionDescriptor) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"shyanyong"},"content":" return Objects.equals(name, otherEditPrescriptionDescriptor.name)","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(dosage, otherEditPrescriptionDescriptor.dosage)","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(frequency, otherEditPrescriptionDescriptor.frequency)","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(startDate, otherEditPrescriptionDescriptor.startDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(endDate, otherEditPrescriptionDescriptor.endDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(expiryDate, otherEditPrescriptionDescriptor.expiryDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(totalStock, otherEditPrescriptionDescriptor.totalStock)","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(consumptionCount, otherEditPrescriptionDescriptor.consumptionCount)","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(note, otherEditPrescriptionDescriptor.note);","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"shyanyong"},"content":" .add(\"dosage\", dosage)","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"shyanyong"},"content":" .add(\"frequency\", frequency)","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"shyanyong"},"content":" .add(\"startDate\", startDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"shyanyong"},"content":" .add(\"endDate\", endDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"shyanyong"},"content":" .add(\"expiryDate\", expiryDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"shyanyong"},"content":" .add(\"totalStock\", totalStock)","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"shyanyong"},"content":" .add(\"consumptionCount\", consumptionCount)","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"shyanyong"},"content":" .add(\"note\", note)","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":13,"shyanyong":158,"ChongWeiJie29":21,"-":126}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting BayMeds v.2103 as requested ...\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits application.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" return other instanceof ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"TeeRenJing":7,"ChongWeiJie29":1,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" * Finds and lists all prescriptions in address book whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all prescriptions whose names contain any of \"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" + \"Example: \" + COMMAND_WORD + \" paracetamol ibuprofen\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" model.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW,","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" model.getFilteredPrescriptionList().size()));","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":9,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" return other instanceof HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"TeeRenJing":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Lists all prescriptions stored to the user.","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all prescriptions stored.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all prescriptions.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" public static final String MESSAGE_EMPTY_LIST \u003d \"No prescriptions found.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" model.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" ObservableList\u003cPrescription\u003e prescriptionList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" if (prescriptionList.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" return new CommandResult(MESSAGE_EMPTY_LIST);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" return other instanceof ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChongWeiJie29":10,"RoeReRe":10,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/ListTodayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsTodayPredicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" * Lists all remaining medications to be taken for the day to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" public static final String COMMAND_WORD \u003d \"listToday\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all medications to be taken today.\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listing all medications to be taken today.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_EMPTY_LIST \u003d \"No medications to be taken today.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" Predicate\u003cPrescription\u003e isToday \u003d new IsTodayPredicate();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" model.updateFilteredPrescriptionList(isToday);","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e todayPrescriptions \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" if (todayPrescriptions.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" return new CommandResult(MESSAGE_EMPTY_LIST);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" } else {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" return other instanceof ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":39,"ChongWeiJie29":6}},{"path":"src/main/java/seedu/address/logic/commands/TakeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * Represents a command to take a specified number of doses of a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public static final String COMMAND_WORD \u003d \"take\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" + \": Takes a specified number of doses of a prescription.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"number_of_doses \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\";","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Doses taken from: %1$s.\";","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_PRESCRIPTION_NOT_FOUND \u003d \"The specified prescription does not exist.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_INSUFFICIENT_STOCK \u003d \"There is insufficient stock for this prescription.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final Name prescriptionName;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" private final int dosesToTake;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" * Creates a TakePrescriptionCommand to take the specified number of doses from a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" * @param prescriptionName Name of the prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" * @param dosesToTake Number of doses to take.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public TakeCommand(Name prescriptionName, int dosesToTake) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" this.prescriptionName \u003d prescriptionName;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" this.dosesToTake \u003d dosesToTake;","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" * Executes the TakePrescriptionCommand to take the specified doses from the prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" * @param model The model of the prescription list.","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" * @return A CommandResult with the result of the execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" * @throws CommandException If there are errors in executing the command.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" Prescription prescription \u003d model.getPrescriptionByName(prescriptionName);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cStock\u003e totalStock \u003d prescription.getTotalStock();","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock.isPresent() \u0026\u0026 (Integer.parseInt(totalStock.get().toString()) - dosesToTake \u003c 0)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" throw new CommandException(MESSAGE_INSUFFICIENT_STOCK);","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock.isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock.get().decrementCount(dosesToTake);","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" prescription.getConsumptionCount().incrementCount(dosesToTake);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 Integer.parseInt(prescription.getConsumptionCount().toString())","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" \u003e\u003d Integer.parseInt(prescription.getDosage().get().toString())) {","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(true);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(false);","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" Predicate\u003cPrescription\u003e isSameName \u003d new SameNamePredicate(prescriptionName);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" model.updateFilteredPrescriptionList(isSameName);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, prescriptionName));","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof TakeCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand otherCommand \u003d (TakeCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" return prescriptionName.equals(otherCommand.prescriptionName)","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 dosesToTake \u003d\u003d otherCommand.dosesToTake;","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":83,"ChongWeiJie29":19}},{"path":"src/main/java/seedu/address/logic/commands/UntakeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * Represents a command to untake a specified number of doses of a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommand extends Command {","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public static final String COMMAND_WORD \u003d \"untake\";","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" + \": Untakes a specified number of doses of a prescription.\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"number_of_doses \\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\";","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Doses untaken from: %1$s\";","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_INSUFFICIENT_CONSUMPTION \u003d \"Cannot untake more than what you have consumed.\";","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" private final Name prescriptionName;","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final int dosesToUntake;","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" * Creates an UntakePrescriptionCommand to untake the specified number of doses from a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" * @param prescriptionName Name of the prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" * @param dosesToTake Number of doses to untake.","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" public UntakeCommand(Name prescriptionName, int dosesToTake) {","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" this.prescriptionName \u003d prescriptionName;","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" this.dosesToUntake \u003d dosesToTake;","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" * Executes the UntakePrescriptionCommand to untake the specified doses from the prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" * @param model The model of the prescription list.","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" * @return A CommandResult with the result of the execution.","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" * @throws CommandException If there are errors in executing the command.","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" Prescription prescription \u003d model.getPrescriptionByName(prescriptionName);","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" Optional\u003cStock\u003e totalStock \u003d prescription.getTotalStock();","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" if (Integer.parseInt(prescription.getConsumptionCount().getConsumptionCount()) - dosesToUntake \u003c 0) {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" throw new CommandException(MESSAGE_INSUFFICIENT_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" if (totalStock.isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" totalStock.get().incrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" prescription.getConsumptionCount().decrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" if (prescription.getDosage().isPresent()","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 Integer.parseInt(prescription.getConsumptionCount().toString())","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" \u003e\u003d Integer.parseInt(prescription.getDosage().get().toString())) {","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(true);","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(false);","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" Predicate\u003cPrescription\u003e isSameName \u003d new SameNamePredicate(prescriptionName);","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" model.updateFilteredPrescriptionList(isSameName);","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, prescriptionName));","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" if (!(other instanceof UntakeCommand)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" UntakeCommand otherCommand \u003d (UntakeCommand) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" return prescriptionName.equals(otherCommand.prescriptionName)","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 dosesToUntake \u003d\u003d otherCommand.dosesToUntake;","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":101}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.IsValidDatesPredicate;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" PREFIX_START_DATE, PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" PREFIX_START_DATE, PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage dosage \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_DOSAGE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d ParserUtil.parseDosage(argMultimap.getValue(PREFIX_DOSAGE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency frequency \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_FREQUENCY).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d ParserUtil.parseFrequency(argMultimap.getValue(PREFIX_FREQUENCY).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" Date startDate \u003d new Date(LocalDate.now().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\")));","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_START_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" startDate \u003d ParserUtil.parseStartDate(argMultimap.getValue(PREFIX_START_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" Date endDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_END_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d ParserUtil.parseEndDate(argMultimap.getValue(PREFIX_END_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" Date expiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_EXPIRY_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d ParserUtil.parseExpiryDate(argMultimap.getValue(PREFIX_EXPIRY_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" Stock totalStock \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_TOTAL_STOCK).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d ParserUtil.parseTotalStock(argMultimap.getValue(PREFIX_TOTAL_STOCK).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" Note note \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" // Set\u003cTag\u003e tagList \u003d ParserUtilPrescription.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d new Prescription(name, dosage, frequency, startDate, endDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate, totalStock, note);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" Predicate\u003cPrescription\u003e isValidDates \u003d new IsValidDatesPredicate();","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" if (!isValidDates.test(prescription)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(AddCommand.MESSAGE_INVALID_DATES);","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" return new AddCommand(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ChongWeiJie29":70,"-":42}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"mn/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_DOSAGE \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_FREQUENCY \u003d new Prefix(\"f/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_START_DATE \u003d new Prefix(\"sd/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_END_DATE \u003d new Prefix(\"ed/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_EXPIRY_DATE \u003d new Prefix(\"exd/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_TOTAL_STOCK \u003d new Prefix(\"ts/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_CONSUMPTION \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ChongWeiJie29":11,"-":9}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new DeletePrescriptionCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"TeeRenJing":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" * Parses input arguments and creates a new EditPrescriptionCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_START_DATE,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_CONSUMPTION, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_START_DATE,","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_CONSUMPTION, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_DOSAGE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setDosage(ParserUtil.parseDosage(argMultimap.getValue(PREFIX_DOSAGE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_FREQUENCY).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setFrequency(","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseFrequency(argMultimap.getValue(PREFIX_FREQUENCY).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_START_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setStartDate(","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseStartDate(argMultimap.getValue(PREFIX_START_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_END_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setEndDate(ParserUtil.parseEndDate(argMultimap.getValue(PREFIX_END_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_EXPIRY_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setExpiryDate(","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseExpiryDate(argMultimap.getValue(PREFIX_EXPIRY_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_TOTAL_STOCK).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setTotalStock(","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseTotalStock(argMultimap.getValue(PREFIX_TOTAL_STOCK).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_CONSUMPTION).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setConsumptionCount(","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setNote(ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" if (!editPrescriptionDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" return new EditCommand(index, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":54,"-":40}},{"path":"src/main/java/seedu/address/logic/parser/ExitCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new ExitPrescriptionCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class ExitCommandParser implements Parser\u003cExitCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" * Parses the given {@code String} of arguments in the context of the ExitPrescriptionCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" * and returns a ExitPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" public ExitCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" return new ExitCommand();","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":31}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/HelpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new HelpCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class HelpCommandParser implements Parser\u003cHelpCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" * Parses the given {@code String} of arguments in the context of the HelpPrescriptionCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" * and returns a HelpPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" public HelpCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":29}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" * Parses input arguments and creates a new ListPrescriptionCommand object","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" * Parses the given {@code String} of arguments in the context of the ListPrescriptionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * and returns a ListPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListCommand();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":6,"RoeReRe":24}},{"path":"src/main/java/seedu/address/logic/parser/ListTodayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses input arguments and creates a new ListTodayCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandParser implements Parser\u003cListTodayCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses the given {@code String} of arguments in the context of the ListTodayCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * and returns a ListTodayCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public ListTodayCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListTodayCommand();","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":18,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Collection;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Dosage} into a {@code Dosage}.","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code dosage} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public static Dosage parseDosage(String dosage) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedDosage \u003d dosage.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Dosage.isValidDosage(trimmedDosage)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return new Dosage(trimmedDosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Frequency} into a {@code Frequency}.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code frequency} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public static Frequency parseFrequency(String frequency) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedFrequency \u003d frequency.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Frequency.isValidFrequency(trimmedFrequency)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" return new Frequency(trimmedFrequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String StartDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code startDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseStartDate(String startDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedStartDate \u003d startDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedStartDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedStartDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String EndDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code endDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseEndDate(String endDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedEndDate \u003d endDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedEndDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedEndDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String ExpiryDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code expiryDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseExpiryDate(String expiryDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedExpiryDate \u003d expiryDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedExpiryDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedExpiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String TotalStock} into a {@code Stock}.","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code totalStock} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public static Stock parseTotalStock(String totalStock) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedTotalStock \u003d totalStock.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Stock.isValidStock(trimmedTotalStock)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Stock.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" return new Stock(trimmedTotalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":" * Parses a {@code String ConsumptionCount} into a {@code ConsumptionCount}.","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"shyanyong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"shyanyong"},"content":" * @throws ParseException if the given {@code consumptionCount} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"shyanyong"},"content":" public static ConsumptionCount parseConsumptionCount(String consumptionCount) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"shyanyong"},"content":" requireNonNull(consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"shyanyong"},"content":" String trimmedConsumptionCount \u003d consumptionCount.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"shyanyong"},"content":" if (!ConsumptionCount.isValidConsumptionCount(trimmedConsumptionCount)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"jingyu987"},"content":" return new ConsumptionCount(trimmedConsumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Note} into a {@code Note}.","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code note} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" public static Note parseNote(String note) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(note);","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedNote \u003d note.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Note.isValidNote(trimmedNote)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" return new Note(trimmedNote);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" // /**","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" // * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" // * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" // *","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" // * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" // public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" // requireNonNull(tag);","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" // String trimmedTag \u003d tag.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" // if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" // throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" // return new Tag(trimmedTag);","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" // /**","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" // * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" // public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" // requireNonNull(tags);","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" // final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":" // for (String tagName : tags) {","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":" // tagSet.add(parseTag(tagName));","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" // return tagSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jingyu987":1,"shyanyong":12,"ChongWeiJie29":105,"-":83}},{"path":"src/main/java/seedu/address/logic/parser/PrescriptionListParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionListParser {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" private static final java.util.logging.Logger logger \u003d LogsCenter.getLogger(PrescriptionListParser.class);","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" final java.util.regex.Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" case ListTodayCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListTodayCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" case TakeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return new TakeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" case UntakeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" return new UntakeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":" return new ExitCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" return new HelpCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"TeeRenJing":7,"jingyu987":3,"ChongWeiJie29":10,"-":65}},{"path":"src/main/java/seedu/address/logic/parser/TakeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * Parses input arguments and creates a new TakePrescriptionCommand object","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandParser implements Parser\u003cTakeCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Parses the given arguments to create a TakePrescriptionCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" * @param args User input representing the command.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" * @return A TakePrescriptionCommand for taking a specified number of doses from a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public TakeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CONSUMPTION)","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d ParserUtil","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d Integer.parseInt(consumptionCount.getConsumptionCount());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" return new TakeCommand(name, dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":43,"ChongWeiJie29":9}},{"path":"src/main/java/seedu/address/logic/parser/UntakeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * Parses input arguments and creates a new UntakePrescriptionCommand object","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandParser implements Parser\u003cUntakeCommand\u003e {","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Parses the given arguments to create an UntakePrescriptionCommand.","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" * @param args User input representing the command.","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" * @return An UntakePrescriptionCommand for untaking a specified number of doses from a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public UntakeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CONSUMPTION)","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d ParserUtil","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get());","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d Integer.parseInt(consumptionCount.getConsumptionCount());","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" return new UntakeCommand(name, dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":52}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * The API of the ModelPrescription component.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" Predicate\u003cPrescription\u003e PREDICATE_SHOW_ALL_PRESCRIPTIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescriptionListFilePath(Path prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 completed prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the user prefs\u0027 completed prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces prescription list data with the data in {@code prescriptionList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescriptionList(ReadOnlyPrescriptionList prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns the PrescriptionList */","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code prescription} exists in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" boolean hasPrescription(Prescription prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" * Deletes the given prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" void deletePrescription(Prescription target);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds the given prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescription} must not already exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" void addPrescription(Prescription prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} with {@code editedPrescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescription(Prescription target, Prescription editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered prescription list */","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a prescription with the same name as {@code prescriptionName}","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription getPrescriptionByName(Name prescriptionName) throws CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates the filter of the filtered prescription list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces completed prescription list data with the data in {@code completedPrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns the CompletedPrescriptionList */","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code completedPrescription}","lastModifiedDate":"2023-10-23"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * exists in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" boolean hasCompletedPrescription(Prescription completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" * Deletes the given prescription.","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" void deleteCompletedPrescription(Prescription target);","lastModifiedDate":"2023-10-23"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds the given completed prescription.","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" * {@codecompletedPprescription} must not already exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" void addCompletedPrescription(Prescription completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} with {@code editedPrescription}.","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescription(Prescription target, Prescription editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered completed prescription list */","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a prescription with the same name as {@code completedPrescriptionName}","lastModifiedDate":"2023-10-23"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription getCompletedPrescriptionByName(Name completedPrescriptionName) throws CommandException;","lastModifiedDate":"2023-10-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates the filter of the filtered completed prescription list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ChongWeiJie29":83,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents the in-memory model of the prescription list data.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionList prescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionList completedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private final FilteredList\u003cPrescription\u003e filteredPrescriptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final FilteredList\u003cPrescription\u003e filteredCompletedPrescriptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" * Initializes a ModelManagerPrescription with the given prescriptionList and userPrefs.","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" public ModelManager(ReadOnlyPrescriptionList prescriptionList, ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(prescriptionList, userPrefs);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Initializing with prescription list: \" + prescriptionList","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" + \", completed prescription list: \" + completedPrescriptionList","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionList \u003d new PrescriptionList(prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionList \u003d new PrescriptionList(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" filteredPrescriptions \u003d new FilteredList\u003c\u003e(this.prescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" filteredCompletedPrescriptions \u003d new FilteredList\u003c\u003e(this.completedPrescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" this(new PrescriptionList(), new PrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefsPrescription \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" return userPrefs.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" return userPrefs.getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setCompletedPrescriptionListFilePath(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PrescriptionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionList(ReadOnlyPrescriptionList prescriptionList) {","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionList.resetData(prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList.hasPrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" public void deletePrescription(Prescription target) {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.removePrescription(target);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getPrescriptionByName(Name prescriptionName) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionName);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription prescription : prescriptionList.getPrescriptionList()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getName().equals(prescriptionName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" return prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Prescription List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the list of {@code Prescription} backed by the internal list of","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code versionedPrescriptionList}","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" return filteredPrescriptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" filteredPrescriptions.setPredicate(predicate);","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d CompletedPrescriptionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) {","lastModifiedDate":"2023-10-23"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionList.resetData(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionList.hasPrescription(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" public void deleteCompletedPrescription(Prescription target) {","lastModifiedDate":"2023-10-23"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.removePrescription(target);","lastModifiedDate":"2023-10-23"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" public void addCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.addPrescription(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" updateFilteredCompletedPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getCompletedPrescriptionByName(Name completedPrescriptionName) throws CommandException {","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionName);","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription completedPrescription : completedPrescriptionList.getPrescriptionList()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":205,"author":{"gitId":"ChongWeiJie29"},"content":" if (completedPrescription.getName().equals(completedPrescriptionName)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":206,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":207,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":208,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":209,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Completed Prescription List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the list of {@code Prescription} backed by the internal list of","lastModifiedDate":"2023-10-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code versionedPrescriptionList}","lastModifiedDate":"2023-10-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":" return filteredCompletedPrescriptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":224,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":226,"author":{"gitId":"ChongWeiJie29"},"content":" filteredCompletedPrescriptions.setPredicate(predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":236,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList.equals(otherModelManager.prescriptionList)","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 completedPrescriptionList.equals(otherModelManager.completedPrescriptionList)","lastModifiedDate":"2023-10-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":244,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 filteredPrescriptions.equals(otherModelManager.filteredPrescriptions)","lastModifiedDate":"2023-10-23"},{"lineNumber":245,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 filteredCompletedPrescriptions.equals(otherModelManager.filteredCompletedPrescriptions);","lastModifiedDate":"2023-10-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":119,"-":129}},{"path":"src/main/java/seedu/address/model/PrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.UniquePrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * Wraps all data at the prescription-list level","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Duplicates are not allowed (by .isSamePrescription comparison)","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionList implements ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private final UniquePrescriptionList prescriptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * among constructors.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList() {}","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a PrescriptionList using the Prescriptions in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList(ReadOnlyPrescriptionList toBeCopied) {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" this();","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the contents of the prescription list with {@code prescriptions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescriptions} must not contain duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.setPrescriptions(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" * Resets the existing data of this {@code PrescriptionList} with {@code newData}.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" public void resetData(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" setPrescriptions(newData.getPrescriptionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" //// prescription-level operations","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code prescription} exists in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.contains(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds a prescription to the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must not already exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription p) {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.add(p);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} in the list with {@code editedPrescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" * Removes {@code key} from this {@code PrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code key} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void removePrescription(Prescription key) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.remove(key);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" //// util methods","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"prescriptions\", prescriptions)","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getPrescriptionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof PrescriptionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList otherPrescriptionList \u003d (PrescriptionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.equals(otherPrescriptionList.prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":131}},{"path":"src/main/java/seedu/address/model/ReadOnlyPrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Unmodifiable view of an prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"public interface ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the prescriptions list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * This list will not contain any duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getPrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChongWeiJie29":2,"-":15}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private Path prescriptionListFilePath \u003d Paths.get(\"data\" , \"prescriptionList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private Path completedPrescriptionListFilePath \u003d Paths.get(\"data\", \"completedPrescriptionList.json\");","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code UserPrefsPrescriptionPrescription} with default values.","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code UserPrefsPrescription} with the prefs in {@code userPrefs}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Resets the existing data of this {@code UserPrefsPrescription} with {@code newUserPrefsPrescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefsPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(newUserPrefsPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" setGuiSettings(newUserPrefsPrescription.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" setPrescriptionListFilePath(newUserPrefsPrescription.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" setCompletedPrescriptionListFilePath(newUserPrefsPrescription.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListFilePath;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionListFilePath \u003d prescriptionListFilePath;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListFilePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionListFilePath \u003d completedPrescriptionListFilePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" UserPrefs otherUserPrefsPrescription \u003d (UserPrefs) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" return guiSettings.equals(otherUserPrefsPrescription.guiSettings)","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 prescriptionListFilePath.equals(otherUserPrefsPrescription.prescriptionListFilePath)","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 completedPrescriptionListFilePath.equals(","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" otherUserPrefsPrescription.completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" return Objects.hash(guiSettings, prescriptionListFilePath, completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(\"\\nLocal prescription list data file location : \" + prescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(\"\\nLocal completed prescription list data file location : \" + completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":30,"-":72}},{"path":"src/main/java/seedu/address/model/prescription/ConsumptionCount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" * Represents a Prescription\u0027s consumption count in the prescription list.","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"public class ConsumptionCount {","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" \"ConsumptionCount should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" private String consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" * Constructs a {@code ConsumptionCount object}.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" * @param consumptionCount The initial consumption count as a string.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public ConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" checkArgument(isValidConsumptionCount(consumptionCount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" * Increments the consumption count by the specified amount.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" * @param count The amount to increment the consumption count.","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" public void incrementCount(int count) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" int currentCount \u003d Integer.parseInt(this.consumptionCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" currentCount +\u003d count;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d Integer.toString(currentCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" * Decrements the consumption count by the specified amount.","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" * @param count The amount to increment the consumption count.","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" public void decrementCount(int count) {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" int currentCount \u003d Integer.parseInt(this.consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" currentCount -\u003d count;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d Integer.toString(currentCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" public void setConsumptionCount(String count) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d count;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" public String getConsumptionCount() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" return this.consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" * Returns true if a given string is a valid dosage.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" public static boolean isValidConsumptionCount(String test) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" return consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" if (!(other instanceof ConsumptionCount)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount otherConsumptionCount \u003d (ConsumptionCount) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" return consumptionCount.equals(otherConsumptionCount.consumptionCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" return consumptionCount.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":88}},{"path":"src/main/java/seedu/address/model/prescription/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Prescription\u0027s date in the prescription list.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public class Date {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" \"Dates should be in the dd/mm/yyyy format, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the date must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"([0-9]{2})/([0-9]{2})/([0-9]{4})\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @param date A valid date.","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public Date(String date) {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(date);","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" fullDate \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" * Returns the date in LocalDate format.","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" public LocalDate getDate() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" return LocalDate.parse(fullDate, DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"shyanyong":10,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Dosage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a prescription\u0027s dosage in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDosage(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Dosage {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Dosages should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullDosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Dosage}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param dosage A valid dosage.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Dosage(String dosage) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(dosage);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidDosage(dosage), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullDosage \u003d dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid dosage.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidDosage(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Dosage)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage otherDosage \u003d (Dosage) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage.equals(otherDosage.fullDosage);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Frequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s frequency in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFrequency(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Frequency {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Frequencies should only be one of the following (Daily / Weekly / Monthly), and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public static final String VALIDATION_REGEX \u003d \"(Daily|Weekly|Monthly)\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullFrequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Frequency}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param frequency A valid frequency.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Frequency(String frequency) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(frequency);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidFrequency(frequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullFrequency \u003d frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid frequency.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidFrequency(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" public String getFrequency() {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" return fullFrequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Frequency)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency otherFrequency \u003d (Frequency) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency.equals(otherFrequency.fullFrequency);","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"shyanyong":4,"ChongWeiJie29":65,"RoeReRe":1}},{"path":"src/main/java/seedu/address/model/prescription/IsTodayPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is today.","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"public class IsTodayPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" LocalDate startDate \u003d prescription.getStartDate().getDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cDate\u003e endDate \u003d prescription.getEndDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" long daysBetween \u003d ChronoUnit.DAYS.between(startDate, today);","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" if ((prescription.getEndDate().isPresent()","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 today.isAfter(endDate.get().getDate()))","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" || today.isBefore(startDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cFrequency\u003e frequency \u003d prescription.getFrequency();","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" if (frequency.isEmpty()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" switch (frequency.get().toString()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" case \"Daily\":","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" case \"Weekly\":","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" return daysBetween % 7 \u003d\u003d 0;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" case \"Monthly\":","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" return daysBetween % 30 \u003d\u003d 0;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" default:","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":31,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/IsValidDatesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is valid.","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"public class IsValidDatesPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":" LocalDate startDate \u003d prescription.getStartDate().getDate();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" LocalDate endDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d prescription.getEndDate().get().getDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" LocalDate expiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d prescription.getExpiryDate().get().getDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" if (endDate !\u003d null \u0026\u0026 expiryDate !\u003d null) {","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" return startDate.isBefore(endDate) \u0026\u0026 endDate.isBefore(expiryDate);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"shyanyong":16,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a medication\u0027s name in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullName;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":3,"-":63}},{"path":"src/main/java/seedu/address/model/prescription/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" * Tests that a {@code Prescription}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(prescription.getName().toString(), keyword));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":5,"-":39}},{"path":"src/main/java/seedu/address/model/prescription/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Note {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Notes should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullNote;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param note A valid note.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Note(String note) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(note);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullNote \u003d note;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote.equals(otherNote.fullNote);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Prescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Collections;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Prescription in the prescription list.","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"public class Prescription {","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" // Identity fields","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" // Data fields","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDosage\u003e dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cFrequency\u003e frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private final Date startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDate\u003e endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDate\u003e expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cStock\u003e totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" private final ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cNote\u003e note;","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" // private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" * Constructor for prescription without consumption count and isCompleted.","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription(Name name, Dosage dosage, Frequency frequency, Date startDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" Date endDate, Date expiryDate, Stock totalStock, Note note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" this(name, dosage, frequency, startDate, endDate, expiryDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" totalStock, new ConsumptionCount(\"0\"), false, note);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription(Name name, Dosage dosage, Frequency frequency, Date startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" Date endDate, Date expiryDate, Stock totalStock, ConsumptionCount consumptionCount,","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" Boolean isCompleted, Note note) {","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d Optional.ofNullable(dosage);","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d Optional.ofNullable(frequency);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d Optional.ofNullable(endDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d Optional.ofNullable(expiryDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d Optional.ofNullable(totalStock);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d Optional.ofNullable(note);","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public Name getName() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return name;","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDosage\u003e getDosage() {","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cFrequency\u003e getFrequency() {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" return frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" public Date getStartDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" return startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDate\u003e getEndDate() {","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" return endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDate\u003e getExpiryDate() {","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" return expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cStock\u003e getTotalStock() {","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" return totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" public ConsumptionCount getConsumptionCount() {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" return consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" public Boolean getIsCompleted() {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" return isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" return note;","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" public void setIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":" // /","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" // * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" // * if modification is attempted.","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" // public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" // return Collections.unmodifiableSet(tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if both prescriptions have the same name.","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * This defines a weaker notion of equality between two prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean isSamePrescription(Prescription otherPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" if (otherPrescription \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" return otherPrescription !\u003d null","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 otherPrescription.getName().equals(getName())","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 otherPrescription.getStartDate().equals(getStartDate());","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if both prescriptions have the same identity and data fields.","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" * This defines a stronger notion of equality between two prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Prescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription otherPrescription \u003d (Prescription) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" return name.equals(otherPrescription.name)","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 dosage.equals(otherPrescription.dosage)","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 frequency.equals(otherPrescription.frequency)","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 startDate.equals(otherPrescription.startDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 endDate.equals(otherPrescription.endDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 expiryDate.equals(otherPrescription.expiryDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 totalStock.equals(otherPrescription.totalStock)","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 consumptionCount.equals(otherPrescription.consumptionCount)","lastModifiedDate":"2023-10-15"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 isCompleted.equals(otherPrescription.isCompleted)","lastModifiedDate":"2023-10-21"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 note.equals(otherPrescription.note);","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" return Objects.hash(name, dosage, frequency, startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" endDate, expiryDate, totalStock, consumptionCount, isCompleted, note);","lastModifiedDate":"2023-10-21"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"dosage\", dosage)","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"frequency\", frequency)","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"startDate\", startDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"endDate\", endDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"expiryDate\", expiryDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"totalStock\", totalStock)","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"jingyu987"},"content":" .add(\"consumptionCount\", consumptionCount)","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"isCompleted\", isCompleted)","lastModifiedDate":"2023-10-21"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"note\", note)","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":22,"ChongWeiJie29":156}},{"path":"src/main/java/seedu/address/model/prescription/SameNamePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is today.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"public class SameNamePredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" private final Name targetName;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" public SameNamePredicate(Name targetName) {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" return prescription.getName().equals(targetName);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":20}},{"path":"src/main/java/seedu/address/model/prescription/Stock.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s stock in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStock(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Stock {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Stocks should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" private String fullStock;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Stock}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param stock A valid stock.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Stock(String stock) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(stock);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidStock(stock), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullStock \u003d stock;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid stock.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidStock(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" public void setFullStock(String fullStock) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d fullStock;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * increment the count of stock.","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * @param count The count to increment by.","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" public void incrementCount(int count) {","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(this.fullStock) + count;","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d Integer.toString(newStock);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" * Decrements the count of stock.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" * @param count The count to decrement by.","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" public void decrementCount(int count) {","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(this.fullStock) - count;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d Integer.toString(newStock);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Stock)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" Stock otherStock \u003d (Stock) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock.equals(otherStock.fullStock);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":23,"ChongWeiJie29":65}},{"path":"src/main/java/seedu/address/model/prescription/UniquePrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.exceptions.PrescriptionNotFoundException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * A list of prescriptions that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * A prescription is considered unique by comparing using","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code Prescription#isSamePrescription(Prescription)}. As such, adding and updating of","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * prescriptions uses Prescription#isSamePrescription(Prescription) for equality so as to ensure","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * that the prescription being added or updated is unique in terms of identity in the","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * UniquePrescriptionList. However, the removal of a prescription uses Prescription#equals(Object)","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * so as to ensure that the prescription with exactly the same fields will be removed.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * @see Prescription#isSamePrescription(Prescription)","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"public class UniquePrescriptionList implements Iterable\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final ObservableList\u003cPrescription\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private final ObservableList\u003cPrescription\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if the list contains an equivalent prescription as the given argument.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean contains(Prescription toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.stream().anyMatch(toCheck::isSamePrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds a prescription to the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must not already exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public void add(Prescription toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the prescription {@code target} in the list with {@code editedPrescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * another existing prescription in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" throw new PrescriptionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" if (!target.isSamePrescription(editedPrescription) \u0026\u0026 contains(editedPrescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.set(index, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" * Removes the equivalent prescription from the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public void remove(Prescription toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" throw new PrescriptionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(UniquePrescriptionList replacement) {","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the contents of this list with {@code prescriptions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescriptions} must not contain duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" if (!prescriptionsAreUnique(prescriptions)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.setAll(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" public Iterator\u003cPrescription\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof UniquePrescriptionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" UniquePrescriptionList otherUniquePrescriptionList \u003d (UniquePrescriptionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.equals(otherUniquePrescriptionList.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if {@code prescriptions} contains only unique prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" private boolean prescriptionsAreUnique(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" for (int i \u003d 0; i \u003c prescriptions.size() - 1; i++) {","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" for (int j \u003d i + 1; j \u003c prescriptions.size(); j++) {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptions.get(i).isSamePrescription(prescriptions.get(j))) {","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":153}},{"path":"src/main/java/seedu/address/model/prescription/exceptions/DuplicatePrescriptionException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":" * Signals that the operation will result in duplicate Prescriptions (Prescriptions","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":" * are considered duplicates if they have the same identity).","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"public class DuplicatePrescriptionException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" public DuplicatePrescriptionException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" super(\"Operation would result in duplicate prescriptions\");","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/exceptions/PrescriptionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":" * Signals that the operation is unable to find the specified prescription.","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionNotFoundException extends RuntimeException {}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * Contains utility methods for populating {@code PrescriptionList} with sample data.","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static Prescription[] getSamplePrescriptions() {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription[] {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Aspirin\"), new Dosage(\"1\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"25/12/2023\"), new Date(\"01/12/2024\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"100\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Propranolol\"), new Dosage(\"4\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/08/2023\"), new Date(\"20/01/2024\"), new Date(\"02/07/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"500\"), new Note(\"Take after food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Ergotamine Tartrate\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"10/11/2025\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"50\"), new Note(\"May cause drowsiness\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Naproxen Sodium\"), new Dosage(\"2\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"50\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Zomig Rapimelt\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2023\"), new Date(\"12/06/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"20\"), new Note(\"Allow to dissolve under tongue\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Omeprazole\"), new Dosage(\"2\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2024\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"200\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public static ReadOnlyPrescriptionList getSamplePrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList samplePrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription samplePrescription : getSamplePrescriptions()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" samplePrescriptionList.addPrescription(samplePrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return samplePrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public static Prescription[] getSampleCompletedPrescriptions() {","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription[] {","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Aspirin\"), new Dosage(\"1\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"01/01/2023\"), new Date(\"01/12/2024\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"100\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Propranolol\"), new Dosage(\"4\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"01/01/2023\"), new Date(\"02/07/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"500\"), new Note(\"Take after food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Ergotamine Tartrate\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"50\"), new Note(\"May cause drowsiness\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Naproxen Sodium\"), new Dosage(\"2\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"50\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Zomig Rapimelt\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"12/06/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"20\"), new Note(\"Allow to dissolve under tongue\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Omeprazole\"), new Dosage(\"2\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"200\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" public static ReadOnlyPrescriptionList getSampleCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList sampleCompletedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription sampleCompletedPrescription : getSampleCompletedPrescriptions()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" sampleCompletedPrescriptionList.addPrescription(sampleCompletedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" return sampleCompletedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ChongWeiJie29":50,"RoeReRe":16,"-":27}},{"path":"src/main/java/seedu/address/storage/CompletedPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a storage for the completed version of {@link seedu.address.model.PrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public interface CompletedPrescriptionListStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns CompletedPrescriptionList data as a {@link ReadOnlyPrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #getPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Saves the given {@link ReadOnlyPrescriptionList} to the storage.","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * @param completedPrescriptionList cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #savePrescriptionList(ReadOnlyPrescriptionList)","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"ChongWeiJie29":46}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPrescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.stream.Collectors;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" * Jackson-friendly version of {@link Prescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonAdaptedPrescription {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Prescription\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final String name;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private String dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private String frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private final String startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" private String endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private String expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private String totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final String consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" private String note;","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" // private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonAdaptedPrescription} with the given prescription details.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonAdaptedPrescription(@JsonProperty(\"name\") String name, @JsonProperty(\"dosage\") String dosage,","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"frequency\") String frequency, @JsonProperty(\"startDate\") String startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"endDate\") String endDate, @JsonProperty(\"expiryDate\") String expiryDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"totalStock\") String totalStock, @JsonProperty(\"consumptionCount\") String consumptionCount,","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"isCompleted\") Boolean isCompleted,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"note\") String note) {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d note;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" // if (tags !\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" // this.tags.addAll(tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code Prescription} into this class for Jackson use.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonAdaptedPrescription(Prescription source) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" name \u003d source.getName().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d source.getDosage().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d source.getFrequency().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" startDate \u003d source.getStartDate().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d source.getEndDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d source.getExpiryDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d source.getTotalStock().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" consumptionCount \u003d source.getConsumptionCount().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d source.getIsCompleted();","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d source.getNote().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" // tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" // .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" // .collect(Collectors.toList()));","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this Jackson-friendly adapted prescription object into the model\u0027s {@code Prescription} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted prescription.","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" // for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" // personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage modelDosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" if (dosage \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" modelDosage \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Dosage.isValidDosage(dosage)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" modelDosage \u003d new Dosage(dosage);","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency modelFrequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" if (frequency \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" modelFrequency \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Frequency.isValidFrequency(frequency)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" modelFrequency \u003d new Frequency(frequency);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" if (startDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(startDate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" final Date modelStartDate \u003d new Date(startDate);","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" Date modelEndDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" if (endDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" modelEndDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Date.isValidDate(endDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" modelEndDate \u003d new Date(endDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" Date modelExpiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" if (expiryDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" modelExpiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Date.isValidDate(expiryDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":157,"author":{"gitId":"ChongWeiJie29"},"content":" modelExpiryDate \u003d new Date(expiryDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" Stock modelTotalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" modelTotalStock \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Stock.isValidStock(totalStock)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Stock.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" modelTotalStock \u003d new Stock(totalStock);","lastModifiedDate":"2023-10-21"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"jingyu987"},"content":" if (consumptionCount \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"jingyu987"},"content":" final ConsumptionCount modelConsumptionCount \u003d new ConsumptionCount(consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"jingyu987"},"content":" if (isCompleted \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"jingyu987"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"jingyu987"},"content":" final Boolean modelIsCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" Note modelNote;","lastModifiedDate":"2023-10-21"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" modelNote \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Note.isValidNote(note)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" modelNote \u003d new Note(note);","lastModifiedDate":"2023-10-21"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription(modelName, modelDosage, modelFrequency, modelStartDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"jingyu987"},"content":" modelEndDate, modelExpiryDate, modelTotalStock, modelConsumptionCount, modelIsCompleted,","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"jingyu987"},"content":" modelNote);","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":19,"ChongWeiJie29":175}},{"path":"src/main/java/seedu/address/storage/JsonCompletedPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * A class to access CompletedPrescriptionList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class JsonCompletedPrescriptionListStorage implements CompletedPrescriptionListStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonCompletedPrescriptionListStorage.class);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private Path filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonCompletedPrescriptionListStorage(Path filePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" return filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" return readCompletedPrescriptionList(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #readCompletedPrescriptionList()}.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cJsonSerializablePrescriptionList\u003e jsonCompletedPrescriptionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" filePath, JsonSerializablePrescriptionList.class);","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" if (!jsonCompletedPrescriptionList.isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.of(jsonCompletedPrescriptionList.get().toModelType());","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" saveCompletedPrescriptionList(completedPrescriptionList, filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #saveCompletedPrescriptionList(ReadOnlyPrescriptionList)}.","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePrescriptionList(completedPrescriptionList), filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"ChongWeiJie29":81}},{"path":"src/main/java/seedu/address/storage/JsonPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * A class to access PrescriptionList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class JsonPrescriptionListStorage implements PrescriptionListStorage {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonPrescriptionListStorage.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private Path filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonPrescriptionListStorage(Path filePath) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" return filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" return readPrescriptionList(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #readPrescriptionList()}.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cJsonSerializablePrescriptionList\u003e jsonPrescriptionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" filePath, JsonSerializablePrescriptionList.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" if (!jsonPrescriptionList.isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.of(jsonPrescriptionList.get().toModelType());","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" savePrescriptionList(prescriptionList, filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #savePrescriptionList(ReadOnlyPrescriptionList)}.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePrescriptionList(prescriptionList), filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":80}},{"path":"src/main/java/seedu/address/storage/JsonSerializableCompletedPrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * An Immutable PrescriptionList that is serializable to JSON format.","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"@JsonRootName(value \u003d \"prescriptionlist\")","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonSerializableCompletedPrescriptionList {","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"Prescriptions list \"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" + \"contains duplicate prescription(s).\";","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final List\u003cJsonAdaptedPrescription\u003e prescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonSerializablePrescriptionList} with the given prescriptions.","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializableCompletedPrescriptionList(","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"completedPrescriptions\") List\u003cJsonAdaptedPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.addAll(prescriptions);","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code ReadOnlyPrescriptionList} into this class for Jackson use.","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializableCompletedPrescriptionList(ReadOnlyPrescriptionList source) {","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.addAll(source.getPrescriptionList().stream().map(","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" JsonAdaptedPrescription::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this prescription list into the model\u0027s {@code PrescriptionList} object.","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" for (JsonAdaptedPrescription jsonAdaptedPrescription : prescriptions) {","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d jsonAdaptedPrescription.toModelType();","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptionList.hasPrescription(prescription)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"ChongWeiJie29":63}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * An Immutable PrescriptionList that is serializable to JSON format.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"@JsonRootName(value \u003d \"prescriptionlist\")","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonSerializablePrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"Prescriptions list \"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" + \"contains duplicate prescription(s).\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final List\u003cJsonAdaptedPrescription\u003e prescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonSerializablePrescriptionList} with the given prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializablePrescriptionList(","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"prescriptions\") List\u003cJsonAdaptedPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.addAll(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code ReadOnlyPrescriptionList} into this class for Jackson use.","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializablePrescriptionList(ReadOnlyPrescriptionList source) {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.addAll(source.getPrescriptionList().stream().map(","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" JsonAdaptedPrescription::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this prescription list into the model\u0027s {@code PrescriptionList} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" for (JsonAdaptedPrescription jsonAdaptedPrescription : prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d jsonAdaptedPrescription.toModelType();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptionList.hasPrescription(prescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":63}},{"path":"src/main/java/seedu/address/storage/PrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a storage for {@link seedu.address.model.PrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public interface PrescriptionListStorage {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns PrescriptionList data as a {@link ReadOnlyPrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #getPrescriptionListFilePath()","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Saves the given {@link ReadOnlyPrescriptionList} to the storage.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * @param prescriptionList cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #savePrescriptionList(ReadOnlyPrescriptionList)","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":45}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * API of the StoragePrescription component","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"public interface Storage extends PrescriptionListStorage, CompletedPrescriptionListStorage, UserPrefsStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ChongWeiJie29":14,"-":27}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * Manages storage of PrescriptionList data in local storage.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" private PrescriptionListStorage prescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private CompletedPrescriptionListStorage completedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code StorageManagerPrescription} with the given {@code PrescriptionListStorage}","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * and {@code UserPrefStorage}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public StorageManager(PrescriptionListStorage prescriptionListStorage,","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" CompletedPrescriptionListStorage completedPrescriptionListStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionListStorage \u003d prescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionListStorage \u003d completedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PrescriptionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListStorage.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" return readPrescriptionList(prescriptionListStorage.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListStorage.readPrescriptionList(filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" savePrescriptionList(prescriptionList, prescriptionListStorage.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListStorage.savePrescriptionList(prescriptionList, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d CompletedPrescriptionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListStorage.getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" return readCompletedPrescriptionList(completedPrescriptionListStorage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListStorage.readCompletedPrescriptionList(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" saveCompletedPrescriptionList(completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage.saveCompletedPrescriptionList(completedPrescriptionList, filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":50,"-":63}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t15-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"TeeRenJing":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import javafx.geometry.Rectangle2D;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import javafx.scene.transform.Scale;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import javafx.stage.Screen;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"MainWindowPrescription.fxml\";","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" private PrescriptionListPanel prescriptionListPanel;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" private StackPane prescriptionListPanelPlaceholder;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListPanel \u003d new PrescriptionListPanel(logic.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListPanelPlaceholder.getChildren().add(prescriptionListPanel.getRoot());","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":" scaleScreen();","lastModifiedDate":"2023-10-22"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":" private void scaleScreen() {","lastModifiedDate":"2023-10-22"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":" Rectangle2D screen \u003d Screen.getPrimary().getBounds();","lastModifiedDate":"2023-10-22"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" double screenScale \u003d screen.getHeight() / 1080;","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" Scale scale \u003d new Scale(screenScale, screenScale);","lastModifiedDate":"2023-10-22"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" scale.setPivotX(screen.getWidth() / 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" scale.setPivotY(screen.getHeight() / 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" primaryStage.getScene().getRoot().getTransforms().setAll(scale);","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" primaryStage.centerOnScreen();","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionListPanel getPersonListPanel() {","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListPanel;","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"ChongWeiJie29":8,"RoeReRe":16,"-":188}},{"path":"src/main/java/seedu/address/ui/PrescriptionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Comparator;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * An UI component that displays information of a {@code Prescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"PrescriptionListCard.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public final Prescription prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Label name;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private Label id;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" private Label dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" private Label frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" private Label startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" private Label endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" private Label expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" private Label totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" private Label consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" private Label note;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code PrescriptionCode} with the given {@code Prescription} and index to display.","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionCard(Prescription prescription, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescription \u003d prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" name.setText(prescription.getName().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" dosage.setText(prescription.getDosage().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" dosage.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" frequency.setText(prescription.getFrequency().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" frequency.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" startDate.setText(prescription.getStartDate().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" endDate.setText(prescription.getEndDate().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" endDate.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" expiryDate.setText(prescription.getExpiryDate().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" expiryDate.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" totalStock.setText(prescription.getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" totalStock.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" note.setText(prescription.getNote().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" note.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" setCompletionStatus(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" // prescription.getTags().stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" // .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" private void setCompletionStatus(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().clear();","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" if (!prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(String.format(\"Consumed %s\",","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" prescription.getConsumptionCount().getConsumptionCount()));","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-grey\");","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" } else if (prescription.getIsCompleted()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(\"Completed\");","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-green\");","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(String.format(\"Uncompleted %s/%s\",","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" prescription.getConsumptionCount().getConsumptionCount(),","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" dosage.getText()));","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-red\");","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":2,"ChongWeiJie29":62,"RoeReRe":59}},{"path":"src/main/java/seedu/address/ui/PrescriptionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Panel containing the list of prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"PrescriptionListPanel.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PrescriptionListPanel.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private ListView\u003cPrescription\u003e prescriptionListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code PrescriptionListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionListPanel(ObservableList\u003cPrescription\u003e prescriptionList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListView.setItems(prescriptionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListView.setCellFactory(listView -\u003e new PrescriptionListViewCell());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Prescription} using a {@code PrescriptionCard}.","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" class PrescriptionListViewCell extends ListCell\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" protected void updateItem(Prescription prescription, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" super.updateItem(prescription, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" if (empty || prescription \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" setText(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" setGraphic(new PrescriptionCard(prescription, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":49}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import javafx.stage.StageStyle;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" primaryStage.initStyle(StageStyle.TRANSPARENT);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"RoeReRe":2,"-":88}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"\u003cStackPane styleClass\u003d\"modern-box-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"15\" bottom\u003d\"10\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"RoeReRe":8,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"/* Extra styles for BayMeds */","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"#mainWindowBackground {","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #202124;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(three-pass-box, derive(#202124, -20%), 10, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"#mainWindowLabel {","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 25pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" -fx-opacity: 1;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"#rightWindowBackground {","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #3C4042;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 0em 2em 2em 0em;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":".modern-box-pane {","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(gaussian, #ADD8E625, 20, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":".consumption-status-green {","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #2E7D32;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":".consumption-status-red {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #D32F2F;","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":".consumption-status-grey {","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #6c7a89;","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"/* AB3 Styles */","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" background-color: #474C5F; /* Used in the default.html file */","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":"#prescriptionListView {","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":148,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 15;","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 15;","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(gaussian, #ADD8E650, 15, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":".list-cell:empty {","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":162,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" -fx-border-width: 0;","lastModifiedDate":"2023-10-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"RoeReRe"},"content":".cell_small_header {","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"RoeReRe"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":213,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":216,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 0 0 0 20;","lastModifiedDate":"2023-10-22"},{"lineNumber":257,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #202124;","lastModifiedDate":"2023-10-22"},{"lineNumber":258,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 2em 0em 0em 0em;","lastModifiedDate":"2023-10-22"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2023-10-22"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #3C4042;","lastModifiedDate":"2023-10-22"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Bold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":283,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #0096C9;","lastModifiedDate":"2023-10-22"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":" -fx-unit-increment: 0.1;","lastModifiedDate":"2023-10-22"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":" -fx-block-increment: 0.1;","lastModifiedDate":"2023-10-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":347,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":354,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":362,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":369,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":372,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":376,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":377,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":378,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":382,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill : #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":383,"author":{"gitId":"RoeReRe"},"content":" -fx-prompt-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":384,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":386,"author":{"gitId":"RoeReRe"},"content":"#filterField, #prescriptionListPanel, #prescriptionWebpage {","lastModifiedDate":"2023-10-22"},{"lineNumber":387,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":388,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":390,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":391,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":395,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":397,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":398,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":400,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":402,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":403,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":405,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":407,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"RoeReRe":94,"-":313}},{"path":"src/main/resources/view/MainWindowPrescription.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.BorderPane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" title\u003d\"BayMeds v.2103\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cicons\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/icons\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cscene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" \u003cScene fill\u003d\"transparent\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane fx:id\u003d\"mainWindowBackground\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" \u003cleft\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" \u003cPane prefHeight\u003d\"830.0\" prefWidth\u003d\"650.0\" BorderPane.alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel text\u003d\"BayMeds\" fx:id\u003d\"mainWindowLabel\" layoutX\u003d\"50.0\" layoutY\u003d\"60.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"commandBoxPlaceholder\"","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"modern-box-pane\"","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"145.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"34.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"560.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"resultDisplayPlaceholder\"","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"modern-box-pane\"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"220.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" minHeight\u003d\"100\"","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"480.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"560.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" layoutX\u003d\"45.0\" layoutY\u003d\"700.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" \u003c/Pane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" \u003c/left\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" \u003ccenter\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox fx:id\u003d\"rightWindowBackground\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets right\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" \u003cright\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" \u003cButton mnemonicParsing\u003d\"false\" text\u003d\"X\" onAction\u003d\"#handleExit\"/\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" \u003c/right\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" \u003cPane prefHeight\u003d\"830.0\" prefWidth\u003d\"700.0\" BorderPane.alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"prescriptionList\"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" style\u003d\"-fx-background-color: transparent\"","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"60.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" minWidth\u003d\"340\"","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"595\"","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"690\"","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" \u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cStackPane fx:id\u003d\"prescriptionListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" \u003c/Pane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" \u003c/center\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/scene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":39,"RoeReRe":75}},{"path":"src/main/resources/view/PrescriptionListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.BorderPane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" \u003cleft\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" \u003c/left\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" \u003cright\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"consumptionCount\" text\u003d\"\\$consumptionCount\" styleClass\u003d\"consumption-status-red\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" \u003c/right\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" \u003cGridPane hgap\u003d\"20\" vgap\u003d\"20\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"dosageHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Dosage\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"dosage\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dosage\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.rowIndex\u003d\"1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"frequencyHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Frequency\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"frequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$frequency\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.rowIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"totalStockHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Total Stock\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"totalStock\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$totalStock\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"startDateHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Start Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"startDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$startDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"endDateHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"End Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"endDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$endDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"Header\" styleClass\u003d\"cell_small_header\" text\u003d\"Expiry Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"expiryDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$expiryDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"noteHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Note\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":38,"RoeReRe":39}},{"path":"src/main/resources/view/PrescriptionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cListView fx:id\u003d\"prescriptionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":1,"-":7}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"modern-box-pane\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" \u003cTextArea","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"resultDisplay\"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" editable\u003d\"false\"","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"result-display\"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" \u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" \u003c/TextArea\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"RoeReRe":12,"-":7}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonCompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.storage.JsonPrescriptionListStorage;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" new JsonPrescriptionListStorage(temporaryFolder.resolve(\"prescriptionList.json\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(temporaryFolder.resolve(\"completedPrescriptionList.json\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" StorageManager storage \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY_LIST, model);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" public void getFilteredPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPrescriptionList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" model.getPrescriptionList(), model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" * Tests the LogicPrescription component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" * @param expectedMessage the message expected inside exception thrown by the LogicPrescription component","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" // Inject LogicManagerPrescription with a PrescriptionListStorage that throws the IOException e when saving","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(prefPath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath)","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(prefPath);","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" StorageManager storage \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"RoeReRe"},"content":" // Triggers the savePrescriptionList method by executing an add command","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"RoeReRe"},"content":" + NAME_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"RoeReRe"},"content":" + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" + FREQUENCY_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"RoeReRe"},"content":" + START_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"RoeReRe"},"content":" + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"RoeReRe"},"content":" + EXPIRY_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"RoeReRe"},"content":" + STOCK_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"RoeReRe"},"content":" + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"RoeReRe"},"content":" Prescription expectedPrescription \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" expectedModel.addPrescription(expectedPrescription);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":26,"RoeReRe":31,"-":139}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_newPrescription_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().withName(\"Methadone\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel.addPrescription(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new AddCommand(validPrescription), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPrescription)),","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription personInList \u003d model.getPrescriptionList().getPrescriptionList().get(0);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ChongWeiJie29":13,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" public void constructor_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_prescriptionAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStubAcceptingPrescriptionAdded modelStub \u003d new ModelStubAcceptingPrescriptionAdded();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" CommandResult commandResult \u003d new AddCommand(validPrescription).execute(modelStub);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPrescription)),","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(Arrays.asList(validPrescription), modelStub.prescriptionsAdded);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_duplicatePrescription_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand addCommand \u003d new AddCommand(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStub modelStub \u003d new ModelStubWithPrescription(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_DUPLICATE_PRESCRIPTION, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription alice \u003d new PrescriptionBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription bob \u003d new PrescriptionBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand addCommand \u003d new AddCommand(ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ASPIRIN + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionList(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" public void deletePrescription(Prescription target) {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getPrescriptionByName(Name prescriptionName) {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" public void addCompletedPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionList(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-23"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasCompletedPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" public void deleteCompletedPrescription(Prescription target) {","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":205,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":206,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":207,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":208,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":209,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":210,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":211,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":213,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":214,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getCompletedPrescriptionByName(Name prescriptionName) {","lastModifiedDate":"2023-10-23"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-23"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":218,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":" * A Model stub that contains a single prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" private class ModelStubWithPrescription extends ModelStub {","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"ChongWeiJie29"},"content":" private final Prescription prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStubWithPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescription \u003d prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":236,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"ChongWeiJie29"},"content":" return this.prescription.isSamePrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":243,"author":{"gitId":"ChongWeiJie29"},"content":" * A Model stub that always accept the prescription being added.","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":245,"author":{"gitId":"ChongWeiJie29"},"content":" private class ModelStubAcceptingPrescriptionAdded extends ModelStub {","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"ChongWeiJie29"},"content":" final ArrayList\u003cPrescription\u003e prescriptionsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":249,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionsAdded.stream().anyMatch(prescription::isSamePrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionsAdded.add(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":261,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"ChongWeiJie29"},"content":" return new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"ChongWeiJie29":105,"-":161}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NAME_ASPIRIN \u003d \"Aspirin\";","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NAME_PROPRANOLOL \u003d \"Propranolol\";","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_DOSAGE_ASPIRIN \u003d \"1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_DOSAGE_PROPRANOLOL \u003d \"4\";","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_FREQUENCY_ASPIRIN \u003d \"Daily\";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_FREQUENCY_PROPRANOLOL \u003d \"Weekly\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_START_DATE_ASPIRIN \u003d \"01/10/2023\";","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_START_DATE_PROPRANOLOL \u003d \"01/08/2023\";","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_END_DATE_ASPIRIN \u003d \"23/02/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_END_DATE_PROPRANOLOL \u003d \"20/12/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_EXPIRY_DATE_ASPIRIN \u003d \"12/12/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_EXPIRY_DATE_PROPRANOLOL \u003d \"22/07/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_STOCK_ASPIRIN \u003d \"100\";","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_CONSUMPTION_ASPIRIN \u003d \"1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_CONSUMPTION_PROPRANOLOL \u003d \"2\";","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_STOCK_PROPRANOLOL \u003d \"500\";","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_NOTE_ASPIRIN \u003d \"Take before food\";","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NOTE_PROPRANOLOL \u003d \"Take after food\";","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NAME_DESC_ASPIRIN \u003d \" \" + PREFIX_NAME + VALID_NAME_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NAME_DESC_PROPRANOLOL \u003d \" \" + PREFIX_NAME + VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String DOSAGE_DESC_ASPIRIN \u003d \" \" + PREFIX_DOSAGE + VALID_DOSAGE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String DOSAGE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_DOSAGE + VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String FREQUENCY_DESC_ASPIRIN \u003d \" \" + PREFIX_FREQUENCY + VALID_FREQUENCY_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String FREQUENCY_DESC_PROPRANOLOL \u003d \" \" + PREFIX_FREQUENCY + VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String START_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_START_DATE + VALID_START_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String START_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_START_DATE + VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String END_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_END_DATE + VALID_END_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String END_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_END_DATE + VALID_END_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String EXPIRY_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_EXPIRY_DATE + VALID_EXPIRY_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String EXPIRY_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_EXPIRY_DATE + VALID_EXPIRY_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String STOCK_DESC_ASPIRIN \u003d \" \" + PREFIX_TOTAL_STOCK + VALID_STOCK_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String STOCK_DESC_PROPRANOLOL \u003d \" \" + PREFIX_TOTAL_STOCK + VALID_STOCK_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" public static final String CONSUMPTION_COUNT_DESC_ASPIRIN \u003d \" \" + PREFIX_CONSUMPTION + VALID_CONSUMPTION_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" public static final String CONSUMPTION_COUNT_DESC_PROPRANOLOL \u003d \" \" + PREFIX_CONSUMPTION","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" + VALID_CONSUMPTION_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NOTE_DESC_ASPIRIN \u003d \" \" + PREFIX_NOTE + VALID_NOTE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NOTE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_NOTE + VALID_NOTE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"@sp!r!n\"; // non-alphanumeric not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_DOSAGE_DESC \u003d \" \" + PREFIX_DOSAGE + \"a\"; // alphabets not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_FREQUENCY_DESC \u003d \" \" + PREFIX_FREQUENCY + \"Forever\"; // invalid value","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_START_DATE_DESC \u003d \" \" + PREFIX_START_DATE + \"1/1/2023\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_END_DATE_DESC \u003d \" \" + PREFIX_END_DATE + \"1/2/24\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_EXPIRY_DATE_DESC \u003d \" \" + PREFIX_EXPIRY_DATE + \"2024/1/1\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_STOCK_DESC \u003d \" \" + PREFIX_TOTAL_STOCK + \"a\"; // alphabets not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_NOTE_DESC \u003d \" \" + PREFIX_NOTE + \"@invalid note\"; // empty string not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" public static final EditCommand.EditPrescriptionDescriptor DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" public static final EditCommand.EditPrescriptionDescriptor DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":" DESC_ASPIRIN \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_ASPIRIN).withFrequency(VALID_FREQUENCY_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_ASPIRIN).withEndDate(VALID_END_DATE_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).withTotalStock(VALID_STOCK_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" DESC_PROPRANOLOL \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_PROPRANOLOL).withEndDate(VALID_END_DATE_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_PROPRANOLOL).withTotalStock(VALID_STOCK_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_PROPRANOLOL).withNote(VALID_NOTE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model,","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" * CommandResult, Model)}","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" * - the prescription list, filtered prescription list and selected prescription in {@code actualModel}","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" * remain unchanged","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList expectedPrescriptionList \u003d new PrescriptionList(actualModel.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" List\u003cPrescription\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" // assertEquals(expectedPrescriptionList, actualModel.getPrescriptionList());","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" // assertEquals(expectedFilteredList, actualModel.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates {@code model}\u0027s filtered list to show only the prescription at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code model}\u0027s prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" public static void showPrescriptionAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"ChongWeiJie29"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d model.getFilteredPrescriptionList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" final String[] splitName \u003d prescription.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" model.updateFilteredPrescriptionList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(1, model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"shyanyong":28,"ChongWeiJie29":71,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_DELETE_PRESCRIPTION_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" * {@code DeletePrescriptionCommand}.","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" @BeforeEach","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" public void setUp() {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(),","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" getTypicalPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.format(prescriptionToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":" assertCommandSuccess(deletePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"TeeRenJing"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size() + 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"TeeRenJing"},"content":" assertCommandFailure(deletePrescriptionCommand, model,","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"TeeRenJing"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.format(prescriptionToDelete));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" showNoPrescription(expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":" assertCommandSuccess(deletePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"TeeRenJing"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"TeeRenJing"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getPrescriptionList().getPrescriptionList().size());","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"TeeRenJing"},"content":" assertCommandFailure(deletePrescriptionCommand, model,","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteFirstPrescriptionCommand \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteSecondPrescriptionCommand \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_SECOND_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(deleteFirstPrescriptionCommand.equals(deleteFirstPrescriptionCommand));","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteFirstPrescriptionCommandCopy \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(deleteFirstPrescriptionCommand.equals(deleteFirstPrescriptionCommandCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(deleteSecondPrescriptionCommand));","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{toDelete\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(expected, deletePrescriptionCommand.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" private void showNoPrescription(Model model) {","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"TeeRenJing"},"content":" model.updateFilteredPrescriptionList(p -\u003e false);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":37,"ChongWeiJie29":27,"-":73}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ASPIRIN;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder(editedPrescription).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(model.getFilteredPrescriptionList().get(0), editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" Index indexLastPrescription \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" Prescription lastPrescription \u003d model.getFilteredPrescriptionList().get(indexLastPrescription.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" PrescriptionBuilder prescriptionInList \u003d new PrescriptionBuilder(lastPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d prescriptionInList.withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" .withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPrescription, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(lastPrescription, editedPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, new EditPrescriptionDescriptor());","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionInFilteredList \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d new PrescriptionBuilder(prescriptionInFilteredList)","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" .withName(\"Paracetamol\").build();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder().withName(\"Paracetamol\").build());","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(model.getFilteredPrescriptionList().get(0), editedPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" public void execute_duplicatePrescriptionUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" Prescription firstPrescription \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder(firstPrescription).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PRESCRIPTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" // edit prescription in filtered list into a duplicate in prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionInList \u003d model.getPrescriptionList().getPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_SECOND_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder(prescriptionInList).build());","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":" * but smaller than size of prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"shyanyong"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"shyanyong"},"content":" // ensures that outOfBoundIndex is still in bounds of prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"shyanyong"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getPrescriptionList().getPrescriptionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL).build());","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"shyanyong"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, DESC_ASPIRIN);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new ListCommand()));","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PRESCRIPTION, DESC_ASPIRIN)));","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PRESCRIPTION, DESC_PROPRANOLOL)));","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPrescriptionDescriptor\u003d\"","lastModifiedDate":"2023-10-22"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" + editPrescriptionDescriptor + \"}\";","lastModifiedDate":"2023-10-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":80,"ChongWeiJie29":9,"-":101}},{"path":"src/test/java/seedu/address/logic/commands/EditPrescriptionDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ASPIRIN;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CONSUMPTION_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_END_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EXPIRY_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STOCK_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"public class EditPrescriptionDescriptorTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptorWithSameValues \u003d new EditPrescriptionDescriptor(DESC_ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" assertTrue(DESC_ASPIRIN.equals(descriptorWithSameValues));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" assertTrue(DESC_ASPIRIN.equals(DESC_ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(DESC_PROPRANOLOL));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"shyanyong"},"content":" // different dosage -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" // different frequency -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" .withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" // different start date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" // different end date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" .withEndDate(VALID_END_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" // different expiry date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" // different total stock -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" .withTotalStock(VALID_STOCK_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" //different consumption count -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" // different note -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" .withNote(VALID_NOTE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":86}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ZOMIG;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" private Model model;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" @BeforeEach","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" public void setUp() {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" public void execute_zeroKeywords_noPrescriptionFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"TeeRenJing"},"content":" public void execute_multipleKeywords_multiplePrescriptionsFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" // \"Zolmitriptan Rapimelt\" is the name for ZOMIG","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Aspirin Propranolol Zolmitriptan Rapimelt\");","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(Arrays.asList(ASPIRIN, PROPRANOLOL, ZOMIG), model.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":24,"ChongWeiJie29":3,"-":72}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Contains integration tests (interaction with the seedu.address.model.ModelPrescription)","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * and unit tests for ListPrescriptionCommand.","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":13,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/ListTodayCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsTodayPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" @BeforeEach","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" public void setUp() {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" public void execute_validDateWithMedications_listTodaySuccess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_noMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_validWeeklyMedicationsForToday_listTodaySucess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_invalidWeeklyMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(6);","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_validMonthlyMedicationsForToday_listTodaySucess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Monthly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_invalidMonthlyMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(29);","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Monthly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"jingyu987":4,"shyanyong":106,"ChongWeiJie29":34}},{"path":"src/test/java/seedu/address/logic/commands/TakeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.TakeCommand.MESSAGE_INSUFFICIENT_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @BeforeEach","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void setUp() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public void execute_validDosesToTake_success() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d new PrescriptionBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" .build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" prescriptionList.addPrescription(prescriptionToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Model model \u003d new ModelManager(prescriptionList, completedPrescriptionList, new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToTake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d 1; //Valid number of doses","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d String.format(TakeCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" Prescription expectedPrescription \u003d expectedModel.getPrescriptionByName(prescriptionToTake.getName());","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" expectedPrescription.getTotalStock().get().decrementCount(dosesToTake);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getConsumptionCount().incrementCount(dosesToTake);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" expectedModel.updateFilteredPrescriptionList(new SameNamePredicate(prescriptionToTake.getName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(expectedModel.getPrescriptionByName(prescriptionToTake.getName())","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" assertCommandSuccess(takePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock - dosesToTake, newStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" public void execute_insufficientStock_throwsCommandException() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToTake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d initialStock + 1; // More than available stock","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(takePrescriptionCommand, model, MESSAGE_INSUFFICIENT_STOCK);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" // Ensure that the stock is not modified","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(model.getPrescriptionByName(prescriptionToTake.getName())","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock, newStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" public void execute_invalidPrescription_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d new PrescriptionBuilder().withName(\"Invalid Name\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d 1; // A valid number of doses","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandFailure(takePrescriptionCommand, model, TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" Name name1 \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" Name name2 \u003d new Name(\"Panadol\");","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" int doses1 \u003d 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" int doses2 \u003d 1;","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command1 \u003d new TakeCommand(name1, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command2 \u003d new TakeCommand(name1, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command3 \u003d new TakeCommand(name2, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command4 \u003d new TakeCommand(name1, doses2);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" // Same object","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command1));","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" // Test for equality","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command2)); // Same name and doses","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" assertTrue(command2.equals(command1)); // Test for symmetry","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command3)); // Different names","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command4)); // Different doses","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" // Test for non-equality","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(null)); // Null object","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":94,"ChongWeiJie29":27}},{"path":"src/test/java/seedu/address/logic/commands/UntakeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.UntakeCommand.MESSAGE_INSUFFICIENT_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" private Model model;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @BeforeEach","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void setUp() {","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public void execute_validDosesToUntake_success() throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d new PrescriptionBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"100\")","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" .build();","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" prescriptionList.addPrescription(prescriptionToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Model model \u003d new ModelManager(prescriptionList, completedPrescriptionList, new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToUntake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d 1; //Valid number of doses","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" String expectedMessage \u003d String.format(UntakeCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName());","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" Prescription expectedPrescription \u003d expectedModel.getPrescriptionByName(prescriptionToUntake.getName());","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getTotalStock().get().incrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getConsumptionCount().decrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" expectedModel.updateFilteredPrescriptionList(new SameNamePredicate(prescriptionToUntake.getName()));","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(expectedModel.getPrescriptionByName(prescriptionToUntake.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" assertCommandSuccess(untakePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock + dosesToUntake, newStock);","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" public void execute_insufficientConsumption_throwsCommandException() throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" int initialConsumption \u003d Integer.parseInt(prescriptionToUntake.getConsumptionCount().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d initialConsumption + 1; // More than currently consumed","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(untakePrescriptionCommand, model, MESSAGE_INSUFFICIENT_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" // Ensure that the consumption is not modified","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" int newConsumption \u003d Integer.parseInt(model.getPrescriptionByName(prescriptionToUntake.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" .getConsumptionCount().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialConsumption, newConsumption);","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" public void execute_invalidPrescription_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d new PrescriptionBuilder().withName(\"Invalid Name\").build();","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d 1; // A valid number of doses","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(untakePrescriptionCommand, model, TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" Name name1 \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" Name name2 \u003d new Name(\"Panadol\");","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" int doses1 \u003d 2;","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" int doses2 \u003d 1;","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command1 \u003d new UntakeCommand(name1, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command2 \u003d new UntakeCommand(name1, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command3 \u003d new UntakeCommand(name2, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command4 \u003d new UntakeCommand(name1, doses2);","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" // Same object","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command1));","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" // Test for equality","lastModifiedDate":"2023-10-22"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command2)); // Same name and doses","lastModifiedDate":"2023-10-22"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" assertTrue(command2.equals(command1)); // Test for symmetry","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command3)); // Different names","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command4)); // Different doses","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" // Test for non-equality","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(null)); // Null object","lastModifiedDate":"2023-10-22"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":117,"ChongWeiJie29":4}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FREQUENCY_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_START_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription expectedPrescription \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_ASPIRIN + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + NOTE_DESC_ASPIRIN,","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" new AddCommand(expectedPrescription));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" // Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" // assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" // new AddCommand(expectedPerson));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + NOTE_DESC_ASPIRIN,","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + DOSAGE_DESC_PROPRANOLOL + FREQUENCY_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" + START_DATE_DESC_PROPRANOLOL + END_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_PROPRANOLOL + STOCK_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" + NOTE_DESC_PROPRANOLOL, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + INVALID_DOSAGE_DESC + FREQUENCY_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" + START_DATE_DESC_PROPRANOLOL + END_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_PROPRANOLOL + STOCK_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" + NOTE_DESC_PROPRANOLOL, Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid frequency","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" + INVALID_FREQUENCY_DESC + START_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" + END_DATE_DESC_PROPRANOLOL + EXPIRY_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" + STOCK_DESC_PROPRANOLOL + NOTE_DESC_PROPRANOLOL,","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid start date","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_PROPRANOLOL + INVALID_START_DATE_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" + END_DATE_DESC_PROPRANOLOL + EXPIRY_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" + STOCK_DESC_PROPRANOLOL + NOTE_DESC_PROPRANOLOL,","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"shyanyong":7,"ChongWeiJie29":55,"-":40}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentMultimapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"public class ArgumentMultimapTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" public void testParseExceptionWithDuplicatePrefixes() {","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" ArgumentMultimap argumentMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" Prefix prefix1 \u003d new Prefix(\"p1\");","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" Prefix prefix2 \u003d new Prefix(\"p2\");","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":" Prefix prefix3 \u003d new Prefix(\"p3\");","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix1, \"value1\");","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix2, \"value2\");","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix1, \"value3\");","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" Prefix[] duplicatedPrefixes \u003d { prefix1 };","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" ParseException exception \u003d assertThrows(ParseException.class, () -\u003e {","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.verifyNoDuplicatePrefixesFor(prefix1, prefix2, prefix3);","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" });","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" String expectedErrorMessage \u003d Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes);","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" assertEquals(expectedErrorMessage, exception.getMessage());","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"shyanyong":32}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"ChongWeiJie29":2,"-":38}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" //write some test cases for the parser","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public void parse_zeroIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" public void parse_negativeIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" public void parse_nonNumberIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"abc\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" public void parse_float_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1.0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"TeeRenJing"},"content":" public void parse_fraction_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1/2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"TeeRenJing"},"content":" public void parse_leadingZeroes_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"001\", new DeleteCommand(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"TeeRenJing"},"content":" public void parse_multipleNumbers_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1 2 3\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"TeeRenJing"},"content":" // No index specified","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":" // No index specified","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"TeeRenJing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"TeeRenJing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":70,"ChongWeiJie29":7,"-":19}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CONSUMPTION_COUNT_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CONSUMPTION_COUNT_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_END_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EXPIRY_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FREQUENCY_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NOTE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_START_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STOCK_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CONSUMPTION_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_END_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EXPIRY_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STOCK_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" String.format(EditCommand.MESSAGE_USAGE, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" //no field specified","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"-5\" + VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"0\" + VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1 some random string\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1 i/ string\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_DOSAGE_DESC, Dosage.MESSAGE_CONSTRAINTS); // invalid dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_FREQUENCY_DESC, Frequency.MESSAGE_CONSTRAINTS); // invalid frequency","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_START_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid start date","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_END_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid end date","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_EXPIRY_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid expiry date","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_STOCK_DESC, Stock.MESSAGE_CONSTRAINTS); // invalid stock","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NOTE_DESC, Note.MESSAGE_CONSTRAINTS); // invalid note","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" //invalid name followed by valid dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + \" \" + VALID_NAME_ASPIRIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" //multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_DOSAGE_DESC + INVALID_FREQUENCY_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" + INVALID_START_DATE_DESC + INVALID_END_DATE_DESC + INVALID_EXPIRY_DATE_DESC + INVALID_STOCK_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" + INVALID_NOTE_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_ASPIRIN + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + CONSUMPTION_COUNT_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":" + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":123,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_ASPIRIN).withEndDate(VALID_END_DATE_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).withTotalStock(VALID_STOCK_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":133,"author":{"gitId":"shyanyong"},"content":" public void parse_someFieldSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_PROPRANOLOL + FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2023-10-22"},{"lineNumber":147,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_THIRD_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":149,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":150,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"shyanyong"},"content":" // dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withDosage(VALID_DOSAGE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":160,"author":{"gitId":"shyanyong"},"content":" // frequency","lastModifiedDate":"2023-10-22"},{"lineNumber":161,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":162,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withFrequency(VALID_FREQUENCY_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":166,"author":{"gitId":"shyanyong"},"content":" // start date","lastModifiedDate":"2023-10-22"},{"lineNumber":167,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":168,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withStartDate(VALID_START_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":172,"author":{"gitId":"shyanyong"},"content":" // end date","lastModifiedDate":"2023-10-22"},{"lineNumber":173,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":174,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withEndDate(VALID_END_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":" // expiry date","lastModifiedDate":"2023-10-22"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":180,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" // stock","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withTotalStock(VALID_STOCK_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":188,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":190,"author":{"gitId":"shyanyong"},"content":" // consumption count","lastModifiedDate":"2023-10-22"},{"lineNumber":191,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + CONSUMPTION_COUNT_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":192,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":193,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":194,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":196,"author":{"gitId":"shyanyong"},"content":" // note","lastModifiedDate":"2023-10-22"},{"lineNumber":197,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":198,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":199,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":200,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":201,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":203,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":204,"author":{"gitId":"shyanyong"},"content":" public void parse_multiRepeatedFields_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":205,"author":{"gitId":"shyanyong"},"content":" // More extensive testing of duplicate parameter detection is done in","lastModifiedDate":"2023-10-22"},{"lineNumber":206,"author":{"gitId":"shyanyong"},"content":" // AddCommandParserTest#parse_multiRepeatedFields_failure()","lastModifiedDate":"2023-10-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":208,"author":{"gitId":"shyanyong"},"content":" //valid followed by invalid","lastModifiedDate":"2023-10-22"},{"lineNumber":209,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":210,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_DOSAGE_DESC + DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":212,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DOSAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":214,"author":{"gitId":"shyanyong"},"content":" //invalid follwed by valid","lastModifiedDate":"2023-10-22"},{"lineNumber":215,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_PROPRANOLOL + INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":217,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DOSAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":219,"author":{"gitId":"shyanyong"},"content":" //multiple valid fields repeated","lastModifiedDate":"2023-10-22"},{"lineNumber":220,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_ASPIRIN + FREQUENCY_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":221,"author":{"gitId":"shyanyong"},"content":" + CONSUMPTION_COUNT_DESC_ASPIRIN + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":222,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_PROPRANOLOL + CONSUMPTION_COUNT_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":223,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-22"},{"lineNumber":224,"author":{"gitId":"shyanyong"},"content":" PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_CONSUMPTION));","lastModifiedDate":"2023-10-22"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"shyanyong":142,"-":84}},{"path":"src/test/java/seedu/address/logic/parser/ExitCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class ExitCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" private ExitCommandParser parser \u003d new ExitCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"\", new ExitCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public void parse_preambleWhitespace_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \" \", new ExitCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":34}},{"path":"src/test/java/seedu/address/logic/parser/HelpCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class HelpCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" private HelpCommandParser parser \u003d new HelpCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"\", new HelpCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public void parse_preambleWhitespace_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \" \", new HelpCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":34}},{"path":"src/test/java/seedu/address/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \"\", new ListCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_preambleWhitespace_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \" \", new ListCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":34}},{"path":"src/test/java/seedu/address/logic/parser/ListTodayCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" private ListTodayCommandParser parser \u003d new ListTodayCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \"\", new ListTodayCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_invalidInput_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"invalid input\",","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":40}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NAME \u003d \"@sp!r!n\";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_DOSAGE \u003d \"abc\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_FREQUENCY \u003d \"Yearly\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_START_DATE \u003d \"1/1/2023\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_END_DATE \u003d \"1/1/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_EXPIRY_DATE \u003d \"1/1/2025\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_TOTAL_STOCK \u003d \"a\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NOTE \u003d \"***\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NAME \u003d \"Aspirin\";","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_DOSAGE \u003d \"1\";","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_FREQUENCY \u003d \"Daily\";","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_START_DATE \u003d \"01/10/2023\";","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_END_DATE \u003d \"23/02/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_EXPIRY_DATE \u003d \"12/12/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_TOTAL_STOCK \u003d \"100\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NOTE \u003d \"Take after food\";","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(INDEX_FIRST_PRESCRIPTION, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(INDEX_FIRST_PRESCRIPTION, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDosage((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDosage(INVALID_DOSAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_validValueWithoutWhitespace_returnsDosage() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" Dosage expectedDosage \u003d new Dosage(VALID_DOSAGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedDosage, ParserUtil.parseDosage(VALID_DOSAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_validValueWithWhitespace_returnsTrimmedDosage() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" String dosageWithWhitespace \u003d WHITESPACE + VALID_DOSAGE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" Dosage expectedDosage \u003d new Dosage(VALID_DOSAGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedDosage, ParserUtil.parseDosage(dosageWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFrequency((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFrequency(INVALID_FREQUENCY));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_validValueWithoutWhitespace_returnsFrequency() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" Frequency expectedFrequency \u003d new Frequency(VALID_FREQUENCY);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedFrequency, ParserUtil.parseFrequency(VALID_FREQUENCY));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_validValueWithWhitespace_returnsTrimmedFrequency() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" String frequencyWithWhitespace \u003d WHITESPACE + VALID_FREQUENCY + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" Frequency expectedFrequency \u003d new Frequency(VALID_FREQUENCY);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedFrequency, ParserUtil.parseFrequency(frequencyWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStartDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStartDate(INVALID_START_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_validValueWithoutWhitespace_returnsStartDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"RoeReRe"},"content":" Date expectedStartDate \u003d new Date(VALID_START_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedStartDate, ParserUtil.parseStartDate(VALID_START_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_validValueWithWhitespace_returnsTrimmedStartDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"RoeReRe"},"content":" String startDateWithWhitespace \u003d WHITESPACE + VALID_START_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"RoeReRe"},"content":" Date expectedStartDate \u003d new Date(VALID_START_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedStartDate, ParserUtil.parseStartDate(startDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEndDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEndDate(INVALID_END_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_validValueWithoutWhitespace_returnsEndDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" Date expectedEndDate \u003d new Date(VALID_END_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedEndDate, ParserUtil.parseEndDate(VALID_END_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_validValueWithWhitespace_returnsTrimmedEndDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" String endDateWithWhitespace \u003d WHITESPACE + VALID_END_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" Date expectedEndDate \u003d new Date(VALID_END_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedEndDate, ParserUtil.parseEndDate(endDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseExpiryDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseExpiryDate(INVALID_EXPIRY_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_validValueWithoutWhitespace_returnsExpiryDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"RoeReRe"},"content":" Date expectedExpiryDate \u003d new Date(VALID_EXPIRY_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedExpiryDate, ParserUtil.parseExpiryDate(VALID_EXPIRY_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_validValueWithWhitespace_returnsTrimmedExpiryDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":" String expiryDateWithWhitespace \u003d WHITESPACE + VALID_EXPIRY_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" Date expectedExpiryDate \u003d new Date(VALID_EXPIRY_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedExpiryDate, ParserUtil.parseExpiryDate(expiryDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTotalStock((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTotalStock(INVALID_TOTAL_STOCK));","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_validValueWithoutWhitespace_returnsTotalStock() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"RoeReRe"},"content":" Stock expectedTotalStock \u003d new Stock(VALID_TOTAL_STOCK);","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedTotalStock, ParserUtil.parseTotalStock(VALID_TOTAL_STOCK));","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_validValueWithWhitespace_returnsTrimmedTotalStock() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"RoeReRe"},"content":" String totalStockWithWhitespace \u003d WHITESPACE + VALID_TOTAL_STOCK + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"RoeReRe"},"content":" Stock expectedTotalStock \u003d new Stock(VALID_TOTAL_STOCK);","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedTotalStock, ParserUtil.parseTotalStock(totalStockWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNote((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNote(INVALID_NOTE));","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_validValueWithoutWhitespace_returnsNote() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"RoeReRe"},"content":" Note expectedNote \u003d new Note(VALID_NOTE);","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedNote, ParserUtil.parseNote(VALID_NOTE));","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":237,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_validValueWithWhitespace_returnsTrimmedNote() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":238,"author":{"gitId":"RoeReRe"},"content":" String noteWithWhitespace \u003d WHITESPACE + VALID_NOTE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":239,"author":{"gitId":"RoeReRe"},"content":" Note expectedNote \u003d new Note(VALID_NOTE);","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedNote, ParserUtil.parseNote(noteWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":246,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtilPrescription.parseTag(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":249,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":251,"author":{"gitId":"RoeReRe"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtilPrescription.parseTag(INVALID_TAG));","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":256,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":257,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedTag, ParserUtilPrescription.parseTag(VALID_TAG_1));","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":261,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedTag, ParserUtilPrescription.parseTag(tagWithWhitespace));","lastModifiedDate":"2023-10-16"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtilPrescription.parseTags(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":" assertThrows(ParseException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"RoeReRe"},"content":" () -\u003e ParserUtilPrescription.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ParserUtilPrescription.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":284,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"RoeReRe"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtilPrescription.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":30,"RoeReRe":132,"-":129}},{"path":"src/test/java/seedu/address/logic/parser/PrescriptionListParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListParserTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private final PrescriptionListParser parser \u003d new PrescriptionListParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" PrescriptionUtil.getAddPrescriptionCommand(prescription));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(new AddCommand(prescription), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" public void parseCommand_listToday() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" assertTrue(parser.parseCommand(ListTodayCommand.COMMAND_WORD) instanceof ListTodayCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(prescription).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PrescriptionUtil.DescriptorDetails(descriptor));","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"shyanyong":5,"ChongWeiJie29":2,"RoeReRe":14,"-":74}},{"path":"src/test/java/seedu/address/logic/parser/TakeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private TakeCommandParser parser \u003d new TakeCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" // Valid arguments with a valid name and dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand expectedCommand \u003d new TakeCommand(new Name(\"Aspirin\"), 2);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" assertParseSuccess(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\", expectedCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void parse_notIntegerDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"abc\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" public void parse_negativeIntegerDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"-1\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" // Empty input","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" // Whitespace input","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" // Missing Name","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_CONSUMPTION + \"2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public void parse_missingDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" // Missing dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":67,"ChongWeiJie29":15}},{"path":"src/test/java/seedu/address/logic/parser/UntakeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandParserTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" private UntakeCommandParser parser \u003d new UntakeCommandParser();","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" // Valid arguments with a valid name and dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" UntakeCommand expectedCommand \u003d new UntakeCommand(new Name(\"Aspirin\"), 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" assertParseSuccess(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\", expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void parse_notIntegerDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"abc\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" public void parse_negativeIntegerDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"-1\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" // Empty input","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" // Whitespace input","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" // Missing Name","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_CONSUMPTION + \"2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public void parse_missingDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" // Missing dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" // Random values","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" // Random prefixes","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":82}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionListBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(new PrescriptionList(), new PrescriptionList(modelManager.getPrescriptionList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"prescription/list/file/path\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"new/prescription/list/file/path\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPrescriptionListFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_validPath_setsPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" Path path \u003d Paths.get(\"prescription/list/file/path\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.setPrescriptionListFilePath(path);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(path, modelManager.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPrescription(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_prescriptionNotInPrescriptionList_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_prescriptionInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" assertTrue(modelManager.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" public void getFilteredPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPrescriptionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionListBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" .withPrescription(ASPIRIN).withPrescription(PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionListBuilder().build();","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList differentPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList differentCompletedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager \u003d new ModelManager(prescriptionList, completedPrescriptionList, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(prescriptionList, completedPrescriptionList, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(differentPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" differentCompletedPrescriptionList, userPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" String[] keywords \u003d ASPIRIN.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.updateFilteredPrescriptionList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(prescriptionList, completedPrescriptionList, userPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" differentUserPrefs.setPrescriptionListFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(prescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList, differentUserPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ChongWeiJie29":39,"-":98}},{"path":"src/test/java/seedu/address/model/PrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" private final PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" public void constructor() {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertEquals(Collections.emptyList(), prescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e prescriptionList.resetData(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" public void resetData_withValidReadOnlyPrescriptionList_replacesData() {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList newData \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.resetData(newData);","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" assertEquals(newData, prescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" public void resetData_withDuplicatePrescriptions_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // Two prescription with the same identity fields","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL)","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e newPrescriptions \u003d Arrays.asList(ASPIRIN, editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" PrescriptionListStub newData \u003d new PrescriptionListStub(newPrescriptions);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e prescriptionList.resetData(newData));","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e prescriptionList.hasPrescription(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionNotInPrescriptionList_returnsFalse() {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" assertFalse(prescriptionList.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" assertTrue(prescriptionList.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionWithSameIdentityFieldsInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" assertTrue(prescriptionList.hasPrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" public void getPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e prescriptionList.getPrescriptionList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" String expected \u003d PrescriptionList.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" + \"{prescriptions\u003d\" + prescriptionList.getPrescriptionList() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expected, prescriptionList.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" * A stub ReadOnlyPrescriptionList whose prescriptions list can violate interface constraints.","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" private static class PrescriptionListStub implements ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" private final ObservableList\u003cPrescription\u003e prescriptions \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" PrescriptionListStub(Collection\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" this.prescriptions.setAll(prescriptions);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" public ObservableList\u003cPrescription\u003e getPrescriptionList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" return prescriptions;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":106}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setPrescriptionListFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChongWeiJie29":2,"-":19}},{"path":"src/test/java/seedu/address/model/prescription/ConsumptionCountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"public class ConsumptionCountTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" assertThrows(NullPointerException.class, () -\u003e new ConsumptionCount(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public void constructor_invalidConsumptionCount_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" String invalidConsumptionCount \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(invalidConsumptionCount));","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" public void isValidConsumptionCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" // null consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" assertThrows(NullPointerException.class, () -\u003e ConsumptionCount.isValidConsumptionCount(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" // invalid consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"a\")); // alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" // valid consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"1\")); // single digit","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"12\")); // double digit","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"02\")); // trailing zero","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" public void incrementCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" // Test incrementing","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" consumptionCount.incrementCount(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"1\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" // Test incrementing with a larger number","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" consumptionCount.incrementCount(5);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"6\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" public void decrementCount() {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" // Test decrementing","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" consumptionCount.decrementCount(1);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"9\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" // Test decrementing with a larger number","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" consumptionCount.decrementCount(5);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"4\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" public void setConsumptionCount() {","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount1 \u003d new ConsumptionCount(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" // Test setIsCompleted","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" consumptionCount.setConsumptionCount(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" assertEquals(consumptionCount.getConsumptionCount(), consumptionCount1.getConsumptionCount());","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.equals(new ConsumptionCount(\"0\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.equals(consumptionCount));","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(new ConsumptionCount(\"1\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" // Add more test cases for equals as needed","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":99}},{"path":"src/test/java/seedu/address/model/prescription/DateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class DateTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Date(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Date(invalidDate));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidDate() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null date","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Date.isValidDate(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid date","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"1/01/2023\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"01/1/2023\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"01/01/23\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"2023/01/01\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" // valid date","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"01/01/2023\")); // day and month are single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"21/01/2023\")); // month is single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"01/12/2023\")); // day is single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"21/12/2023\")); // day and month are double digits","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" Date date \u003d new Date(\"01/01/2023\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" assertTrue(date.equals(new Date(\"01/01/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"02/01/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"01/02/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"01/01/2024\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"21/12/2024\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":65}},{"path":"src/test/java/seedu/address/model/prescription/DosageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class DosageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Dosage(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidDosage_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidDosage \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Dosage(invalidDosage));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidDosage() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Dosage.isValidDosage(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"a\")); // alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"1\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"12\")); // double digit","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"02\")); // trailing zero","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" Dosage dosage \u003d new Dosage(\"1\");","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertTrue(dosage.equals(new Dosage(\"1\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(dosage.equals(dosage));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(new Dosage(\"2\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":58}},{"path":"src/test/java/seedu/address/model/prescription/FrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class FrequencyTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Frequency(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidFrequency \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Frequency(invalidFrequency));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidFrequency() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Frequency.isValidFrequency(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Daily*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Daaily\")); // extra characters","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Weeekly\")); // extra characters","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Wkly\")); // not enough characters","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Yearly\")); // contains invalid values","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" // valid frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Daily\")); // Daily","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Weekly\")); // Weekly","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Monthly\")); // Month","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" Frequency frequency \u003d new Frequency(\"Daily\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" assertTrue(frequency.equals(new Frequency(\"Daily\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(frequency.equals(frequency));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(new Frequency(\"Weekly\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":62}},{"path":"src/test/java/seedu/address/model/prescription/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" Collections.singletonList(\"Aspirin\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"Propranolol\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"Propranolol\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Caffox Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"AsPIRin\", \"ProPRanOlOl\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Aspirin\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Caffox\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" // Keywords match dosage, frequency and start date, but does not match name","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"1\", \"Daily\", \"01/08/2023\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Propranolol\").withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\").withStartDate(\"01/08/2023\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":18,"-":68}},{"path":"src/test/java/seedu/address/model/prescription/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Name.isValidName(\"aspirin*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"ergotamine tartrate\")); // alphabets only","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"2nd aspirin\")); // alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"Aspirin\")); // with capital letters","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"Aspirin that is white in colour\")); // long names","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":6,"-":54}},{"path":"src/test/java/seedu/address/model/prescription/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class NoteTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Note(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidNote_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidNote \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Note(invalidNote));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidNote() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null note","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Note.isValidNote(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid note","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"aspirin*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid note","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"Drowsy\")); // alphabets only","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"12345\")); // numbers only","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"2 times after food\")); // alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"MAY cause drowsiness\")); // with capital letters","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"It can cause drowsiness so best to take at night\")); // long names","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" Note note \u003d new Note(\"Valid Note\");","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertTrue(note.equals(new Note(\"Valid Note\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" assertTrue(note.equals(note));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(new Note(\"Other Valid Note\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":60}},{"path":"src/test/java/seedu/address/model/prescription/PrescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e prescription.getTags().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public void isSamePrescription() {","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.isSamePrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.isSamePrescription(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // same name and start date, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(\"1\").withEndDate(\"01/01/2027\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.isSamePrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.isSamePrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" Prescription editedPropranolol \u003d new PrescriptionBuilder(PROPRANOLOL)","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" .withName(VALID_NAME_PROPRANOLOL.toLowerCase()).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertFalse(PROPRANOLOL.isSamePrescription(editedPropranolol));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_PROPRANOLOL + \" \";","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" editedPropranolol \u003d new PrescriptionBuilder(PROPRANOLOL).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" assertFalse(PROPRANOLOL.isSamePrescription(editedPropranolol));","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" Prescription aspirinCopy \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.equals(aspirinCopy));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.equals(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(5));","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(PROPRANOLOL));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" // different start date -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withStartDate(VALID_START_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" // editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" // assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" String expected \u003d Prescription.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" + \"{name\u003d\" + ASPIRIN.getName()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" + \", dosage\u003d\" + ASPIRIN.getDosage()","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" + \", frequency\u003d\" + ASPIRIN.getFrequency()","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" + \", startDate\u003d\" + ASPIRIN.getStartDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" + \", endDate\u003d\" + ASPIRIN.getEndDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" + \", expiryDate\u003d\" + ASPIRIN.getExpiryDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" + \", totalStock\u003d\" + ASPIRIN.getTotalStock()","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" + \", consumptionCount\u003d\" + ASPIRIN.getConsumptionCount()","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" + \", isCompleted\u003d\" + ASPIRIN.getIsCompleted()","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" + \", note\u003d\" + ASPIRIN.getNote() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expected, ASPIRIN.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":3,"RoeReRe":95}},{"path":"src/test/java/seedu/address/model/prescription/StockTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class StockTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Stock(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidStock_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidStock \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Stock(invalidStock));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidStock() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null stock","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Stock.isValidStock(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid stock","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"a\")); // alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid stock","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"1\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"12\")); // double digit","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"02\")); // trailing zero","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" Stock stock \u003d new Stock(\"100\");","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertTrue(stock.equals(new Stock(\"100\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(stock.equals(stock));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(new Stock(\"200\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":58}},{"path":"src/test/java/seedu/address/model/prescription/UniquePrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.PrescriptionNotFoundException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"public class UniquePrescriptionListTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private final UniquePrescriptionList uniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public void contains_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.contains(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(uniquePrescriptionList.contains(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionInList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(uniquePrescriptionList.contains(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" assertTrue(uniquePrescriptionList.contains(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" public void add_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.add(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" public void add_duplicatePrescription_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e uniquePrescriptionList.add(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_nullTargetPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.setPrescription(null, ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_nullEditedPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.setPrescription(ASPIRIN, null));","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_targetPrescriptionNotInList_throwsPrescriptionNotFoundException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" assertThrows(PrescriptionNotFoundException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionIsSamePrescription_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasSameIdentity_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasNonUniqueIdentity_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, PROPRANOLOL));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" public void remove_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.remove(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" public void remove_prescriptionDoesNotExist_throwsPrescriptionNotFoundException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" assertThrows(PrescriptionNotFoundException.class, () -\u003e uniquePrescriptionList.remove(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void remove_existingPrescription_removesPrescription() {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.remove(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_nullUniquePrescriptionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions((UniquePrescriptionList) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_uniquePrescriptionList_replacesOwnListWithProvidedUniquePrescriptionList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(expectedUniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions((List\u003cPrescription\u003e) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e prescriptionList \u003d Collections.singletonList(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(prescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_listWithDuplicatePrescriptions_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e listWithDuplicatePrescriptions \u003d Arrays.asList(ASPIRIN, ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(listWithDuplicatePrescriptions));","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"RoeReRe"},"content":" assertEquals(uniquePrescriptionList.asUnmodifiableObservableList().toString(),","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":177}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPrescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.storage.JsonAdaptedPrescription.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"public class JsonAdaptedPrescriptionTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NAME \u003d \"@spr!n\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_DOSAGE \u003d \"ABCD\";","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_FREQUENCY \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_START_DATE \u003d \"1/1/2023\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_END_DATE \u003d \"01/2/2024\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_EXPIRY_DATE \u003d \"2024/01/23\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_STOCK \u003d \"EFGH\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" private static final String INVALID_CONSUMPTION \u003d \"IJKL\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NOTE \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NAME \u003d ASPIRIN.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_DOSAGE \u003d ASPIRIN.getDosage().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_FREQUENCY \u003d ASPIRIN.getFrequency().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_START_DATE \u003d ASPIRIN.getStartDate().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_END_DATE \u003d ASPIRIN.getEndDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_EXPIRY_DATE \u003d ASPIRIN.getExpiryDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_STOCK \u003d ASPIRIN.getTotalStock().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private static final String VALID_CONSUMPTION \u003d ASPIRIN.getConsumptionCount().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_NOTE \u003d ASPIRIN.getNote().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" // private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d ASPIRIN.getTags().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // .collect(Collectors.toList());","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_validPrescriptionDetails_returnsPrescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(ASPIRIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertEquals(ASPIRIN, prescription.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" INVALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidDosage_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" INVALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Dosage.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullDosage_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Dosage.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidFrequency_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" INVALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Frequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullFrequency_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Frequency.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidStartDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" INVALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullStartDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidEndDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"RoeReRe"},"content":" INVALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullEndDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":213,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":214,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":222,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":223,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":224,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":226,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":228,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidExpiryDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"RoeReRe"},"content":" INVALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":248,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullExpiryDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":249,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":250,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":251,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":252,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":253,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":254,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":255,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":256,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":257,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":258,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":259,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":260,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":261,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":262,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":263,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":265,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":266,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidStock_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":268,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":269,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":271,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":" INVALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":275,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":278,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":279,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Stock.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":283,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":284,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullStock_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":285,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":286,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":287,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":288,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":289,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":290,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":291,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":292,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":293,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":294,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":295,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":296,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":297,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":298,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":299,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":300,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":301,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":302,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidNote_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":303,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":304,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":305,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":306,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":307,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":308,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":309,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":310,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":311,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":312,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":313,"author":{"gitId":"RoeReRe"},"content":" INVALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":314,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":315,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Note.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":316,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":317,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":318,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":319,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":320,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":321,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":322,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":323,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":324,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":325,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":326,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":327,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":328,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":329,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":330,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":331,"author":{"gitId":"ChongWeiJie29"},"content":" // null","lastModifiedDate":"2023-10-21"},{"lineNumber":332,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":333,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":334,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":335,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":336,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":337,"author":{"gitId":"RoeReRe"},"content":" // @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":338,"author":{"gitId":"RoeReRe"},"content":" // public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":339,"author":{"gitId":"RoeReRe"},"content":" // List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2023-10-15"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":" // invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2023-10-15"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":" // JsonAdaptedPrescription prescription \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":342,"author":{"gitId":"RoeReRe"},"content":" // new JsonAdaptedPrescription(VALID_NAME, VALID_DOSAGE, VALID_FREQUENCY, VALID_ADDRESS, invalidTags);","lastModifiedDate":"2023-10-15"},{"lineNumber":343,"author":{"gitId":"RoeReRe"},"content":" // assertThrows(IllegalValueException.class, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":344,"author":{"gitId":"RoeReRe"},"content":" // }","lastModifiedDate":"2023-10-15"},{"lineNumber":345,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":346,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":20,"ChongWeiJie29":125,"RoeReRe":201}},{"path":"src/test/java/seedu/address/storage/JsonPrescriptionListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.CAFFOX;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.IBUPROFEN;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.NAPROXEN;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"public class JsonPrescriptionListStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPrescriptionListStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e readPrescriptionList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private java.util.Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" return new JsonPrescriptionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" .readPrescriptionList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertFalse(readPrescriptionList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"notJsonFormatPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_invalidPrescriptionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"invalidPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_invalidAndValidPrescriptionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"invalidAndValidPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" public void readAndSavePrescriptionList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" Path filePath \u003d testFolder.resolve(\"TempPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList original \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage jsonPrescriptionListStorage \u003d new JsonPrescriptionListStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" ReadOnlyPrescriptionList readBack \u003d jsonPrescriptionListStorage.readPrescriptionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" original.addPrescription(IBUPROFEN);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" original.removePrescription(NAPROXEN);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" readBack \u003d jsonPrescriptionListStorage.readPrescriptionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" original.addPrescription(CAFFOX);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" readBack \u003d jsonPrescriptionListStorage.readPrescriptionList().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList_nullPrescriptionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e savePrescriptionList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" * Saves {@code prescriptionList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" private void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" new JsonPrescriptionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" .savePrescriptionList(prescriptionList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e savePrescriptionList(new PrescriptionList(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":111}},{"path":"src/test/java/seedu/address/storage/JsonSerializablePrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.TypicalPrescriptions;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"public class JsonSerializablePrescriptionListTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" \"JsonSerializablePrescriptionListTest\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final Path TYPICAL_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final Path INVALID_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final Path DUPLICATE_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_typicalPrescriptionFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList prescriptionListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList typicalPrescriptionList \u003d TypicalPrescriptions.getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertEquals(prescriptionListFromFile, typicalPrescriptionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidPrescriptionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_duplicatePrescription_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePrescriptionList.MESSAGE_DUPLICATE_PRESCRIPTION,","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":48}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder)","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" throws DataLoadingException {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"prescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":5,"-":118}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" getTempFilePath(\"pl\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" getTempFilePath(\"prefs\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(getTempFilePath(\"cpl\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" storageManager \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonUserPrefsStoragePrescription} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" * More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonUserPrefsStoragePrescriptionTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" public void prescriptionListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonPrescriptionListStorage} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonPrescriptionListStorageTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList original \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" storageManager.savePrescriptionList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" ReadOnlyPrescriptionList retrieved \u003d storageManager.readPrescriptionList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" public void getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" assertNotNull(storageManager.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":5,"RoeReRe":18,"-":51}},{"path":"src/test/java/seedu/address/testutil/EditPrescriptionDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" * A utility class to help with building EditPrescriptionDescriptor objects.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"public class EditPrescriptionDescriptorBuilder {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" private EditPrescriptionDescriptor descriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder(EditPrescriptionDescriptor descriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" this.descriptor \u003d new EditPrescriptionDescriptor(descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" * Returns an {@code EditPrescriptionDescriptor} with fields containing {@code prescription}\u0027s details","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" descriptor.setName(prescription.getName());","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setDosage(prescription.getDosage().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setFrequency(prescription.getFrequency().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" descriptor.setStartDate(prescription.getStartDate());","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setEndDate(prescription.getEndDate().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setExpiryDate(prescription.getExpiryDate().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setTotalStock(prescription.getTotalStock().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" descriptor.setConsumptionCount(prescription.getConsumptionCount());","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setIsCompleted(prescription.getIsCompleted());","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setNote(prescription.getNote().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Name} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Dosage} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withDosage(String dosage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" descriptor.setDosage(new Dosage(dosage));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Frequency} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withFrequency(String frequency) {","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" descriptor.setFrequency(new Frequency(frequency));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code StartDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withStartDate(String startDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" descriptor.setStartDate(new Date(startDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code EndDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withEndDate(String endDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" descriptor.setEndDate(new Date(endDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code ExpiryDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withExpiryDate(String expiryDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" descriptor.setExpiryDate(new Date(expiryDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code TotalStock} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withTotalStock(String totalStock) {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"shyanyong"},"content":" descriptor.setTotalStock(new Stock(totalStock));","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code ConsumptionCount} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"jingyu987"},"content":" descriptor.setConsumptionCount(new ConsumptionCount(consumptionCount));","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the {@code isCompleted} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" public EditPrescriptionDescriptorBuilder withIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setIsCompleted(isCompleted);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Note} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withNote(String note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"shyanyong"},"content":" descriptor.setNote(new Note(note));","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor build() {","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"shyanyong"},"content":" return descriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":1,"shyanyong":112,"ChongWeiJie29":33}},{"path":"src/test/java/seedu/address/testutil/PrescriptionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * A utility class to help with building Prescription objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public static final Name DEFAULT_NAME \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" public static final Dosage DEFAULT_DOSAGE \u003d new Dosage(\"1\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" public static final Frequency DEFAULT_FREQUENCY \u003d new Frequency(\"Daily\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_START_DATE \u003d new Date(\"01/10/2023\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_END_DATE \u003d new Date(\"01/10/2024\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_EXPIRY_DATE \u003d new Date(\"11/02/2025\");","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" public static final Stock DEFAULT_STOCK \u003d new Stock(\"100\");","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" public static final ConsumptionCount DEFAULT_CONSUMPTION \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public static final Boolean DEFAULT_ISCOMPLETED \u003d false;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" public static final Note DEFAULT_NOTE \u003d new Note(\"Take after food\");","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" private Name name;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDosage\u003e dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cFrequency\u003e frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private Date startDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDate\u003e endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDate\u003e expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cStock\u003e totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" private ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cNote\u003e note;","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // private Set\u003cTag\u003e tags;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" * Creates a {@code PrescriptionBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" name \u003d DEFAULT_NAME;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d Optional.ofNullable(DEFAULT_DOSAGE);","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d Optional.ofNullable(DEFAULT_FREQUENCY);","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" startDate \u003d DEFAULT_START_DATE;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d Optional.ofNullable(DEFAULT_END_DATE);","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d Optional.ofNullable(DEFAULT_EXPIRY_DATE);","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d Optional.ofNullable(DEFAULT_STOCK);","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" consumptionCount \u003d DEFAULT_CONSUMPTION;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d DEFAULT_ISCOMPLETED;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d Optional.ofNullable(DEFAULT_NOTE);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" * Initializes the PrescriptionBuilder with the data of {@code prescriptionToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder(Prescription prescriptionToCopy) {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" name \u003d prescriptionToCopy.getName();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" dosage \u003d prescriptionToCopy.getDosage();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" frequency \u003d prescriptionToCopy.getFrequency();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" startDate \u003d prescriptionToCopy.getStartDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" endDate \u003d prescriptionToCopy.getEndDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" expiryDate \u003d prescriptionToCopy.getExpiryDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" totalStock \u003d prescriptionToCopy.getTotalStock();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" consumptionCount \u003d prescriptionToCopy.getConsumptionCount();","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d prescriptionToCopy.getIsCompleted();","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" note \u003d prescriptionToCopy.getNote();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" // tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Name} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withName(String name) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" // /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" // * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" // */","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" // public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" // this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" // return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" // }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Dosage} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withDosage(String dosage) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d Optional.ofNullable(new Dosage(dosage));","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Frequency} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withFrequency(String frequency) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d Optional.ofNullable(new Frequency(frequency));","lastModifiedDate":"2023-10-21"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withStartDate(String startDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" this.startDate \u003d new Date(startDate);","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withEndDate(String endDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d Optional.ofNullable(new Date(endDate));","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withExpiryDate(String expiryDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d Optional.ofNullable(new Date(expiryDate));","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Stock} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withStock(String stock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d Optional.ofNullable(new Stock(stock));","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"jingyu987"},"content":" * Sets the {@code Stock} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"jingyu987"},"content":" public PrescriptionBuilder withConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d new ConsumptionCount(consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"jingyu987"},"content":" return this;","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"jingyu987"},"content":" * Sets the {@code isCompleted} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"jingyu987"},"content":" public PrescriptionBuilder withIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"jingyu987"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Note} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withNote(String note) {","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d Optional.ofNullable(new Note(note));","lastModifiedDate":"2023-10-21"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"jingyu987"},"content":" * Builds the {@code Prescription} with the fields previously set.","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" public Prescription build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription(name, dosage.orElse(null), frequency.orElse(null),","lastModifiedDate":"2023-10-21"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" startDate, endDate.orElse(null), expiryDate.orElse(null), totalStock.orElse(null),","lastModifiedDate":"2023-10-21"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" consumptionCount, isCompleted, note.orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":28,"ChongWeiJie29":23,"RoeReRe":122}},{"path":"src/test/java/seedu/address/testutil/PrescriptionListBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":" * A utility class to help with building PrescriptionList objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" * {@code PrescriptionList pl \u003d new PrescriptionListBuilder().withPrescription(PrescA, PrescB).build();}","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" private PrescriptionList prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder(PrescriptionList prescriptionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" this.prescriptionList \u003d prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" * Adds a new {@code Prescription} to the {@code PrescriptionList} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder withPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionList build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":34}},{"path":"src/test/java/seedu/address/testutil/PrescriptionUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" * A utility class for Prescription.","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionUtil {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" * Returns an add command string for adding the {@code prescription}.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public static String getAddPrescriptionCommand(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPrescriptionDetails(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" * Returns the part of command string for the given {@code prescription}\u0027s details.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" public static String getPrescriptionDetails(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_NAME + prescription.getName().toString() + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_DOSAGE + prescription.getDosage().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_FREQUENCY + prescription.getFrequency().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_START_DATE + prescription.getStartDate().toString() + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_END_DATE + prescription.getEndDate().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_EXPIRY_DATE + prescription.getExpiryDate().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_TOTAL_STOCK + prescription.getTotalStock().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_NOTE + prescription.getNote().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // person.getTags().stream().forEach(","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" // );","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" return sb.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":18,"RoeReRe":28}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_FIRST_PRESCRIPTION \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_SECOND_PRESCRIPTION \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_THIRD_PRESCRIPTION \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"RoeReRe":4,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPrescriptions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" * A utility class containing a list of {@code Prescription} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"public class TypicalPrescriptions {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ASPIRIN \u003d new PrescriptionBuilder().withName(\"Aspirin\")","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"23/02/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"12/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription PROPRANOLOL \u003d new PrescriptionBuilder().withName(\"Propranolol\")","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"4\")","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"22/07/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"500\")","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take after food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ERGOTAMINE \u003d new PrescriptionBuilder().withName(\"Ergotamine\")","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Weekly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"22/07/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"50\")","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription NAPROXEN \u003d new PrescriptionBuilder().withName(\"Naproxen\")","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Weekly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/06/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"13/01/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"75\")","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ZOMIG \u003d new PrescriptionBuilder().withName(\"Zolmitriptan Rapimelt\")","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Monthly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"20\")","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Drowsy\")","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // Manually added","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription IBUPROFEN \u003d new PrescriptionBuilder().withName(\"Ibuprofen\")","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"50\")","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take after food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription CAFFOX \u003d new PrescriptionBuilder().withName(\"Caffox\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"20\")","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" private TypicalPrescriptions() {} // prevents instantiation","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" * Returns an {@code PrescriptionList} with all the typical prescriptions.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" public static PrescriptionList getTypicalPrescriptionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList pl \u003d new PrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" for (Prescription prescription : getTypicalPrescriptions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" pl.addPrescription(prescription);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" return pl;","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" public static List\u003cPrescription\u003e getTypicalPrescriptions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ASPIRIN, PROPRANOLOL, ERGOTAMINE, NAPROXEN, ZOMIG));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":7,"shyanyong":1,"RoeReRe":101}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"# BayMeds v.2103","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"### UI Mockup","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"### Description","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"* This is **prescription management app for patients**.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" * Track prescription needs, dosage and related health information.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" * Receive reminders to consume and refill medication.","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"* It is named BayMeds v.2103 as it is inspired from the Disney character Baymax, who serves as a personal healthcare companion.","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"* For the detailed documentation of this project, see the **[BayMeds v.2103 Product Website](https://ay2324s1-cs2103t-t15-2.github.io/tp/)**.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"ChongWeiJie29":6,"RoeReRe":6,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"### Wei Xiang","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/roerere.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"[[github](https://github.com/roerere)]","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"[[portfolio](team/roerere.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"* Role: Developer","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":"### Ren Jing","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"\u003cimg src\u003d\"images/teerenjing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":"[[github](https://github.com/TeeRenJing)]","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"[[portfolio](team/teerenjing.md)]","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":"* Role: Developer","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"* Responsibilities: Testing","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"### Shyan-Yong","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"\u003cimg src\u003d\"images/shyanyong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":"[[github](http://github.com/shyanyong)]","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":"[[portfolio](team/shyanyong.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"### Jing Yu","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":"\u003cimg src\u003d\"images/jingyu987.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"[[github](http://github.com/jingyu987)]","lastModifiedDate":"2023-09-27"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":"[[portfolio](team/jingyu987.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":"### Wei Jie","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cimg src\u003d\"images/chongweijie29.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"[[github](http://github.com/chongweijie29)]","lastModifiedDate":"2023-10-01"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":"[[portfolio](team/chongweijie29.md)]","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"* Role: Integration, Developer","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"* Responsibilities: Logic","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"TeeRenJing":5,"jingyu987":4,"shyanyong":4,"ChongWeiJie29":6,"RoeReRe":7,"-":36}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"TeeRenJing":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"# BayMeds Developer Guide","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"TeeRenJing"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PrescriptionListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2023-10-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"TeeRenJing"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `BayMedsParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-10-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"TeeRenJing"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a medication).","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"TeeRenJing"},"content":"* When called upon to parse a user command, the `BayMedsParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `BayMedsParser` returns back as a `Command` object.","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"TeeRenJing"},"content":"* stores the BayMeds data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2023-10-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"TeeRenJing"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T15-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"TeeRenJing"},"content":"* can save both BayMeds data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"TeeRenJing"},"content":"* inherits from both `BayMedsStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2023-10-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram.puml\" alt\u003d\"UndoSequenceDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"RoeReRe"},"content":"* has a need to manage a significant number of prescriptions","lastModifiedDate":"2023-10-04"},{"lineNumber":273,"author":{"gitId":"RoeReRe"},"content":"* prefers a quick way of tracking medication needs, dosage and related health information","lastModifiedDate":"2023-09-25"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":"* prefers desktop apps over other types","lastModifiedDate":"2023-09-25"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"RoeReRe"},"content":"**Value proposition**:","lastModifiedDate":"2023-09-25"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":"* manage prescriptions faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":"* track dosage schedule and instructions","lastModifiedDate":"2023-09-25"},{"lineNumber":283,"author":{"gitId":"RoeReRe"},"content":"* track medical history","lastModifiedDate":"2023-09-25"},{"lineNumber":284,"author":{"gitId":"RoeReRe"},"content":"* log symptoms","lastModifiedDate":"2023-09-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"RoeReRe"},"content":"|----------|------------------------------------|-----------------------------------------------------|--------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":293,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | sickly patient | add prescriptions | manage additional prescriptions should I be prescribed them |","lastModifiedDate":"2023-10-04"},{"lineNumber":294,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | recovering patient | remove prescriptions | remove prescriptions that the doctor deems unnecessary from now on |","lastModifiedDate":"2023-10-04"},{"lineNumber":295,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | forgetful patient | mark the medication as consumed | not accidentally overdose on a certain medication |","lastModifiedDate":"2023-09-25"},{"lineNumber":296,"author":{"gitId":"RoeReRe"},"content":"| `* * *` | forgetful patient | list all my prescriptions | track all the medications I am currently taking |","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"RoeReRe"},"content":"| `* *` | forgetful patient | list all the medications I have not taken today | follow my prescription accurately |","lastModifiedDate":"2023-09-25"},{"lineNumber":298,"author":{"gitId":"RoeReRe"},"content":"| `* *` | patient undergoing a tapering plan | edit prescriptions that I have added | adjust my dosage schedules easily |","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"RoeReRe"},"content":"| `* *` | forgetful patient | get daily reminders of what medications to take | take my medication on time |","lastModifiedDate":"2023-10-04"},{"lineNumber":300,"author":{"gitId":"RoeReRe"},"content":"| `*` | forgetful patient | get a reminder when a medication is about to expire | premptively stock up before it runs out |","lastModifiedDate":"2023-09-25"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"TeeRenJing"},"content":"(For all use cases below, the **System** is the `BayMeds` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-03"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"RoeReRe"},"content":"**Use case: Delete a prescription**","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"RoeReRe"},"content":"3. User requests to delete a specific prescription in the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"RoeReRe"},"content":"4. BayMeds deletes the prescription.","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"TeeRenJing"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-03"},{"lineNumber":322,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":323,"author":{"gitId":"TeeRenJing"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":324,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":325,"author":{"gitId":"TeeRenJing"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-03"},{"lineNumber":326,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":327,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"RoeReRe"},"content":"* 3a. The given prescription is not in the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"TeeRenJing"},"content":" * 3a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-03"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"RoeReRe"},"content":"**Use case: List all prescriptions**","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"RoeReRe"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list all prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of prescriptions together with their details.","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"RoeReRe"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"RoeReRe"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"RoeReRe"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"RoeReRe"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"RoeReRe"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"RoeReRe"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"RoeReRe"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"shyanyong"},"content":"**Use case: List medications to be consumed today**","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"shyanyong"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"RoeReRe"},"content":"1. User requests to list all remaining medications to be consumed today.","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"RoeReRe"},"content":"2. BayMeds shows a list of medications to be consumed today.","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":365,"author":{"gitId":"shyanyong"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":366,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":367,"author":{"gitId":"shyanyong"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":368,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"shyanyong"},"content":"* 1a. The given command is invalid.","lastModifiedDate":"2023-10-04"},{"lineNumber":370,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":371,"author":{"gitId":"shyanyong"},"content":" * 1a1. BayMeds shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"shyanyong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"shyanyong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"shyanyong"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"TeeRenJing"},"content":"2. Should be able to hold up to 1000 prescriptions without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2023-10-03"},{"lineNumber":385,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"RoeReRe"},"content":"4. Should be able to give a notification to the user when the application is running. (Time to take medication / medication is about to expire)","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"TeeRenJing"},"content":"5. Should be able to track current date and time when the application is running.","lastModifiedDate":"2023-10-03"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"TeeRenJing"},"content":"* **Medication**: A drug identified by a name","lastModifiedDate":"2023-10-03"},{"lineNumber":395,"author":{"gitId":"RoeReRe"},"content":"* **Prescription**: Uniquely identified by a medication, a frequency and a quantity","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":406,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"TeeRenJing"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample prescriptions. The window size may not be optimum.","lastModifiedDate":"2023-10-03"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"TeeRenJing"},"content":"### Deleting a medication","lastModifiedDate":"2023-10-03"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"TeeRenJing"},"content":"1. Deleting a medication while all medications are being shown","lastModifiedDate":"2023-10-03"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"TeeRenJing"},"content":" 1. Prerequisites: List all medications using the `list` command. Multiple medications in the list.","lastModifiedDate":"2023-10-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"TeeRenJing"},"content":" 1. Test case: `delete --medication \"Doxazosin\"`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":434,"author":{"gitId":"TeeRenJing"},"content":" Expected: Doxazosin is deleted from the list. Details of the deleted medication shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2023-10-03"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"TeeRenJing"},"content":" 1. Test case: `delete --medication \"Watsons\"`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":437,"author":{"gitId":"TeeRenJing"},"content":" Expected: No medication is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2023-10-03"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"TeeRenJing"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...`\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":440,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"TeeRenJing":33,"shyanyong":20,"RoeReRe":49,"-":348}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Testing guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Testing guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" e.g. `seedu.address.storage.StorageManagerPrescriptionTest`","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" e.g. `seedu.address.logic.LogicManagerPrescriptionTest`","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":2,"-":39}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"# BayMeds v.2103 User Guide","lastModifiedDate":"2023-10-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"BayMeds v.2103, (a.k.a BayMeds), is a **desktop application for managing your prescriptions**. While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface). If you like to type fast, BayMeds can get your prescription management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"1. Download the latest `BayMeds.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). [coming soon]","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for BayMeds.","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar BayMeds.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" A GUI similar to the one below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"1. Type commands in the command box and press Enter to execute it. \u003cbr\u003e e.g. typing the command **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" Some example commands you can try:","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" * `list` : Lists all prescriptions.","lastModifiedDate":"2023-10-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" * `add --medication \"Doxazosin\" --frequency \"daily\"` : Adds a prescription `Aspirin` to the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" * `delete \"Aspirin\"` : Deletes the `Aspirin` prescription from the current list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"* Words in `\u003c\u003e` are the parameters to be supplied by the user, and should begin and end with double quotation marks \" \".\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. in `add --medication \u003cmedication_name\u003e`, `\u003cmedication_name\u003e` is a parameter which can be used as `add --medication \"Aspirin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. `--frequency \u003cfrequency\u003e [--start \u003cstart_date\u003e]` can be used as `--frequency \"daily\" --start \"20-9-2023\"` or as `--frequency \"daily\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" e.g. if the command specifies `--medication \u003cmedication_name\u003e --frequency \u003cfrequency\u003e`, `--frequency \u003cfrequency\u003e --medication \u003cmedication_name\u003e` is also acceptable.","lastModifiedDate":"2023-10-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"### Viewing help : `help` [coming soon]","lastModifiedDate":"2023-10-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"_Details coming soon ..._","lastModifiedDate":"2023-10-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"### Adding a prescription : `add`","lastModifiedDate":"2023-10-02"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"Adds a prescription to the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"Format:","lastModifiedDate":"2023-10-02"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"add","lastModifiedDate":"2023-10-02"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" --frequency \u003cfrequency\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" [--start \u003cstart_date\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" [--end \u003cend_date\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" [--remarks \u003cremarks\u003e]","lastModifiedDate":"2023-10-02"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"* `\u003cfrequency\u003e` should follow this format `\u003crepetition dosage\u003e`.","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"daily 2\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 2 tabs everyday.","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"daily 4\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 4 tabs everyday.","lastModifiedDate":"2023-10-02"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. `--frequency \"weekly 2\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" * This means take 2 tabs on a particular day every week. The day is determined by the `\u003cstart_date\u003e` input. If `\u003cstart_date\u003e` is a Wednesday, this means take 2 tabs every Wednesday.","lastModifiedDate":"2023-10-02"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":"* If your prescriptions are to be taken every Wednesday and Sunday, add 2 separate entries into the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" * `Add --medication \"Accutane 1\" --frequency \"weekly 1\" --start \"27-09-2023\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" * `Add --medication \"Accutane 2\" --frequency \"weekly 1\" --start \"01-10-2023\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":"* `\u003cstart_date\u003e` and `\u003cend_date\u003e` should be in dd-mm-yyyy format.","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"20-09-2023\".","lastModifiedDate":"2023-10-02"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":"* Since `--start \u003cstart_date\u003e` is an optional input, if there is none given, the input date of the entry will be used as the default start date.","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":"* Remarks can consist of any text.","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"To be taken after meals\".","lastModifiedDate":"2023-10-02"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" * e.g. \"Take after food\".","lastModifiedDate":"2023-10-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":"Examples:","lastModifiedDate":"2023-10-02"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Aspirin\" --frequency \"daily\" --start \"20-09-2023\" --end \"03-10-2024\" --remarks \"Take during meals\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Amoxicillin\" --frequency \"twice daily\" --start \"20-09-2023\" --end \"03-10-2024\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":"* `add --medication \"Doxazosin\" --frequency \"daily\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":"Example usage of add command in BayMeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-add.png\" alt\u003d\"Example of add command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"### Listing all prescriptions : `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"Shows a list of all prescriptions.","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":"list","lastModifiedDate":"2023-10-03"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":"Example usage of list command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-list.png\" alt\u003d\"Example of list command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Locating persons by name : `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":"### Deleting a prescription : `delete`","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":"Deletes the specified prescription from the list of prescriptions.","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":"Format:","lastModifiedDate":"2023-10-02"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":"delete","lastModifiedDate":"2023-10-02"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-02"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":"```","lastModifiedDate":"2023-10-02"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"TeeRenJing"},"content":"* `\u003cmedication_name\u003e` should not be empty.","lastModifiedDate":"2023-10-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Aspirin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":169,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Amoxicillin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":170,"author":{"gitId":"TeeRenJing"},"content":"* `delete --medication \"Doxazosin\"`.","lastModifiedDate":"2023-10-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":172,"author":{"gitId":"TeeRenJing"},"content":"Example usage of delete command in BayMeds:","lastModifiedDate":"2023-10-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-delete.png\" alt\u003d\"Example of delete command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"jingyu987"},"content":"### Listing untaken medication : `list today`","lastModifiedDate":"2023-10-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":"Lists all remaining medications to be taken for the day.","lastModifiedDate":"2023-10-03"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":180,"author":{"gitId":"shyanyong"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":"list today","lastModifiedDate":"2023-10-03"},{"lineNumber":183,"author":{"gitId":"shyanyong"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":"* `list today`.","lastModifiedDate":"2023-10-03"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":188,"author":{"gitId":"jingyu987"},"content":"Example usage of list today command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":189,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":190,"author":{"gitId":"jingyu987"},"content":"\u003cimg src\u003d\"images/ui/Ui-list_today.png\" alt\u003d\"Example of list today command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":191,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":192,"author":{"gitId":"jingyu987"},"content":"### Marking a medication as taken : `take`","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"RoeReRe"},"content":"Marks a medication as consumed.","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"jingyu987"},"content":"Format:","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"jingyu987"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":198,"author":{"gitId":"jingyu987"},"content":"take","lastModifiedDate":"2023-10-03"},{"lineNumber":199,"author":{"gitId":"jingyu987"},"content":" --medication \u003cmedication_name\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":200,"author":{"gitId":"jingyu987"},"content":" [--amount \u003camount_taken\u003e]","lastModifiedDate":"2023-10-03"},{"lineNumber":201,"author":{"gitId":"jingyu987"},"content":" [--date \u003cdate\u003e]","lastModifiedDate":"2023-10-03"},{"lineNumber":202,"author":{"gitId":"jingyu987"},"content":"```","lastModifiedDate":"2023-10-03"},{"lineNumber":203,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":204,"author":{"gitId":"jingyu987"},"content":"* `\u003cmedication_name\u003e` should not be empty.","lastModifiedDate":"2023-10-03"},{"lineNumber":205,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":206,"author":{"gitId":"jingyu987"},"content":"Examples:","lastModifiedDate":"2023-10-03"},{"lineNumber":207,"author":{"gitId":"jingyu987"},"content":"* `take","lastModifiedDate":"2023-10-03"},{"lineNumber":208,"author":{"gitId":"jingyu987"},"content":" --medication \"Aspirin\" --amount “1” --date \"20-09-2023\"`.","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":210,"author":{"gitId":"jingyu987"},"content":"Example usage of take command in BayMeds:","lastModifiedDate":"2023-10-03"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"RoeReRe"},"content":"\u003cimg src\u003d\"images/ui/Ui-take.png\" alt\u003d\"Example of take command\" width\u003d\"460\" height\u003d\"330\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-02"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds data are saved automatically as a JSON file `[JAR file location]/data/BayMeds.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-02"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":"If your changes to the data file makes its format invalid, BayMeds will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"ChongWeiJie29"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous BayMeds home folder.","lastModifiedDate":"2023-10-02"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"RoeReRe"},"content":"| Action | Format, Example |","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"RoeReRe"},"content":"|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"RoeReRe"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"RoeReRe"},"content":"| **Add** | `add --medication \u003cmedication_name\u003e --frequency \u003cfrequency\u003e [--start \u003cstart_date\u003e] [--end \u003cend_date\u003e] [--remarks \u003cremarks\u003e]`, \u003cbr\u003e e.g. `add --medication \"Aspirin\" --frequency \"daily\" --start \"20-09-2023\" --end \"03-10-2024\" --remarks \"Take during meals\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"RoeReRe"},"content":"| **Delete** | `delete --medication \u003cmedication_name\u003e`, \u003cbr\u003e e.g. `delete --medication \"Aspirin\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"RoeReRe"},"content":"| **Mark** | `take --medication \u003cmedication_name\u003e [--amount \u003camount_taken\u003e] [--date \u003cdate\u003e]`, \u003cbr\u003e e.g. `take --medication \"Aspirin\" --amount \"1\" --date \"20-09-2023\"` |","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"RoeReRe"},"content":"| **List** | `list` |","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"RoeReRe"},"content":"| **List today** | `list today` |","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"TeeRenJing":5,"jingyu987":20,"shyanyong":12,"ChongWeiJie29":57,"RoeReRe":27,"-":135}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"# BayMeds v.2103","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-T15-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-T15-2/tp)","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"**BayMeds is a desktop application for managing your medications.** While it has a GUI (Graphical User Interface), most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"* If you are interested in using BayMeds, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"* If you are interested about developing BayMeds, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"RoeReRe":6,"-":15}},{"path":"docs/team/chongweijie29.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"---","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":" layout: default.md","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":" title: \"ChongWeiJie29\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"---","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dchongweijie29\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * User Guide:","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-10-01"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-10-01"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"* **Community**:","lastModifiedDate":"2023-10-01"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" * To be added","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"ChongWeiJie29":30}},{"path":"docs/team/jingyu987.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" layout: default.md","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" title: \"jingyu987\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003djingyu987\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" * To be added","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"jingyu987":30}},{"path":"docs/team/roerere.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":" layout: default.md","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":" title: \"RoeReRe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003droerere\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" * User Guide:","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"* **Community**:","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" * To be added","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"RoeReRe":30}},{"path":"docs/team/shyanyong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":" layout: default.md","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":" title: \"shyanyong\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dshyanyong\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" * To be added","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"shyanyong":30}},{"path":"docs/team/teerenjing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":" layout: default.md","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":" title: \"TeeRenJing\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"---","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"### Project: BayMeds v.2103","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"BayMeds v.2103 is a desktop application used for tracking medications. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dteerenjing\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":"* **Enhancements implemented**:","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" * User Guide:","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"* **Team-based tasks**:","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"* **Review and mentoring**:","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"* **Community**:","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" * To be added","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"TeeRenJing":30}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.CompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonCompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonPrescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.PrescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing BayMeds v.2103 ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" CompletedPrescriptionListStorage completedPrescriptionListStorage \u003d new JsonCompletedPrescriptionListStorage(","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" storage \u003d new StorageManager(prescriptionListStorage, completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s prescription list and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * The data from the sample prescription list will be used instead if {@code storage}\u0027s prescription list is not","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * found, or an empty prescription list will be used instead if errors occur when reading {@code storage}\u0027s","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" * prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Using data file : \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" + \" and \" + storage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e prescriptionListOptional;","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e completedPrescriptionListOptional;","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList initialData;","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList initialCompletedData;","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListOptional \u003d storage.readPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListOptional \u003d storage.readCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" if (!prescriptionListOptional.isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Creating a new data file \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" + \" populated with a sample PrescriptionList.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" initialData \u003d prescriptionListOptional.orElseGet(SampleDataUtil::getSamplePrescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" if (!completedPrescriptionListOptional.isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Creating a new data file \" + storage.getCompletedPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" + \" populated with a sample CompletedPrescriptionList.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" initialCompletedData \u003d completedPrescriptionListOptional.orElseGet(","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" SampleDataUtil::getSampleCompletedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" logger.warning(\"Data file at \" + storage.getPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" + \" or \" + storage.getCompletedPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" + \" could not be loaded.\"","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" + \" Will be starting with an empty PrescriptionList.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" initialData \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" initialCompletedData \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" return new ModelManager(initialData, initialCompletedData, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":175,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":192,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"jingyu987"},"content":" * Deletes prescriptions that are past the end date and stores them in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":" private void checkAndMoveEndedPrescriptions() throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionListCopy \u003d new PrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"jingyu987"},"content":" for (Prescription prescription : prescriptionListCopy.getPrescriptionList()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"jingyu987"},"content":" if (prescription.isEnded()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"jingyu987"},"content":" model.deletePrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"jingyu987"},"content":" model.addCompletedPrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"jingyu987"},"content":" storage.savePrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"jingyu987"},"content":" storage.saveCompletedPrescriptionList(model.getCompletedPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":205,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":206,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"jingyu987"},"content":" public void start(Stage primaryStage) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":209,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Starting BayMeds v.2103 \" + MainApp.VERSION);","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"jingyu987"},"content":" checkAndMoveEndedPrescriptions();","lastModifiedDate":"2023-10-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping BayMeds v.2103 ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":218,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":219,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":220,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jingyu987":18,"ChongWeiJie29":43,"-":162}},{"path":"src/main/java/seedu/address/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" private static final double DEFAULT_HEIGHT \u003d 830;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" private static final double DEFAULT_WIDTH \u003d 1350;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"RoeReRe":2,"-":80}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * API of the LogicPrescription component","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException, IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the PrescriptionList.","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" * @see seedu.address.model.Model#getPrescriptionList()","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered list of prescriptions */","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" /** Returns an unmodifiable view of the filtered list of completed prescriptions */","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" /** Returns the flag indicating whether to display the completed list */","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" boolean getIsDisplayingCompletedList();","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jingyu987":7,"ChongWeiJie29":10,"-":40}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.ListCompletedCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.parser.PrescriptionListParser;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionListParser prescriptionListParser;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" private boolean isDisplayingCompletedList;","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListParser \u003d new PrescriptionListParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" this.isDisplayingCompletedList \u003d false;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException, IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" Command command \u003d prescriptionListParser.parseCommand(commandText);","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" if (command instanceof ListCompletedCommand) {","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" // Handle the ListCompletedCommand","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" this.isDisplayingCompletedList \u003d true;","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" checkAndMoveEndedPrescriptions();","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" // Handle other commands...","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" this.isDisplayingCompletedList \u003d false;","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" storage.savePrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" storage.saveCompletedPrescriptionList(model.getCompletedPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" * Deletes prescriptions that are past the end date and stores them in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" private void checkAndMoveEndedPrescriptions() throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionListCopy \u003d new PrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" for (Prescription prescription : prescriptionListCopy.getPrescriptionList()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" if (prescription.isEnded()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" model.deletePrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" model.addCompletedPrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" storage.savePrescriptionList(model.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" storage.saveCompletedPrescriptionList(model.getCompletedPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" return model.getFilteredCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" public boolean getIsDisplayingCompletedList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" return this.isDisplayingCompletedList;","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" return model.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jingyu987":36,"ChongWeiJie29":14,"-":76}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX \u003d \"The prescription index \"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" + \"provided is invalid\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW \u003d \"%1$d prescriptions listed!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Formats the {@code prescription} for display to the user.","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public static String format(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(prescription.getName());","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Dosage: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getDosage().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Frequency: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getFrequency().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Start Date: \").append(prescription.getStartDate());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; End Date: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getEndDate().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Expiry Date: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getExpiryDate().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Total stock: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getTotalStock().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; isCompleted: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getIsCompleted());","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" builder.append(\"; Note: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" .append(prescription.getNote().get());","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" // person.getTags().forEach(builder::append);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChongWeiJie29":43,"-":37}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" * Adds a prescription to the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a prescription to the prescription list. \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_DOSAGE + \"dosage \"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_FREQUENCY + \"frequency \"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_START_DATE + \"start_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_END_DATE + \"end_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_EXPIRY_DATE + \"expiry_date \"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_TOTAL_STOCK + \"total_stock \"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NOTE + \"note \\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" // + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_DOSAGE + \"1 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_FREQUENCY + \"Daily \"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_START_DATE + \"01/08/2023 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_END_DATE + \"25/12/2023 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_EXPIRY_DATE + \"01/01/2024 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_TOTAL_STOCK + \"100 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" + PREFIX_NOTE + \"Test note\";","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New prescription added: %1$s.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"This prescription already \"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" + \"exists in the prescription list.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_INVALID_DATES \u003d \"Start date must be before end date, \"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" + \"and end date must be before expiry date.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" private final Prescription toAdd;","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates an AddPrescriptionCommand to add the specified {@code Prescription}","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public AddCommand(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" toAdd \u003d prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" if (model.hasPrescription(toAdd)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" model.addPrescription(toAdd);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shyanyong":4,"ChongWeiJie29":37,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" * Deletes a prescription from prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a prescription from the prescription list. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DELETE_PRESCRIPTION_SUCCESS \u003d \"Prescription deleted: %1$s.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" * Creates an DeletePrescriptionCommand to delete the specified {@code Prescription}","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" List\u003cPrescription\u003e lastShownList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" model.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"TeeRenJing"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" Messages.format(prescriptionToDelete)));","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand otherAddCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" return targetIndex.equals(otherAddCommand.targetIndex);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" .add(\"toDelete\", targetIndex)","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"TeeRenJing":13,"shyanyong":1,"ChongWeiJie29":4,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.AddCommand.MESSAGE_INVALID_DATES;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsValidDatesPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" * Edits the details of an existing prescription in prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the prescription identified \"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" + \"by the index number used in the displayed prescription list. \"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_DOSAGE + \"DOSAGE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_FREQUENCY + \"FREQUENCY] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_START_DATE + \"START DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_END_DATE + \"END DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_EXPIRY_DATE + \"EXPIRY DATE] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_TOTAL_STOCK + \"TOTAL STOCK] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_CONSUMPTION + \"CONSUMPTION] \"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" + \"[\" + PREFIX_NOTE + \"NOTE]...\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" + PREFIX_NOTE + \"Take after meal\";","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_EDIT_PRESCRIPTION_SUCCESS \u003d \"Edited Prescription: %1$s\";","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"This prescription already exists \"","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" + \"in the prescription list.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" private final EditPrescriptionDescriptor editPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" * Creates an EditCommand to edit the specified {@code Prescription}","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" public EditCommand(Index index, EditPrescriptionDescriptor editPrescriptionDescriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" requireNonNull(editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" this.editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor(editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" List\u003cPrescription\u003e lastShownList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d createEditedPrescription(prescriptionToEdit, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" if (!prescriptionToEdit.isSamePrescription(editedPrescription) \u0026\u0026 model.hasPrescription(editedPrescription)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" Predicate\u003cPrescription\u003e isValidDates \u003d new IsValidDatesPredicate();","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" if (!isValidDates.test(editedPrescription)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" throw new CommandException(MESSAGE_INVALID_DATES);","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" model.setPrescription(prescriptionToEdit, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" model.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PRESCRIPTION_SUCCESS, Messages.format(editedPrescription)));","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" private static Prescription createEditedPrescription(Prescription prescriptionToEdit,","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor) throws CommandException {","lastModifiedDate":"2023-10-21"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" assert prescriptionToEdit !\u003d null;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" Name updatedName \u003d editPrescriptionDescriptor.getName().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getName());","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage updatedDosage \u003d editPrescriptionDescriptor.getDosage().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getDosage().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency updatedFrequency \u003d editPrescriptionDescriptor.getFrequency().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getFrequency().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedStartDate \u003d editPrescriptionDescriptor.getStartDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getStartDate());","lastModifiedDate":"2023-10-21"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedEndDate \u003d editPrescriptionDescriptor.getEndDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getEndDate().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" Date updatedExpiryDate \u003d editPrescriptionDescriptor.getExpiryDate().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getExpiryDate().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" Stock updatedTotalStock \u003d editPrescriptionDescriptor.getTotalStock().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getTotalStock().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" ConsumptionCount updatedConsumptionCount \u003d editPrescriptionDescriptor.getConsumptionCount().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getConsumptionCount());","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"jingyu987"},"content":" Boolean updatedIsCompleted \u003d editPrescriptionDescriptor.getIsCompleted()","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"jingyu987"},"content":" .orElse(prescriptionToEdit.getIsCompleted());","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" Note updatedNote \u003d editPrescriptionDescriptor.getNote().orElse(","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionToEdit.getNote().orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" return new Prescription(updatedName, updatedDosage, updatedFrequency, updatedStartDate, updatedEndDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" updatedExpiryDate, updatedTotalStock, updatedConsumptionCount, updatedIsCompleted, updatedNote);","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" //instanceof handles nulls","lastModifiedDate":"2023-10-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 editPrescriptionDescriptor.equals(otherEditCommand.editPrescriptionDescriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" .add(\"editPrescriptionDescriptor\", editPrescriptionDescriptor)","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"shyanyong"},"content":" * Creates and returns a {@code Prescription} with the details of {@code prescriptionToEdit}","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"shyanyong"},"content":" * edited with {@code editPrescriptionDescriptor}.","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"shyanyong"},"content":" public static class EditPrescriptionDescriptor {","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"shyanyong"},"content":" private Dosage dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"shyanyong"},"content":" private Frequency frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"shyanyong"},"content":" private Date startDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"shyanyong"},"content":" private Date endDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"shyanyong"},"content":" private Date expiryDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"shyanyong"},"content":" private Stock totalStock;","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"shyanyong"},"content":" private ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"shyanyong"},"content":" private Note note;","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor() {}","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"shyanyong"},"content":" * Creates an EditPrescriptionDescriptor with the details of {@code prescriptionToEdit}","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor(EditPrescriptionDescriptor toCopy) {","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":" setDosage(toCopy.dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":" setFrequency(toCopy.frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"shyanyong"},"content":" setStartDate(toCopy.startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" setEndDate(toCopy.endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" setExpiryDate(toCopy.expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" setTotalStock(toCopy.totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" setConsumptionCount(toCopy.consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"jingyu987"},"content":" setIsCompleted(toCopy.isCompleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"shyanyong"},"content":" setNote(toCopy.note);","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"shyanyong"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"jingyu987"},"content":" name, dosage, frequency, startDate, endDate, expiryDate, totalStock, consumptionCount,","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":" isCompleted, note);","lastModifiedDate":"2023-10-20"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"shyanyong"},"content":" public void setDosage(Dosage dosage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"shyanyong"},"content":" this.dosage \u003d dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDosage\u003e getDosage() {","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"shyanyong"},"content":" public void setFrequency(Frequency frequency) {","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"shyanyong"},"content":" this.frequency \u003d frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cFrequency\u003e getFrequency() {","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"shyanyong"},"content":" public void setStartDate(Date startDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"shyanyong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getStartDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"shyanyong"},"content":" public void setEndDate(Date endDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"shyanyong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getEndDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"shyanyong"},"content":" public void setExpiryDate(Date expiryDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"shyanyong"},"content":" this.expiryDate \u003d expiryDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cDate\u003e getExpiryDate() {","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"shyanyong"},"content":" public void setTotalStock(Stock totalStock) {","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"shyanyong"},"content":" this.totalStock \u003d totalStock;","lastModifiedDate":"2023-10-18"},{"lineNumber":248,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":249,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cStock\u003e getTotalStock() {","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"shyanyong"},"content":" public void setNote(Note note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":255,"author":{"gitId":"shyanyong"},"content":" this.note \u003d note;","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(note);","lastModifiedDate":"2023-10-18"},{"lineNumber":260,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":261,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"shyanyong"},"content":" public void setConsumptionCount(ConsumptionCount consumptionCount) {","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"shyanyong"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":264,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":265,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"shyanyong"},"content":" public Optional\u003cConsumptionCount\u003e getConsumptionCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"shyanyong"},"content":" return Optional.ofNullable(consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"jingyu987"},"content":" public void setIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":271,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":272,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":273,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":274,"author":{"gitId":"jingyu987"},"content":" public Optional\u003cBoolean\u003e getIsCompleted() {","lastModifiedDate":"2023-10-20"},{"lineNumber":275,"author":{"gitId":"jingyu987"},"content":" return Optional.ofNullable(isCompleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"shyanyong"},"content":" //instanceof handles nulls","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"shyanyong"},"content":" if (!(other instanceof EditPrescriptionDescriptor)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor otherEditPrescriptionDescriptor \u003d (EditPrescriptionDescriptor) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"shyanyong"},"content":" return Objects.equals(name, otherEditPrescriptionDescriptor.name)","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(dosage, otherEditPrescriptionDescriptor.dosage)","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(frequency, otherEditPrescriptionDescriptor.frequency)","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(startDate, otherEditPrescriptionDescriptor.startDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(endDate, otherEditPrescriptionDescriptor.endDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(expiryDate, otherEditPrescriptionDescriptor.expiryDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(totalStock, otherEditPrescriptionDescriptor.totalStock)","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(consumptionCount, otherEditPrescriptionDescriptor.consumptionCount)","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"shyanyong"},"content":" \u0026\u0026 Objects.equals(note, otherEditPrescriptionDescriptor.note);","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"shyanyong"},"content":" .add(\"dosage\", dosage)","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"shyanyong"},"content":" .add(\"frequency\", frequency)","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"shyanyong"},"content":" .add(\"startDate\", startDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"shyanyong"},"content":" .add(\"endDate\", endDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"shyanyong"},"content":" .add(\"expiryDate\", expiryDate)","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"shyanyong"},"content":" .add(\"totalStock\", totalStock)","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"shyanyong"},"content":" .add(\"consumptionCount\", consumptionCount)","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"shyanyong"},"content":" .add(\"note\", note)","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":13,"shyanyong":158,"ChongWeiJie29":21,"-":126}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting BayMeds v.2103 as requested ...\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits application.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" return other instanceof ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"TeeRenJing":7,"ChongWeiJie29":1,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" * Finds and lists all prescriptions in address book whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all prescriptions whose names contain any of \"","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" + \"Example: \" + COMMAND_WORD + \" paracetamol ibuprofen\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" model.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW,","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" model.getFilteredPrescriptionList().size()));","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":9,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" return other instanceof HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"TeeRenJing":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Lists all prescriptions stored to the user.","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all prescriptions stored.\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all prescriptions.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" public static final String MESSAGE_EMPTY_LIST \u003d \"No prescriptions found.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" model.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" ObservableList\u003cPrescription\u003e prescriptionList \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" if (prescriptionList.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" return new CommandResult(MESSAGE_EMPTY_LIST);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" return other instanceof ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChongWeiJie29":10,"RoeReRe":10,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/ListCompletedCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" * Lists all completed prescriptions to the user.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"public class ListCompletedCommand extends Command {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" public static final String COMMAND_WORD \u003d \"listCompleted\";","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all prescriptions that were completed.\\n\"","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listing all prescriptions that were completed.\";","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_EMPTY_LIST \u003d \"No completed prescriptions.\";","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" ObservableList\u003cPrescription\u003e completedPrescriptionList \u003d model.getFilteredCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" model.updateFilteredCompletedPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" if (completedPrescriptionList.isEmpty()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(MESSAGE_EMPTY_LIST);","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" return other instanceof ListCompletedCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"jingyu987":40}},{"path":"src/main/java/seedu/address/logic/commands/ListTodayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsTodayPredicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" * Lists all remaining medications to be taken for the day to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" public static final String COMMAND_WORD \u003d \"listToday\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all medications to be taken today.\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listing all medications to be taken today.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public static final String MESSAGE_EMPTY_LIST \u003d \"No medications to be taken today.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" Predicate\u003cPrescription\u003e isToday \u003d new IsTodayPredicate();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" model.updateFilteredPrescriptionList(isToday);","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e todayPrescriptions \u003d model.getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" if (todayPrescriptions.isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" return new CommandResult(MESSAGE_EMPTY_LIST);","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" } else {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" return other instanceof ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":39,"ChongWeiJie29":6}},{"path":"src/main/java/seedu/address/logic/commands/TakeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * Represents a command to take a specified number of doses of a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommand extends Command {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public static final String COMMAND_WORD \u003d \"take\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" + \": Takes a specified number of doses of a prescription.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"number_of_doses \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\";","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Doses taken from: %1$s.\";","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_PRESCRIPTION_NOT_FOUND \u003d \"The specified prescription does not exist.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_INSUFFICIENT_STOCK \u003d \"There is insufficient stock for this prescription.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final Name prescriptionName;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" private final int dosesToTake;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" * Creates a TakePrescriptionCommand to take the specified number of doses from a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" * @param prescriptionName Name of the prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" * @param dosesToTake Number of doses to take.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public TakeCommand(Name prescriptionName, int dosesToTake) {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" this.prescriptionName \u003d prescriptionName;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" this.dosesToTake \u003d dosesToTake;","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" * Executes the TakePrescriptionCommand to take the specified doses from the prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" * @param model The model of the prescription list.","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" * @return A CommandResult with the result of the execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" * @throws CommandException If there are errors in executing the command.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" Prescription prescription \u003d model.getPrescriptionByName(prescriptionName);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cStock\u003e totalStock \u003d prescription.getTotalStock();","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock.isPresent() \u0026\u0026 (Integer.parseInt(totalStock.get().toString()) - dosesToTake \u003c 0)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" throw new CommandException(MESSAGE_INSUFFICIENT_STOCK);","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock.isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock.get().decrementCount(dosesToTake);","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" prescription.getConsumptionCount().incrementCount(dosesToTake);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 Integer.parseInt(prescription.getConsumptionCount().toString())","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" \u003e\u003d Integer.parseInt(prescription.getDosage().get().toString())) {","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(true);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(false);","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" Predicate\u003cPrescription\u003e isSameName \u003d new SameNamePredicate(prescriptionName);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" model.updateFilteredPrescriptionList(isSameName);","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, prescriptionName));","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof TakeCommand)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand otherCommand \u003d (TakeCommand) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" return prescriptionName.equals(otherCommand.prescriptionName)","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 dosesToTake \u003d\u003d otherCommand.dosesToTake;","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":83,"ChongWeiJie29":19}},{"path":"src/main/java/seedu/address/logic/commands/UntakeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" * Represents a command to untake a specified number of doses of a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommand extends Command {","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public static final String COMMAND_WORD \u003d \"untake\";","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" + \": Untakes a specified number of doses of a prescription.\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"medication_name \"","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"number_of_doses \\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\";","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Doses untaken from: %1$s\";","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_INSUFFICIENT_CONSUMPTION \u003d \"Cannot untake more than what you have consumed.\";","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" private final Name prescriptionName;","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final int dosesToUntake;","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" * Creates an UntakePrescriptionCommand to untake the specified number of doses from a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" * @param prescriptionName Name of the prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" * @param dosesToTake Number of doses to untake.","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" public UntakeCommand(Name prescriptionName, int dosesToTake) {","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" this.prescriptionName \u003d prescriptionName;","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" this.dosesToUntake \u003d dosesToTake;","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" * Executes the UntakePrescriptionCommand to untake the specified doses from the prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" * @param model The model of the prescription list.","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" * @return A CommandResult with the result of the execution.","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" * @throws CommandException If there are errors in executing the command.","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" Prescription prescription \u003d model.getPrescriptionByName(prescriptionName);","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" Optional\u003cStock\u003e totalStock \u003d prescription.getTotalStock();","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" if (Integer.parseInt(prescription.getConsumptionCount().getConsumptionCount()) - dosesToUntake \u003c 0) {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" throw new CommandException(MESSAGE_INSUFFICIENT_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" if (totalStock.isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" totalStock.get().incrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" prescription.getConsumptionCount().decrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" if (prescription.getDosage().isPresent()","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 Integer.parseInt(prescription.getConsumptionCount().toString())","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" \u003e\u003d Integer.parseInt(prescription.getDosage().get().toString())) {","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(true);","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" prescription.setIsCompleted(false);","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" Predicate\u003cPrescription\u003e isSameName \u003d new SameNamePredicate(prescriptionName);","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" model.updateFilteredPrescriptionList(isSameName);","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, prescriptionName));","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" if (!(other instanceof UntakeCommand)) {","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" UntakeCommand otherCommand \u003d (UntakeCommand) other;","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" return prescriptionName.equals(otherCommand.prescriptionName)","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 dosesToUntake \u003d\u003d otherCommand.dosesToUntake;","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":101}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.IsValidDatesPredicate;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY,","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" PREFIX_START_DATE, PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" PREFIX_START_DATE, PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage dosage \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_DOSAGE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d ParserUtil.parseDosage(argMultimap.getValue(PREFIX_DOSAGE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency frequency \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_FREQUENCY).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d ParserUtil.parseFrequency(argMultimap.getValue(PREFIX_FREQUENCY).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" Date startDate \u003d new Date(LocalDate.now().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\")));","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_START_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" startDate \u003d ParserUtil.parseStartDate(argMultimap.getValue(PREFIX_START_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" Date endDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_END_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d ParserUtil.parseEndDate(argMultimap.getValue(PREFIX_END_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" Date expiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_EXPIRY_DATE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d ParserUtil.parseExpiryDate(argMultimap.getValue(PREFIX_EXPIRY_DATE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" Stock totalStock \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_TOTAL_STOCK).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d ParserUtil.parseTotalStock(argMultimap.getValue(PREFIX_TOTAL_STOCK).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" Note note \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get());","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" // Set\u003cTag\u003e tagList \u003d ParserUtilPrescription.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d new Prescription(name, dosage, frequency, startDate, endDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate, totalStock, note);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" Predicate\u003cPrescription\u003e isValidDates \u003d new IsValidDatesPredicate();","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" if (!isValidDates.test(prescription)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(AddCommand.MESSAGE_INVALID_DATES);","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" return new AddCommand(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ChongWeiJie29":70,"-":42}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"mn/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_DOSAGE \u003d new Prefix(\"d/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_FREQUENCY \u003d new Prefix(\"f/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_START_DATE \u003d new Prefix(\"sd/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_END_DATE \u003d new Prefix(\"ed/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_EXPIRY_DATE \u003d new Prefix(\"exd/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_TOTAL_STOCK \u003d new Prefix(\"ts/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_CONSUMPTION \u003d new Prefix(\"c/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ChongWeiJie29":11,"-":9}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new DeletePrescriptionCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"TeeRenJing":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" * Parses input arguments and creates a new EditPrescriptionCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_START_DATE,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_CONSUMPTION, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_START_DATE,","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" PREFIX_END_DATE, PREFIX_EXPIRY_DATE, PREFIX_TOTAL_STOCK, PREFIX_CONSUMPTION, PREFIX_NOTE);","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_DOSAGE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setDosage(ParserUtil.parseDosage(argMultimap.getValue(PREFIX_DOSAGE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_FREQUENCY).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setFrequency(","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseFrequency(argMultimap.getValue(PREFIX_FREQUENCY).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_START_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setStartDate(","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseStartDate(argMultimap.getValue(PREFIX_START_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_END_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setEndDate(ParserUtil.parseEndDate(argMultimap.getValue(PREFIX_END_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_EXPIRY_DATE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setExpiryDate(","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseExpiryDate(argMultimap.getValue(PREFIX_EXPIRY_DATE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_TOTAL_STOCK).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setTotalStock(","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseTotalStock(argMultimap.getValue(PREFIX_TOTAL_STOCK).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_CONSUMPTION).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setConsumptionCount(","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" ParserUtil.parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" editPrescriptionDescriptor.setNote(ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get()));","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" if (!editPrescriptionDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" return new EditCommand(index, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":54,"-":40}},{"path":"src/main/java/seedu/address/logic/parser/ExitCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new ExitPrescriptionCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class ExitCommandParser implements Parser\u003cExitCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" * Parses the given {@code String} of arguments in the context of the ExitPrescriptionCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" * and returns a ExitPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" public ExitCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" return new ExitCommand();","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":31}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/HelpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":" * Parses input arguments and creates a new HelpCommand object","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class HelpCommandParser implements Parser\u003cHelpCommand\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":" * Parses the given {@code String} of arguments in the context of the HelpPrescriptionCommand","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" * and returns a HelpPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" public HelpCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":29}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" * Parses input arguments and creates a new ListPrescriptionCommand object","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" * Parses the given {@code String} of arguments in the context of the ListPrescriptionCommand","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * and returns a ListPrescriptionCommand object for execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListCommand();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":6,"RoeReRe":24}},{"path":"src/main/java/seedu/address/logic/parser/ListCompletedCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.ListCompletedCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" * Parses input arguments and creates a new ListCompletedCommand object","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"public class ListCompletedCommandParser implements Parser\u003cListCompletedCommand\u003e {","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" * Parses the given {@code String} of arguments in the context of the ListCompletedCommand","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * and returns a ListCompletedCommand object for execution.","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" public ListCompletedCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" ListCompletedCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" return new ListCompletedCommand();","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"jingyu987":30}},{"path":"src/main/java/seedu/address/logic/parser/ListTodayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses input arguments and creates a new ListTodayCommand object","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandParser implements Parser\u003cListTodayCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses the given {@code String} of arguments in the context of the ListTodayCommand","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * and returns a ListTodayCommand object for execution.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" public ListTodayCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListTodayCommand();","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":18,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Collection;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Dosage} into a {@code Dosage}.","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code dosage} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public static Dosage parseDosage(String dosage) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(dosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedDosage \u003d dosage.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Dosage.isValidDosage(trimmedDosage)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return new Dosage(trimmedDosage);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Frequency} into a {@code Frequency}.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code frequency} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public static Frequency parseFrequency(String frequency) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(frequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedFrequency \u003d frequency.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Frequency.isValidFrequency(trimmedFrequency)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" return new Frequency(trimmedFrequency);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String StartDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code startDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseStartDate(String startDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(startDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedStartDate \u003d startDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedStartDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedStartDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String EndDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code endDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseEndDate(String endDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(endDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedEndDate \u003d endDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedEndDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedEndDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String ExpiryDate} into a {@code Date}.","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code expiryDate} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" public static Date parseExpiryDate(String expiryDate) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(expiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedExpiryDate \u003d expiryDate.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(trimmedExpiryDate)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" return new Date(trimmedExpiryDate);","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String TotalStock} into a {@code Stock}.","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code totalStock} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public static Stock parseTotalStock(String totalStock) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(totalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedTotalStock \u003d totalStock.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Stock.isValidStock(trimmedTotalStock)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" throw new ParseException(Stock.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" return new Stock(trimmedTotalStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":" * Parses a {@code String ConsumptionCount} into a {@code ConsumptionCount}.","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"shyanyong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"shyanyong"},"content":" * @throws ParseException if the given {@code consumptionCount} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"shyanyong"},"content":" public static ConsumptionCount parseConsumptionCount(String consumptionCount) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"shyanyong"},"content":" requireNonNull(consumptionCount);","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"shyanyong"},"content":" String trimmedConsumptionCount \u003d consumptionCount.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"shyanyong"},"content":" if (!ConsumptionCount.isValidConsumptionCount(trimmedConsumptionCount)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"jingyu987"},"content":" return new ConsumptionCount(trimmedConsumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" * Parses a {@code String Note} into a {@code Note}.","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws ParseException if the given {@code note} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" public static Note parseNote(String note) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(note);","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" String trimmedNote \u003d note.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Note.isValidNote(trimmedNote)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"shyanyong"},"content":" throw new ParseException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" return new Note(trimmedNote);","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" // /**","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" // * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" // * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" // *","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" // * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" // public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" // requireNonNull(tag);","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" // String trimmedTag \u003d tag.trim();","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" // if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" // throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" // return new Tag(trimmedTag);","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" // /**","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" // * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" // public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" // requireNonNull(tags);","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" // final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":" // for (String tagName : tags) {","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":" // tagSet.add(parseTag(tagName));","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" // return tagSet;","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jingyu987":1,"shyanyong":12,"ChongWeiJie29":105,"-":83}},{"path":"src/main/java/seedu/address/logic/parser/PrescriptionListParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.ListCompletedCommand;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionListParser {","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":" private static final java.util.logging.Logger logger \u003d LogsCenter.getLogger(PrescriptionListParser.class);","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" final java.util.regex.Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" case ListTodayCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return new ListTodayCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" case TakeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" return new TakeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" case UntakeCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" return new UntakeCommandParser().parse(arguments);","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" return new ExitCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":" return new HelpCommandParser().parse(arguments);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" case ListCompletedCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" return new ListCompletedCommandParser().parse(arguments);","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"TeeRenJing":7,"jingyu987":6,"ChongWeiJie29":10,"-":65}},{"path":"src/main/java/seedu/address/logic/parser/TakeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * Parses input arguments and creates a new TakePrescriptionCommand object","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandParser implements Parser\u003cTakeCommand\u003e {","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Parses the given arguments to create a TakePrescriptionCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" * @param args User input representing the command.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" * @return A TakePrescriptionCommand for taking a specified number of doses from a prescription.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public TakeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CONSUMPTION)","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d ParserUtil","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d Integer.parseInt(consumptionCount.getConsumptionCount());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" return new TakeCommand(name, dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":43,"ChongWeiJie29":9}},{"path":"src/main/java/seedu/address/logic/parser/UntakeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" * Parses input arguments and creates a new UntakePrescriptionCommand object","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandParser implements Parser\u003cUntakeCommand\u003e {","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" * Parses the given arguments to create an UntakePrescriptionCommand.","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" * @param args User input representing the command.","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" * @return An UntakePrescriptionCommand for untaking a specified number of doses from a prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public UntakeCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CONSUMPTION)","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d ParserUtil","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .parseConsumptionCount(argMultimap.getValue(PREFIX_CONSUMPTION).get());","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d Integer.parseInt(consumptionCount.getConsumptionCount());","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" return new UntakeCommand(name, dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":52}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * The API of the ModelPrescription component.","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" Predicate\u003cPrescription\u003e PREDICATE_SHOW_ALL_PRESCRIPTIONS \u003d unused -\u003e true;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the user prefs\u0027 prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescriptionListFilePath(Path prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the user prefs\u0027 completed prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the user prefs\u0027 completed prescription list file path.","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces prescription list data with the data in {@code prescriptionList}.","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescriptionList(ReadOnlyPrescriptionList prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns the PrescriptionList */","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code prescription} exists in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" boolean hasPrescription(Prescription prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" * Deletes the given prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" void deletePrescription(Prescription target);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds the given prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescription} must not already exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" void addPrescription(Prescription prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} with {@code editedPrescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" void setPrescription(Prescription target, Prescription editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered prescription list */","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredPrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a prescription with the same name as {@code prescriptionName}","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription getPrescriptionByName(Name prescriptionName) throws CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates the filter of the filtered prescription list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces completed prescription list data with the data in {@code completedPrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns the CompletedPrescriptionList */","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyPrescriptionList getCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code completedPrescription}","lastModifiedDate":"2023-10-23"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * exists in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" boolean hasCompletedPrescription(Prescription completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" * Deletes the given prescription.","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" void deleteCompletedPrescription(Prescription target);","lastModifiedDate":"2023-10-23"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds the given completed prescription.","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" * {@codecompletedPprescription} must not already exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" void addCompletedPrescription(Prescription completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} with {@code editedPrescription}.","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the completed prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" void setCompletedPrescription(Prescription target, Prescription editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" /** Returns an unmodifiable view of the filtered completed prescription list */","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns a prescription with the same name as {@code completedPrescriptionName}","lastModifiedDate":"2023-10-23"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription getCompletedPrescriptionByName(Name completedPrescriptionName) throws CommandException;","lastModifiedDate":"2023-10-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates the filter of the filtered completed prescription list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2023-10-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ChongWeiJie29":83,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents the in-memory model of the prescription list data.","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionList prescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private final PrescriptionList completedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private final FilteredList\u003cPrescription\u003e filteredPrescriptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final FilteredList\u003cPrescription\u003e filteredCompletedPrescriptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" * Initializes a ModelManagerPrescription with the given prescriptionList and userPrefs.","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" public ModelManager(ReadOnlyPrescriptionList prescriptionList, ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(prescriptionList, userPrefs);","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Initializing with prescription list: \" + prescriptionList","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" + \", completed prescription list: \" + completedPrescriptionList","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionList \u003d new PrescriptionList(prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionList \u003d new PrescriptionList(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" filteredPrescriptions \u003d new FilteredList\u003c\u003e(this.prescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" filteredCompletedPrescriptions \u003d new FilteredList\u003c\u003e(this.completedPrescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" this(new PrescriptionList(), new PrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefsPrescription \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" return userPrefs.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" return userPrefs.getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setCompletedPrescriptionListFilePath(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PrescriptionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionList(ReadOnlyPrescriptionList prescriptionList) {","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionList.resetData(prescriptionList);","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList.hasPrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" public void deletePrescription(Prescription target) {","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.removePrescription(target);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getPrescriptionByName(Name prescriptionName) throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionName);","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription prescription : prescriptionList.getPrescriptionList()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getName().equals(prescriptionName)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" return prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Prescription List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the list of {@code Prescription} backed by the internal list of","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code versionedPrescriptionList}","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" return filteredPrescriptions;","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" filteredPrescriptions.setPredicate(predicate);","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d CompletedPrescriptionList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) {","lastModifiedDate":"2023-10-23"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionList.resetData(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionList.hasPrescription(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" public void deleteCompletedPrescription(Prescription target) {","lastModifiedDate":"2023-10-23"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.removePrescription(target);","lastModifiedDate":"2023-10-23"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" public void addCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.addPrescription(completedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" updateFilteredCompletedPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getCompletedPrescriptionByName(Name completedPrescriptionName) throws CommandException {","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionName);","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription completedPrescription : completedPrescriptionList.getPrescriptionList()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":205,"author":{"gitId":"ChongWeiJie29"},"content":" if (completedPrescription.getName().equals(completedPrescriptionName)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":206,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":207,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":208,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":209,"author":{"gitId":"ChongWeiJie29"},"content":" throw new CommandException(TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Completed Prescription List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the list of {@code Prescription} backed by the internal list of","lastModifiedDate":"2023-10-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code versionedPrescriptionList}","lastModifiedDate":"2023-10-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":" return filteredCompletedPrescriptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":224,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":226,"author":{"gitId":"ChongWeiJie29"},"content":" filteredCompletedPrescriptions.setPredicate(predicate);","lastModifiedDate":"2023-10-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":236,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList.equals(otherModelManager.prescriptionList)","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 completedPrescriptionList.equals(otherModelManager.completedPrescriptionList)","lastModifiedDate":"2023-10-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":244,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 filteredPrescriptions.equals(otherModelManager.filteredPrescriptions)","lastModifiedDate":"2023-10-23"},{"lineNumber":245,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 filteredCompletedPrescriptions.equals(otherModelManager.filteredCompletedPrescriptions);","lastModifiedDate":"2023-10-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":119,"-":129}},{"path":"src/main/java/seedu/address/model/PrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.UniquePrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * Wraps all data at the prescription-list level","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Duplicates are not allowed (by .isSamePrescription comparison)","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionList implements ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private final UniquePrescriptionList prescriptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * among constructors.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList() {}","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a PrescriptionList using the Prescriptions in the {@code toBeCopied}","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList(ReadOnlyPrescriptionList toBeCopied) {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" this();","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" resetData(toBeCopied);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" //// list overwrite operations","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the contents of the prescription list with {@code prescriptions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescriptions} must not contain duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.setPrescriptions(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" * Resets the existing data of this {@code PrescriptionList} with {@code newData}.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" public void resetData(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(newData);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" setPrescriptions(newData.getPrescriptionList());","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" //// prescription-level operations","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a prescription with the same identity as {@code prescription} exists in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.contains(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds a prescription to the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must not already exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription p) {","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.add(p);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the given prescription {@code target} in the list with {@code editedPrescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as another","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" * existing prescription in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.setPrescription(target, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" * Removes {@code key} from this {@code PrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code key} must exist in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void removePrescription(Prescription key) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.remove(key);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" //// util methods","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"prescriptions\", prescriptions)","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getPrescriptionList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof PrescriptionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList otherPrescriptionList \u003d (PrescriptionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.equals(otherPrescriptionList.prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptions.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":131}},{"path":"src/main/java/seedu/address/model/ReadOnlyPrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Unmodifiable view of an prescription list.","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"public interface ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns an unmodifiable view of the prescriptions list.","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * This list will not contain any duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" ObservableList\u003cPrescription\u003e getPrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChongWeiJie29":2,"-":15}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private Path prescriptionListFilePath \u003d Paths.get(\"data\" , \"prescriptionList.json\");","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private Path completedPrescriptionListFilePath \u003d Paths.get(\"data\", \"completedPrescriptionList.json\");","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code UserPrefsPrescriptionPrescription} with default values.","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code UserPrefsPrescription} with the prefs in {@code userPrefs}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Resets the existing data of this {@code UserPrefsPrescription} with {@code newUserPrefsPrescription}.","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefsPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(newUserPrefsPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" setGuiSettings(newUserPrefsPrescription.getGuiSettings());","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" setPrescriptionListFilePath(newUserPrefsPrescription.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" setCompletedPrescriptionListFilePath(newUserPrefsPrescription.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListFilePath;","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionListFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionListFilePath \u003d prescriptionListFilePath;","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListFilePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionListFilePath \u003d completedPrescriptionListFilePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" UserPrefs otherUserPrefsPrescription \u003d (UserPrefs) other;","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" return guiSettings.equals(otherUserPrefsPrescription.guiSettings)","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 prescriptionListFilePath.equals(otherUserPrefsPrescription.prescriptionListFilePath)","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 completedPrescriptionListFilePath.equals(","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" otherUserPrefsPrescription.completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" return Objects.hash(guiSettings, prescriptionListFilePath, completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(\"\\nLocal prescription list data file location : \" + prescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(\"\\nLocal completed prescription list data file location : \" + completedPrescriptionListFilePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":30,"-":72}},{"path":"src/main/java/seedu/address/model/prescription/ConsumptionCount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" * Represents a Prescription\u0027s consumption count in the prescription list.","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"public class ConsumptionCount {","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" \"ConsumptionCount should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" private String consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" * Constructs a {@code ConsumptionCount object}.","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" * @param consumptionCount The initial consumption count as a string.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public ConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" checkArgument(isValidConsumptionCount(consumptionCount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" * Increments the consumption count by the specified amount.","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" * @param count The amount to increment the consumption count.","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" public void incrementCount(int count) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" int currentCount \u003d Integer.parseInt(this.consumptionCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" currentCount +\u003d count;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d Integer.toString(currentCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" * Decrements the consumption count by the specified amount.","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" * @param count The amount to increment the consumption count.","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" public void decrementCount(int count) {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" int currentCount \u003d Integer.parseInt(this.consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" currentCount -\u003d count;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d Integer.toString(currentCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" public void setConsumptionCount(String count) {","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d count;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" public String getConsumptionCount() {","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" return this.consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" * Returns true if a given string is a valid dosage.","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" public static boolean isValidConsumptionCount(String test) {","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" return consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" if (!(other instanceof ConsumptionCount)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount otherConsumptionCount \u003d (ConsumptionCount) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" return consumptionCount.equals(otherConsumptionCount.consumptionCount);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" return consumptionCount.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":88}},{"path":"src/main/java/seedu/address/model/prescription/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Prescription\u0027s date in the prescription list.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public class Date {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" \"Dates should be in the dd/mm/yyyy format, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the date must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"([0-9]{2})/([0-9]{2})/([0-9]{4})\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullDate;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @param date A valid date.","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public Date(String date) {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(date);","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" fullDate \u003d date;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" * Returns the date in LocalDate format.","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" public LocalDate getDate() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" return LocalDate.parse(fullDate, DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDate.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"shyanyong":10,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Dosage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a prescription\u0027s dosage in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDosage(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Dosage {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Dosages should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullDosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Dosage}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param dosage A valid dosage.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Dosage(String dosage) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(dosage);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidDosage(dosage), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullDosage \u003d dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid dosage.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidDosage(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Dosage)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage otherDosage \u003d (Dosage) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage.equals(otherDosage.fullDosage);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return fullDosage.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Frequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s frequency in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFrequency(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Frequency {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Frequencies should only be one of the following (Daily / Weekly / Monthly), and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public static final String VALIDATION_REGEX \u003d \"(Daily|Weekly|Monthly)\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullFrequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Frequency}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param frequency A valid frequency.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Frequency(String frequency) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(frequency);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidFrequency(frequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullFrequency \u003d frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid frequency.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidFrequency(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" public String getFrequency() {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" return fullFrequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Frequency)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency otherFrequency \u003d (Frequency) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency.equals(otherFrequency.fullFrequency);","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return fullFrequency.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"shyanyong":4,"ChongWeiJie29":65,"RoeReRe":1}},{"path":"src/main/java/seedu/address/model/prescription/IsTodayPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is today.","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"public class IsTodayPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" LocalDate startDate \u003d prescription.getStartDate().getDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cDate\u003e endDate \u003d prescription.getEndDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" long daysBetween \u003d ChronoUnit.DAYS.between(startDate, today);","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" if ((prescription.getEndDate().isPresent()","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 today.isAfter(endDate.get().getDate()))","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" || today.isBefore(startDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cFrequency\u003e frequency \u003d prescription.getFrequency();","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" if (frequency.isEmpty()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" switch (frequency.get().toString()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" case \"Daily\":","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" case \"Weekly\":","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" return daysBetween % 7 \u003d\u003d 0;","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" case \"Monthly\":","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" return daysBetween % 30 \u003d\u003d 0;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" default:","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"shyanyong":31,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/IsValidDatesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is valid.","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"public class IsValidDatesPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":" LocalDate startDate \u003d prescription.getStartDate().getDate();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" LocalDate endDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d prescription.getEndDate().get().getDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" LocalDate expiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d prescription.getExpiryDate().get().getDate();","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" if (endDate !\u003d null \u0026\u0026 expiryDate !\u003d null) {","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" return startDate.isBefore(endDate) \u0026\u0026 endDate.isBefore(expiryDate);","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"shyanyong":16,"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a medication\u0027s name in the prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullName;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":3,"-":63}},{"path":"src/main/java/seedu/address/model/prescription/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" * Tests that a {@code Prescription}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(prescription.getName().toString(), keyword));","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":5,"-":39}},{"path":"src/main/java/seedu/address/model/prescription/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Note {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Notes should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private final String fullNote;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param note A valid note.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Note(String note) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(note);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullNote \u003d note;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote.equals(otherNote.fullNote);","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return fullNote.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":66}},{"path":"src/main/java/seedu/address/model/prescription/Prescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Collections;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"// import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Prescription in the prescription list.","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"public class Prescription {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" // Identity fields","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" private final Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" // Data fields","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDosage\u003e dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cFrequency\u003e frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" private final Date startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDate\u003e endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cDate\u003e expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cStock\u003e totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" private final ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" private final Optional\u003cNote\u003e note;","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" // private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" * Constructor for prescription without consumption count and isCompleted.","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription(Name name, Dosage dosage, Frequency frequency, Date startDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" Date endDate, Date expiryDate, Stock totalStock, Note note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" this(name, dosage, frequency, startDate, endDate, expiryDate,","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" totalStock, new ConsumptionCount(\"0\"), false, note);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription(Name name, Dosage dosage, Frequency frequency, Date startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" Date endDate, Date expiryDate, Stock totalStock, ConsumptionCount consumptionCount,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" Boolean isCompleted, Note note) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d Optional.ofNullable(dosage);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d Optional.ofNullable(frequency);","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d Optional.ofNullable(endDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d Optional.ofNullable(expiryDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d Optional.ofNullable(totalStock);","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d Optional.ofNullable(note);","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public Name getName() {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return name;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDosage\u003e getDosage() {","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" return dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cFrequency\u003e getFrequency() {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" return frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public Date getStartDate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" return startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDate\u003e getEndDate() {","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" return endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cDate\u003e getExpiryDate() {","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" return expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cStock\u003e getTotalStock() {","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" return totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" public ConsumptionCount getConsumptionCount() {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" return consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" public Boolean getIsCompleted() {","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" return isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" return note;","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":" public void setIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"jingyu987"},"content":" // /","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" // * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" // * if modification is attempted.","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" // */","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" // public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" // return Collections.unmodifiableSet(tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if both prescriptions have the same name.","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" * This defines a weaker notion of equality between two prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean isSamePrescription(Prescription otherPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" if (otherPrescription \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" return otherPrescription !\u003d null","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 otherPrescription.getName().equals(getName())","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 otherPrescription.getStartDate().equals(getStartDate());","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"jingyu987"},"content":" * Returns true if the prescription is past the end date.","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" public boolean isEnded() {","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"jingyu987"},"content":" if (endDate.isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"jingyu987"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"jingyu987"},"content":" LocalDate prescriptionEndDate \u003d endDate.get().getDate();","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"jingyu987"},"content":" return currentDate.isAfter(prescriptionEndDate);","lastModifiedDate":"2023-10-23"},{"lineNumber":137,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"jingyu987"},"content":" return false;","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":140,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if both prescriptions have the same identity and data fields.","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" * This defines a stronger notion of equality between two prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Prescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription otherPrescription \u003d (Prescription) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"ChongWeiJie29"},"content":" return name.equals(otherPrescription.name)","lastModifiedDate":"2023-10-12"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 dosage.equals(otherPrescription.dosage)","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 frequency.equals(otherPrescription.frequency)","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 startDate.equals(otherPrescription.startDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 endDate.equals(otherPrescription.endDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 expiryDate.equals(otherPrescription.expiryDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 totalStock.equals(otherPrescription.totalStock)","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"jingyu987"},"content":" \u0026\u0026 consumptionCount.equals(otherPrescription.consumptionCount)","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 isCompleted.equals(otherPrescription.isCompleted)","lastModifiedDate":"2023-10-21"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" \u0026\u0026 note.equals(otherPrescription.note);","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" return Objects.hash(name, dosage, frequency, startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" endDate, expiryDate, totalStock, consumptionCount, isCompleted, note);","lastModifiedDate":"2023-10-21"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-12"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"dosage\", dosage)","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"frequency\", frequency)","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"startDate\", startDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"endDate\", endDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"expiryDate\", expiryDate)","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"totalStock\", totalStock)","lastModifiedDate":"2023-10-12"},{"lineNumber":186,"author":{"gitId":"jingyu987"},"content":" .add(\"consumptionCount\", consumptionCount)","lastModifiedDate":"2023-10-15"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"isCompleted\", isCompleted)","lastModifiedDate":"2023-10-21"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" .add(\"note\", note)","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":35,"ChongWeiJie29":156}},{"path":"src/main/java/seedu/address/model/prescription/SameNamePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" * Tests that a {@code Prescription}\u0027s {@code Date} is today.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"public class SameNamePredicate implements Predicate\u003cPrescription\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" private final Name targetName;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" public SameNamePredicate(Name targetName) {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" public boolean test(Prescription prescription) {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" return prescription.getName().equals(targetName);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":20}},{"path":"src/main/java/seedu/address/model/prescription/Stock.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a Person\u0027s stock in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStock(String)}","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"public class Stock {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" \"Stocks should only contain numeric characters, and it should not be blank.\";","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /*","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" private String fullStock;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code Stock}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * @param stock A valid stock.","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public Stock(String stock) {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(stock);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" checkArgument(isValidStock(stock), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" fullStock \u003d stock;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if a given string is a valid stock.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static boolean isValidStock(String test) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" public void setFullStock(String fullStock) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d fullStock;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" * increment the count of stock.","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" * @param count The count to increment by.","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" public void incrementCount(int count) {","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(this.fullStock) + count;","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d Integer.toString(newStock);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" * Decrements the count of stock.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" * @param count The count to decrement by.","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" public void decrementCount(int count) {","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(this.fullStock) - count;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" this.fullStock \u003d Integer.toString(newStock);","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof Stock)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" Stock otherStock \u003d (Stock) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock.equals(otherStock.fullStock);","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" return fullStock.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":23,"ChongWeiJie29":65}},{"path":"src/main/java/seedu/address/model/prescription/UniquePrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.exceptions.PrescriptionNotFoundException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * A list of prescriptions that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * A prescription is considered unique by comparing using","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code Prescription#isSamePrescription(Prescription)}. As such, adding and updating of","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * prescriptions uses Prescription#isSamePrescription(Prescription) for equality so as to ensure","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * that the prescription being added or updated is unique in terms of identity in the","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * UniquePrescriptionList. However, the removal of a prescription uses Prescription#equals(Object)","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * so as to ensure that the prescription with exactly the same fields will be removed.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * @see Prescription#isSamePrescription(Prescription)","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"public class UniquePrescriptionList implements Iterable\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final ObservableList\u003cPrescription\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private final ObservableList\u003cPrescription\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if the list contains an equivalent prescription as the given argument.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean contains(Prescription toCheck) {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.stream().anyMatch(toCheck::isSamePrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * Adds a prescription to the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must not already exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public void add(Prescription toAdd) {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.add(toAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the prescription {@code target} in the list with {@code editedPrescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription identity of {@code editedPrescription} must not be the same as","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" * another existing prescription in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(target, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" throw new PrescriptionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" if (!target.isSamePrescription(editedPrescription) \u0026\u0026 contains(editedPrescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.set(index, editedPrescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" * Removes the equivalent prescription from the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" * The prescription must exist in the list.","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public void remove(Prescription toRemove) {","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" throw new PrescriptionNotFoundException();","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(UniquePrescriptionList replacement) {","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(replacement);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" * Replaces the contents of this list with {@code prescriptions}.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code prescriptions} must not contain duplicate prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptions(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" requireAllNonNull(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" if (!prescriptionsAreUnique(prescriptions)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DuplicatePrescriptionException();","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" internalList.setAll(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" public Iterator\u003cPrescription\u003e iterator() {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.iterator();","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" if (!(other instanceof UniquePrescriptionList)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" UniquePrescriptionList otherUniquePrescriptionList \u003d (UniquePrescriptionList) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.equals(otherUniquePrescriptionList.internalList);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.hashCode();","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" return internalList.toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns true if {@code prescriptions} contains only unique prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" private boolean prescriptionsAreUnique(List\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" for (int i \u003d 0; i \u003c prescriptions.size() - 1; i++) {","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" for (int j \u003d i + 1; j \u003c prescriptions.size(); j++) {","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptions.get(i).isSamePrescription(prescriptions.get(j))) {","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":153}},{"path":"src/main/java/seedu/address/model/prescription/exceptions/DuplicatePrescriptionException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":" * Signals that the operation will result in duplicate Prescriptions (Prescriptions","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":" * are considered duplicates if they have the same identity).","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"public class DuplicatePrescriptionException extends RuntimeException {","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":" public DuplicatePrescriptionException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":" super(\"Operation would result in duplicate prescriptions\");","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":11}},{"path":"src/main/java/seedu/address/model/prescription/exceptions/PrescriptionNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.model.prescription.exceptions;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":" * Signals that the operation is unable to find the specified prescription.","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionNotFoundException extends RuntimeException {}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" * Contains utility methods for populating {@code PrescriptionList} with sample data.","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static Prescription[] getSamplePrescriptions() {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription[] {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Aspirin\"), new Dosage(\"1\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"25/12/2023\"), new Date(\"01/12/2024\"),","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"100\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Propranolol\"), new Dosage(\"4\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/08/2023\"), new Date(\"20/01/2024\"), new Date(\"02/07/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"500\"), new Note(\"Take after food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Ergotamine Tartrate\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"10/11/2025\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"50\"), new Note(\"May cause drowsiness\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Naproxen Sodium\"), new Dosage(\"2\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"50\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Zomig Rapimelt\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2023\"), new Date(\"12/06/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"20\"), new Note(\"Allow to dissolve under tongue\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" new Prescription(new Name(\"Omeprazole\"), new Dosage(\"2\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" new Date(\"01/10/2023\"), new Date(\"01/11/2024\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" new Stock(\"200\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public static ReadOnlyPrescriptionList getSamplePrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList samplePrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription samplePrescription : getSamplePrescriptions()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" samplePrescriptionList.addPrescription(samplePrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" return samplePrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public static Prescription[] getSampleCompletedPrescriptions() {","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription[] {","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Aspirin\"), new Dosage(\"1\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"01/01/2023\"), new Date(\"01/12/2024\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"100\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Propranolol\"), new Dosage(\"4\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/08/2023\"), new Date(\"01/01/2023\"), new Date(\"02/07/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"500\"), new Note(\"Take after food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Ergotamine Tartrate\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"50\"), new Note(\"May cause drowsiness\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Naproxen Sodium\"), new Dosage(\"2\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"50\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Zomig Rapimelt\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"12/06/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"20\"), new Note(\"Allow to dissolve under tongue\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" new Prescription(new Name(\"Omeprazole\"), new Dosage(\"2\"), new Frequency(\"Daily\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" new Date(\"01/10/2023\"), new Date(\"01/01/2023\"), new Date(\"02/11/2026\"),","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" new Stock(\"200\"), new Note(\"Take before food\")),","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" public static ReadOnlyPrescriptionList getSampleCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList sampleCompletedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" for (Prescription sampleCompletedPrescription : getSampleCompletedPrescriptions()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" sampleCompletedPrescriptionList.addPrescription(sampleCompletedPrescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" return sampleCompletedPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ChongWeiJie29":50,"RoeReRe":16,"-":27}},{"path":"src/main/java/seedu/address/storage/CompletedPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a storage for the completed version of {@link seedu.address.model.PrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public interface CompletedPrescriptionListStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns CompletedPrescriptionList data as a {@link ReadOnlyPrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" * @see #getCompletedPrescriptionListFilePath()","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Saves the given {@link ReadOnlyPrescriptionList} to the storage.","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * @param completedPrescriptionList cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" * @see #saveCompletedPrescriptionList(ReadOnlyPrescriptionList)","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"jingyu987":2,"ChongWeiJie29":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPrescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.HashSet;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.stream.Collectors;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" * Jackson-friendly version of {@link Prescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonAdaptedPrescription {","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Prescription\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private final String name;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private String dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private String frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private final String startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" private String endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private String expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private String totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private final String consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" private String note;","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" // private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonAdaptedPrescription} with the given prescription details.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonAdaptedPrescription(@JsonProperty(\"name\") String name, @JsonProperty(\"dosage\") String dosage,","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"frequency\") String frequency, @JsonProperty(\"startDate\") String startDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"endDate\") String endDate, @JsonProperty(\"expiryDate\") String expiryDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"totalStock\") String totalStock, @JsonProperty(\"consumptionCount\") String consumptionCount,","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"isCompleted\") Boolean isCompleted,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" @JsonProperty(\"note\") String note) {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d note;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" // if (tags !\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" // this.tags.addAll(tags);","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code Prescription} into this class for Jackson use.","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonAdaptedPrescription(Prescription source) {","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" name \u003d source.getName().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d source.getDosage().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d source.getFrequency().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" startDate \u003d source.getStartDate().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d source.getEndDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d source.getExpiryDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d source.getTotalStock().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" consumptionCount \u003d source.getConsumptionCount().toString();","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d source.getIsCompleted();","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" if (source.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d source.getNote().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" // tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" // .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" // .collect(Collectors.toList()));","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this Jackson-friendly adapted prescription object into the model\u0027s {@code Prescription} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted prescription.","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" // for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" // personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" Dosage modelDosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" if (dosage \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" modelDosage \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Dosage.isValidDosage(dosage)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" modelDosage \u003d new Dosage(dosage);","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency modelFrequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" if (frequency \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" modelFrequency \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Frequency.isValidFrequency(frequency)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" modelFrequency \u003d new Frequency(frequency);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" if (startDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName()));","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" if (!Date.isValidDate(startDate)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" final Date modelStartDate \u003d new Date(startDate);","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" Date modelEndDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" if (endDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" modelEndDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Date.isValidDate(endDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" modelEndDate \u003d new Date(endDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" Date modelExpiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" if (expiryDate \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" modelExpiryDate \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Date.isValidDate(expiryDate)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":156,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":157,"author":{"gitId":"ChongWeiJie29"},"content":" modelExpiryDate \u003d new Date(expiryDate);","lastModifiedDate":"2023-10-21"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" Stock modelTotalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":161,"author":{"gitId":"ChongWeiJie29"},"content":" if (totalStock \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" modelTotalStock \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Stock.isValidStock(totalStock)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Stock.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" modelTotalStock \u003d new Stock(totalStock);","lastModifiedDate":"2023-10-21"},{"lineNumber":167,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"jingyu987"},"content":" if (consumptionCount \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"jingyu987"},"content":" final ConsumptionCount modelConsumptionCount \u003d new ConsumptionCount(consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":173,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":174,"author":{"gitId":"jingyu987"},"content":" if (isCompleted \u003d\u003d null) {","lastModifiedDate":"2023-10-20"},{"lineNumber":175,"author":{"gitId":"jingyu987"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName()));","lastModifiedDate":"2023-10-20"},{"lineNumber":176,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"jingyu987"},"content":" final Boolean modelIsCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" Note modelNote;","lastModifiedDate":"2023-10-21"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" modelNote \u003d null;","lastModifiedDate":"2023-10-21"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" } else if (!Note.isValidNote(note)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" modelNote \u003d new Note(note);","lastModifiedDate":"2023-10-21"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription(modelName, modelDosage, modelFrequency, modelStartDate,","lastModifiedDate":"2023-10-12"},{"lineNumber":190,"author":{"gitId":"jingyu987"},"content":" modelEndDate, modelExpiryDate, modelTotalStock, modelConsumptionCount, modelIsCompleted,","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"jingyu987"},"content":" modelNote);","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":19,"ChongWeiJie29":175}},{"path":"src/main/java/seedu/address/storage/JsonCompletedPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * A class to access CompletedPrescriptionList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class JsonCompletedPrescriptionListStorage implements CompletedPrescriptionListStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonCompletedPrescriptionListStorage.class);","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private Path filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonCompletedPrescriptionListStorage(Path filePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" return filePath;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" return readCompletedPrescriptionList(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #readCompletedPrescriptionList()}.","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cJsonSerializablePrescriptionList\u003e jsonCompletedPrescriptionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" filePath, JsonSerializablePrescriptionList.class);","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" if (!jsonCompletedPrescriptionList.isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" try {","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.of(jsonCompletedPrescriptionList.get().toModelType());","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" saveCompletedPrescriptionList(completedPrescriptionList, filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #saveCompletedPrescriptionList(ReadOnlyPrescriptionList)}.","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-23"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(completedPrescriptionList);","lastModifiedDate":"2023-10-23"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePrescriptionList(completedPrescriptionList), filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"ChongWeiJie29":81}},{"path":"src/main/java/seedu/address/storage/JsonPrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" * A class to access PrescriptionList data stored as a json file on the hard disk.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"public class JsonPrescriptionListStorage implements PrescriptionListStorage {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonPrescriptionListStorage.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" private Path filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonPrescriptionListStorage(Path filePath) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" return filePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" return readPrescriptionList(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #readPrescriptionList()}.","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cJsonSerializablePrescriptionList\u003e jsonPrescriptionList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" filePath, JsonSerializablePrescriptionList.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" if (!jsonPrescriptionList.isPresent()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" return Optional.of(jsonPrescriptionList.get().toModelType());","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException {","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" savePrescriptionList(prescriptionList, filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" * Similar to {@link #savePrescriptionList(ReadOnlyPrescriptionList)}.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescriptionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePrescriptionList(prescriptionList), filePath);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":80}},{"path":"src/main/java/seedu/address/storage/JsonSerializableCompletedPrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * An Immutable PrescriptionList that is serializable to JSON format.","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"@JsonRootName(value \u003d \"prescriptionlist\")","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonSerializableCompletedPrescriptionList {","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"Prescriptions list \"","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" + \"contains duplicate prescription(s).\";","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final List\u003cJsonAdaptedPrescription\u003e prescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonSerializablePrescriptionList} with the given prescriptions.","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializableCompletedPrescriptionList(","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"completedPrescriptions\") List\u003cJsonAdaptedPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.addAll(prescriptions);","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code ReadOnlyPrescriptionList} into this class for Jackson use.","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePrescriptionList}.","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializableCompletedPrescriptionList(ReadOnlyPrescriptionList source) {","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.addAll(source.getPrescriptionList().stream().map(","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" JsonAdaptedPrescription::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this prescription list into the model\u0027s {@code PrescriptionList} object.","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" for (JsonAdaptedPrescription jsonAdaptedPrescription : prescriptions) {","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d jsonAdaptedPrescription.toModelType();","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptionList.hasPrescription(prescription)) {","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-23"}],"authorContributionMap":{"ChongWeiJie29":63}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePrescriptionList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * An Immutable PrescriptionList that is serializable to JSON format.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"@JsonRootName(value \u003d \"prescriptionlist\")","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":"class JsonSerializablePrescriptionList {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String MESSAGE_DUPLICATE_PRESCRIPTION \u003d \"Prescriptions list \"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" + \"contains duplicate prescription(s).\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" private final List\u003cJsonAdaptedPrescription\u003e prescriptions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" * Constructs a {@code JsonSerializablePrescriptionList} with the given prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonCreator","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializablePrescriptionList(","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @JsonProperty(\"prescriptions\") List\u003cJsonAdaptedPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptions.addAll(prescriptions);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts a given {@code ReadOnlyPrescriptionList} into this class for Jackson use.","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public JsonSerializablePrescriptionList(ReadOnlyPrescriptionList source) {","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptions.addAll(source.getPrescriptionList().stream().map(","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" JsonAdaptedPrescription::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" * Converts this prescription list into the model\u0027s {@code PrescriptionList} object.","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionList toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" for (JsonAdaptedPrescription jsonAdaptedPrescription : prescriptions) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d jsonAdaptedPrescription.toModelType();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescriptionList.hasPrescription(prescription)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":63}},{"path":"src/main/java/seedu/address/storage/PrescriptionListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":" * Represents a storage for {@link seedu.address.model.PrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"public interface PrescriptionListStorage {","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns PrescriptionList data as a {@link ReadOnlyPrescriptionList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #getPrescriptionListFilePath()","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" * Saves the given {@link ReadOnlyPrescriptionList} to the storage.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" * @param prescriptionList cannot be null.","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" * @see #savePrescriptionList(ReadOnlyPrescriptionList)","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":45}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * API of the StoragePrescription component","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"public interface Storage extends PrescriptionListStorage, CompletedPrescriptionListStorage, UserPrefsStorage {","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" Path getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" Path getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException;","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ChongWeiJie29":14,"-":27}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" * Manages storage of PrescriptionList data in local storage.","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" private PrescriptionListStorage prescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private CompletedPrescriptionListStorage completedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code StorageManagerPrescription} with the given {@code PrescriptionListStorage}","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" * and {@code UserPrefStorage}.","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public StorageManager(PrescriptionListStorage prescriptionListStorage,","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" CompletedPrescriptionListStorage completedPrescriptionListStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescriptionListStorage \u003d prescriptionListStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" this.completedPrescriptionListStorage \u003d completedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PrescriptionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListStorage.getPrescriptionListFilePath();","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":" return readPrescriptionList(prescriptionListStorage.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListStorage.readPrescriptionList(filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList) throws IOException {","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" savePrescriptionList(prescriptionList, prescriptionListStorage.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath) throws IOException {","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListStorage.savePrescriptionList(prescriptionList, filePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d CompletedPrescriptionList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListStorage.getCompletedPrescriptionListFilePath();","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList() throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" return readCompletedPrescriptionList(completedPrescriptionListStorage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" public Optional\u003cReadOnlyPrescriptionList\u003e readCompletedPrescriptionList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-10-23"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" return completedPrescriptionListStorage.readCompletedPrescriptionList(filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" saveCompletedPrescriptionList(completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage.getCompletedPrescriptionListFilePath());","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" public void saveCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" Path filePath) throws IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage.saveCompletedPrescriptionList(completedPrescriptionList, filePath);","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChongWeiJie29":50,"-":63}},{"path":"src/main/java/seedu/address/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" } catch (CommandException | ParseException | IOException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException, IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"jingyu987":4,"-":83}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s1-cs2103t-t15-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"TeeRenJing":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import javafx.geometry.Rectangle2D;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import javafx.scene.transform.Scale;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import javafx.stage.Screen;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"MainWindowPrescription.fxml\";","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" private PrescriptionListPanel prescriptionListPanel;","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" private StackPane prescriptionListPanelPlaceholder;","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":" if (logic.getIsDisplayingCompletedList()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" prescriptionListPanel \u003d new PrescriptionListPanel(logic.getFilteredCompletedPrescriptionList());","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListPanel \u003d new PrescriptionListPanel(logic.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListPanelPlaceholder.getChildren().add(prescriptionListPanel.getRoot());","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" scaleScreen();","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" private void scaleScreen() {","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" Rectangle2D screen \u003d Screen.getPrimary().getBounds();","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" double screenScale \u003d screen.getHeight() / 1080;","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":" Scale scale \u003d new Scale(screenScale, screenScale);","lastModifiedDate":"2023-10-22"},{"lineNumber":140,"author":{"gitId":"RoeReRe"},"content":" scale.setPivotX(screen.getWidth() / 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":141,"author":{"gitId":"RoeReRe"},"content":" scale.setPivotY(screen.getHeight() / 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":" primaryStage.getScene().getRoot().getTransforms().setAll(scale);","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"RoeReRe"},"content":" primaryStage.centerOnScreen();","lastModifiedDate":"2023-10-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionListPanel getPersonListPanel() {","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionListPanel;","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"jingyu987"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException, IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"jingyu987"},"content":" prescriptionListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"jingyu987"},"content":" fillInnerParts();","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"jingyu987"},"content":" } catch (CommandException | ParseException | IOException e) {","lastModifiedDate":"2023-10-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jingyu987":9,"ChongWeiJie29":8,"RoeReRe":16,"-":186}},{"path":"src/main/java/seedu/address/ui/PrescriptionCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"// import java.util.Comparator;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"// import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" * An UI component that displays information of a {@code Prescription}.","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"PrescriptionListCard.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" public final Prescription prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Label name;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private Label id;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" private Label dosage;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" private Label frequency;","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" private Label startDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" private Label endDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" private Label expiryDate;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" private Label totalStock;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" private Label consumptionCount;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" private Label note;","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code PrescriptionCode} with the given {@code Prescription} and index to display.","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionCard(Prescription prescription, int displayedIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescription \u003d prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" name.setText(prescription.getName().toString());","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" dosage.setText(prescription.getDosage().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" dosage.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" frequency.setText(prescription.getFrequency().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" frequency.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" startDate.setText(prescription.getStartDate().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" endDate.setText(prescription.getEndDate().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" endDate.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" expiryDate.setText(prescription.getExpiryDate().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" expiryDate.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" totalStock.setText(prescription.getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" totalStock.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" note.setText(prescription.getNote().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" note.setText(\"\");","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" setCompletionStatus(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" // prescription.getTags().stream()","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" // .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" private void setCompletionStatus(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().clear();","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" if (!prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(String.format(\"Consumed %s\",","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" prescription.getConsumptionCount().getConsumptionCount()));","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-grey\");","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" } else if (prescription.getIsCompleted()) {","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(\"Completed\");","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-green\");","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" } else {","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.setText(String.format(\"Uncompleted %s/%s\",","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" prescription.getConsumptionCount().getConsumptionCount(),","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" dosage.getText()));","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":" consumptionCount.getStyleClass().add(\"consumption-status-red\");","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"jingyu987":2,"ChongWeiJie29":62,"RoeReRe":59}},{"path":"src/main/java/seedu/address/ui/PrescriptionListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" * Panel containing the list of prescriptions.","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class PrescriptionListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String FXML \u003d \"PrescriptionListPanel.fxml\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PrescriptionListPanel.class);","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" @FXML","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" private ListView\u003cPrescription\u003e prescriptionListView;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" * Creates a {@code PrescriptionListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" public PrescriptionListPanel(ObservableList\u003cPrescription\u003e prescriptionList) {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" super(FXML);","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListView.setItems(prescriptionList);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionListView.setCellFactory(listView -\u003e new PrescriptionListViewCell());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Prescription} using a {@code PrescriptionCard}.","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" class PrescriptionListViewCell extends ListCell\u003cPrescription\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" protected void updateItem(Prescription prescription, boolean empty) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" super.updateItem(prescription, empty);","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" if (empty || prescription \u003d\u003d null) {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" setText(null);","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" } else {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" setGraphic(new PrescriptionCard(prescription, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":49}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import javafx.stage.StageStyle;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" primaryStage.initStyle(StageStyle.TRANSPARENT);","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"RoeReRe":2,"-":88}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"\u003cStackPane styleClass\u003d\"modern-box-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"15\" bottom\u003d\"10\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"RoeReRe":8,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"/* Extra styles for BayMeds */","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"#mainWindowBackground {","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #202124;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(three-pass-box, derive(#202124, -20%), 10, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"#mainWindowLabel {","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 25pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" -fx-opacity: 1;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"#rightWindowBackground {","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #3C4042;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 0em 2em 2em 0em;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":".modern-box-pane {","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(gaussian, #ADD8E625, 20, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":".consumption-status-green {","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #2E7D32;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":".consumption-status-red {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #D32F2F;","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":".consumption-status-grey {","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #6c7a89;","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 5;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"/* AB3 Styles */","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" background-color: #474C5F; /* Used in the default.html file */","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":"#prescriptionListView {","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":148,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 15;","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" -fx-background-insets: 15;","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 1em;","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" -fx-effect: dropshadow(gaussian, #ADD8E650, 15, 0, 0, 0);","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":".list-cell:empty {","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":162,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" -fx-border-width: 0;","lastModifiedDate":"2023-10-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"RoeReRe"},"content":".cell_small_header {","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"RoeReRe"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":213,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":216,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 0 0 0 20;","lastModifiedDate":"2023-10-22"},{"lineNumber":257,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #202124;","lastModifiedDate":"2023-10-22"},{"lineNumber":258,"author":{"gitId":"RoeReRe"},"content":" -fx-background-radius: 2em 0em 0em 0em;","lastModifiedDate":"2023-10-22"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"RoeReRe"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2023-10-22"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #3C4042;","lastModifiedDate":"2023-10-22"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":" -fx-font-family: \"Segoe UI Bold\";","lastModifiedDate":"2023-10-22"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2023-10-22"},{"lineNumber":283,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #0096C9;","lastModifiedDate":"2023-10-22"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":" -fx-unit-increment: 0.1;","lastModifiedDate":"2023-10-22"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":" -fx-block-increment: 0.1;","lastModifiedDate":"2023-10-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":347,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":354,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":362,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":369,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":372,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":376,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":377,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-22"},{"lineNumber":378,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":382,"author":{"gitId":"RoeReRe"},"content":" -fx-text-fill : #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":383,"author":{"gitId":"RoeReRe"},"content":" -fx-prompt-text-fill: #F2E8E3;","lastModifiedDate":"2023-10-22"},{"lineNumber":384,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":386,"author":{"gitId":"RoeReRe"},"content":"#filterField, #prescriptionListPanel, #prescriptionWebpage {","lastModifiedDate":"2023-10-22"},{"lineNumber":387,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":388,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":390,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":391,"author":{"gitId":"RoeReRe"},"content":" -fx-background-color: #424242;","lastModifiedDate":"2023-10-22"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":395,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":397,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":398,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":400,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":402,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":403,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":405,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":407,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"RoeReRe":94,"-":313}},{"path":"src/main/resources/view/MainWindowPrescription.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.BorderPane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" title\u003d\"BayMeds v.2103\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cicons\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/icons\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cscene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" \u003cScene fill\u003d\"transparent\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane fx:id\u003d\"mainWindowBackground\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" \u003cleft\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" \u003cPane prefHeight\u003d\"830.0\" prefWidth\u003d\"650.0\" BorderPane.alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel text\u003d\"BayMeds\" fx:id\u003d\"mainWindowLabel\" layoutX\u003d\"50.0\" layoutY\u003d\"60.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"commandBoxPlaceholder\"","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"modern-box-pane\"","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"145.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"34.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"560.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"resultDisplayPlaceholder\"","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"modern-box-pane\"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"220.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" minHeight\u003d\"100\"","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"480.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"560.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" layoutX\u003d\"45.0\" layoutY\u003d\"700.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" \u003c/Pane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" \u003c/left\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" \u003ccenter\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox fx:id\u003d\"rightWindowBackground\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets right\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" \u003cright\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" \u003cButton mnemonicParsing\u003d\"false\" text\u003d\"X\" onAction\u003d\"#handleExit\"/\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" \u003c/right\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" \u003cPane prefHeight\u003d\"830.0\" prefWidth\u003d\"700.0\" BorderPane.alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"prescriptionList\"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" style\u003d\"-fx-background-color: transparent\"","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" layoutX\u003d\"45.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" layoutY\u003d\"60.0\"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" minWidth\u003d\"340\"","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" prefWidth\u003d\"595\"","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" prefHeight\u003d\"690\"","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" \u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cStackPane fx:id\u003d\"prescriptionListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" \u003c/Pane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" \u003c/center\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/scene\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":39,"RoeReRe":75}},{"path":"src/main/resources/view/PrescriptionListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.scene.layout.BorderPane?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" \u003cBorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" \u003cleft\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" \u003c/left\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" \u003cright\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"consumptionCount\" text\u003d\"\\$consumptionCount\" styleClass\u003d\"consumption-status-red\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" \u003c/right\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" \u003c/BorderPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" \u003cGridPane hgap\u003d\"20\" vgap\u003d\"20\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"dosageHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Dosage\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"dosage\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$dosage\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.rowIndex\u003d\"1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"frequencyHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Frequency\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"frequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$frequency\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.rowIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"totalStockHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Total Stock\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"totalStock\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$totalStock\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"startDateHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Start Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"startDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$startDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"1\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"endDateHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"End Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"endDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$endDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"1\" GridPane.rowIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"Header\" styleClass\u003d\"cell_small_header\" text\u003d\"Expiry Date\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"expiryDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$expiryDate\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" \u003cVBox GridPane.columnIndex\u003d\"2\"\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" \u003cLabel fx:id\u003d\"noteHeader\" styleClass\u003d\"cell_small_header\" text\u003d\"Note\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":38,"RoeReRe":39}},{"path":"src/main/resources/view/PrescriptionListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":" \u003cListView fx:id\u003d\"prescriptionListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"ChongWeiJie29":1,"-":7}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"modern-box-pane\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" \u003cTextArea","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" fx:id\u003d\"resultDisplay\"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" editable\u003d\"false\"","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" styleClass\u003d\"result-display\"","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" \u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" \u003c/TextArea\u003e","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"RoeReRe":12,"-":7}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.storage.JsonCompletedPrescriptionListStorage;","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.storage.JsonPrescriptionListStorage;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" new JsonPrescriptionListStorage(temporaryFolder.resolve(\"prescriptionList.json\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(temporaryFolder.resolve(\"completedPrescriptionList.json\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" StorageManager storage \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY_LIST, model);","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" public void getFilteredPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPrescriptionList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":" Model expectedModel) throws CommandException, ParseException, IOException {","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" model.getPrescriptionList(), model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" * Tests the LogicPrescription component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" * @param expectedMessage the message expected inside exception thrown by the LogicPrescription component","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" // Inject LogicManagerPrescription with a PrescriptionListStorage that throws the IOException e when saving","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(prefPath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, Path filePath)","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(prefPath);","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" StorageManager storage \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"RoeReRe"},"content":" // Triggers the savePrescriptionList method by executing an add command","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"RoeReRe"},"content":" + NAME_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"RoeReRe"},"content":" + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" + FREQUENCY_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"RoeReRe"},"content":" + START_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"RoeReRe"},"content":" + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"RoeReRe"},"content":" + EXPIRY_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"RoeReRe"},"content":" + STOCK_DESC_ASPIRIN","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"RoeReRe"},"content":" + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"RoeReRe"},"content":" Prescription expectedPrescription \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" expectedModel.addPrescription(expectedPrescription);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"jingyu987":1,"ChongWeiJie29":25,"RoeReRe":31,"-":139}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_newPrescription_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().withName(\"Methadone\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel.addPrescription(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new AddCommand(validPrescription), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPrescription)),","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":" public void execute_duplicatePrescription_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionInList \u003d model.getPrescriptionList().getPrescriptionList().get(0);","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" assertCommandFailure(new AddCommand(prescriptionInList), model,","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"TeeRenJing":3,"ChongWeiJie29":12,"-":34}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" public void constructor_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_prescriptionAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStubAcceptingPrescriptionAdded modelStub \u003d new ModelStubAcceptingPrescriptionAdded();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" CommandResult commandResult \u003d new AddCommand(validPrescription).execute(modelStub);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPrescription)),","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(Arrays.asList(validPrescription), modelStub.prescriptionsAdded);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_duplicatePrescription_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand addCommand \u003d new AddCommand(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStub modelStub \u003d new ModelStubWithPrescription(validPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand.MESSAGE_DUPLICATE_PRESCRIPTION, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription alice \u003d new PrescriptionBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription bob \u003d new PrescriptionBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand addCommand \u003d new AddCommand(ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ASPIRIN + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionListFilePath(Path prescriptionListFilePath) {","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionList(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" public void deletePrescription(Prescription target) {","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getPrescriptionByName(Name prescriptionName) {","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" public void addCompletedPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescriptionList(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-23"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":192,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasCompletedPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" public void deleteCompletedPrescription(Prescription target) {","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" public void setCompletedPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-23"},{"lineNumber":205,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":206,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":207,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":208,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":209,"author":{"gitId":"ChongWeiJie29"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-23"},{"lineNumber":210,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":211,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":213,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":214,"author":{"gitId":"ChongWeiJie29"},"content":" public Prescription getCompletedPrescriptionByName(Name prescriptionName) {","lastModifiedDate":"2023-10-23"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" };","lastModifiedDate":"2023-10-23"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":218,"author":{"gitId":"ChongWeiJie29"},"content":" @Override","lastModifiedDate":"2023-10-23"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" public void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":" * A Model stub that contains a single prescription.","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" private class ModelStubWithPrescription extends ModelStub {","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"ChongWeiJie29"},"content":" private final Prescription prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"ChongWeiJie29"},"content":" ModelStubWithPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"ChongWeiJie29"},"content":" this.prescription \u003d prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":236,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"ChongWeiJie29"},"content":" return this.prescription.isSamePrescription(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":243,"author":{"gitId":"ChongWeiJie29"},"content":" * A Model stub that always accept the prescription being added.","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":245,"author":{"gitId":"ChongWeiJie29"},"content":" private class ModelStubAcceptingPrescriptionAdded extends ModelStub {","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"ChongWeiJie29"},"content":" final ArrayList\u003cPrescription\u003e prescriptionsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":249,"author":{"gitId":"ChongWeiJie29"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"ChongWeiJie29"},"content":" return prescriptionsAdded.stream().anyMatch(prescription::isSamePrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"ChongWeiJie29"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"ChongWeiJie29"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"ChongWeiJie29"},"content":" prescriptionsAdded.add(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":261,"author":{"gitId":"ChongWeiJie29"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"ChongWeiJie29"},"content":" return new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"ChongWeiJie29":105,"-":161}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NAME_ASPIRIN \u003d \"Aspirin\";","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NAME_PROPRANOLOL \u003d \"Propranolol\";","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":" public static final String VALID_NAME_METHADONE \u003d \"Methadone\";","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_DOSAGE_ASPIRIN \u003d \"1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_DOSAGE_PROPRANOLOL \u003d \"4\";","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_FREQUENCY_ASPIRIN \u003d \"Daily\";","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_FREQUENCY_PROPRANOLOL \u003d \"Weekly\";","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_START_DATE_ASPIRIN \u003d \"01/10/2023\";","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_START_DATE_PROPRANOLOL \u003d \"01/08/2023\";","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_END_DATE_ASPIRIN \u003d \"23/02/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_END_DATE_PROPRANOLOL \u003d \"20/12/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_EXPIRY_DATE_ASPIRIN \u003d \"12/12/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_EXPIRY_DATE_PROPRANOLOL \u003d \"22/07/2024\";","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_STOCK_ASPIRIN \u003d \"100\";","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":" public static final String VALID_STOCK_PROPRANOLOL \u003d \"500\";","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_CONSUMPTION_ASPIRIN \u003d \"1\";","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_CONSUMPTION_PROPRANOLOL \u003d \"2\";","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" public static final String VALID_NOTE_ASPIRIN \u003d \"Take before food\";","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String VALID_NOTE_PROPRANOLOL \u003d \"Take after food\";","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NAME_DESC_ASPIRIN \u003d \" \" + PREFIX_NAME + VALID_NAME_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NAME_DESC_PROPRANOLOL \u003d \" \" + PREFIX_NAME + VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" public static final String NAME_DESC_METHADONE \u003d \" \" + PREFIX_NAME + VALID_NAME_METHADONE;","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String DOSAGE_DESC_ASPIRIN \u003d \" \" + PREFIX_DOSAGE + VALID_DOSAGE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String DOSAGE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_DOSAGE + VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String FREQUENCY_DESC_ASPIRIN \u003d \" \" + PREFIX_FREQUENCY + VALID_FREQUENCY_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String FREQUENCY_DESC_PROPRANOLOL \u003d \" \" + PREFIX_FREQUENCY + VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String START_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_START_DATE + VALID_START_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String START_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_START_DATE + VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String END_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_END_DATE + VALID_END_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String END_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_END_DATE + VALID_END_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String EXPIRY_DATE_DESC_ASPIRIN \u003d \" \" + PREFIX_EXPIRY_DATE + VALID_EXPIRY_DATE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String EXPIRY_DATE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_EXPIRY_DATE + VALID_EXPIRY_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String STOCK_DESC_ASPIRIN \u003d \" \" + PREFIX_TOTAL_STOCK + VALID_STOCK_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String STOCK_DESC_PROPRANOLOL \u003d \" \" + PREFIX_TOTAL_STOCK + VALID_STOCK_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" public static final String CONSUMPTION_COUNT_DESC_ASPIRIN \u003d \" \" + PREFIX_CONSUMPTION + VALID_CONSUMPTION_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" public static final String CONSUMPTION_COUNT_DESC_PROPRANOLOL \u003d \" \" + PREFIX_CONSUMPTION","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" + VALID_CONSUMPTION_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NOTE_DESC_ASPIRIN \u003d \" \" + PREFIX_NOTE + VALID_NOTE_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" public static final String NOTE_DESC_PROPRANOLOL \u003d \" \" + PREFIX_NOTE + VALID_NOTE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"@sp!r!n\"; // non-alphanumeric not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_DOSAGE_DESC \u003d \" \" + PREFIX_DOSAGE + \"a\"; // alphabets not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_FREQUENCY_DESC \u003d \" \" + PREFIX_FREQUENCY + \"Forever\"; // invalid value","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_START_DATE_DESC \u003d \" \" + PREFIX_START_DATE + \"1/1/2023\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_END_DATE_DESC \u003d \" \" + PREFIX_END_DATE + \"1/2/24\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_EXPIRY_DATE_DESC \u003d \" \" + PREFIX_EXPIRY_DATE + \"2024/1/1\"; // invalid date format","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_STOCK_DESC \u003d \" \" + PREFIX_TOTAL_STOCK + \"a\"; // alphabets not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":" public static final String INVALID_NOTE_DESC \u003d \" \" + PREFIX_NOTE + \"@invalid note\"; // empty string not allowed","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" // public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" public static final EditCommand.EditPrescriptionDescriptor DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" public static final EditCommand.EditPrescriptionDescriptor DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" DESC_ASPIRIN \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_ASPIRIN).withFrequency(VALID_FREQUENCY_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_ASPIRIN).withEndDate(VALID_END_DATE_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).withTotalStock(VALID_STOCK_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" DESC_PROPRANOLOL \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_PROPRANOLOL).withEndDate(VALID_END_DATE_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_PROPRANOLOL).withTotalStock(VALID_STOCK_PROPRANOLOL)","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_PROPRANOLOL).withNote(VALID_NOTE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"ChongWeiJie29"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model,","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" * CommandResult, Model)}","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":137,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" * - the prescription list, filtered prescription list and selected prescription in {@code actualModel}","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" * remain unchanged","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList expectedPrescriptionList \u003d new PrescriptionList(actualModel.getPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" List\u003cPrescription\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" // assertEquals(expectedPrescriptionList, actualModel.getPrescriptionList());","lastModifiedDate":"2023-10-21"},{"lineNumber":159,"author":{"gitId":"ChongWeiJie29"},"content":" // assertEquals(expectedFilteredList, actualModel.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":162,"author":{"gitId":"ChongWeiJie29"},"content":" * Updates {@code model}\u0027s filtered list to show only the prescription at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"ChongWeiJie29"},"content":" * {@code model}\u0027s prescription list.","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":165,"author":{"gitId":"ChongWeiJie29"},"content":" public static void showPrescriptionAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"ChongWeiJie29"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription prescription \u003d model.getFilteredPrescriptionList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" final String[] splitName \u003d prescription.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" model.updateFilteredPrescriptionList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":172,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(1, model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"TeeRenJing":11,"shyanyong":28,"ChongWeiJie29":70,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_DELETE_PRESCRIPTION_SUCCESS;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"/**","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" * Contains integration tests (interaction with the Model) for {@code DeleteCommand}.","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"public class DeleteCommandIntegrationTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" private Model model;","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" @BeforeEach","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" public void setUp() {","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(),","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" getTypicalPrescriptionList(),","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" Messages.format(prescriptionToDelete));","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"TeeRenJing"},"content":" assertCommandSuccess(deletePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"TeeRenJing"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"TeeRenJing"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size() + 1);","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"TeeRenJing"},"content":" assertCommandFailure(deletePrescriptionCommand, model,","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"TeeRenJing"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"TeeRenJing"},"content":" Prescription prescriptionToDelete \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"TeeRenJing"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"TeeRenJing"},"content":" Messages.format(prescriptionToDelete));","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.deletePrescription(prescriptionToDelete);","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"TeeRenJing"},"content":" showNoPrescription(expectedModel);","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" assertCommandSuccess(deletePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"TeeRenJing"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"TeeRenJing"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"TeeRenJing"},"content":" // ensures that outOfBoundIndex is still in bounds of prescriptions list","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getPrescriptionList().getPrescriptionList().size());","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"TeeRenJing"},"content":" assertCommandFailure(deletePrescriptionCommand, model,","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"TeeRenJing"},"content":" Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"TeeRenJing"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"TeeRenJing"},"content":" private void showNoPrescription(Model model) {","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"TeeRenJing"},"content":" model.updateFilteredPrescriptionList(p -\u003e false);","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"TeeRenJing":103}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static javafx.collections.FXCollections.observableArrayList;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" * {@code DeletePrescriptionCommand}.","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" public void constructor_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteCommand(null));","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"TeeRenJing"},"content":" public void execute_prescriptionAcceptedByModel_deleteSuccessful() throws Exception {","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommandTest.ModelStubAcceptingPrescriptionDeleted modelStub \u003d new ModelStubAcceptingPrescriptionDeleted();","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" Index validIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"TeeRenJing"},"content":" Prescription validPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"TeeRenJing"},"content":" CommandResult commandResult \u003d new DeleteCommand(validIndex).execute(modelStub);","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(String.format(DeleteCommand.MESSAGE_DELETE_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":" Messages.format(validPrescription)),","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"TeeRenJing"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(Collections.emptyList(), modelStub.prescriptionsAdded);","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" public void execute_outOfBoundary_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"TeeRenJing"},"content":" Index invalidIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidIndex);","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"TeeRenJing"},"content":" ModelStub modelStub \u003d new ModelStubAcceptingPrescriptionDeleted();","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":" Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX, () -\u003e deleteCommand.execute(modelStub));","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteFirstPrescriptionCommand \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteSecondPrescriptionCommand \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_SECOND_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(deleteFirstPrescriptionCommand.equals(deleteFirstPrescriptionCommand));","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deleteFirstPrescriptionCommandCopy \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" new DeleteCommand(INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(deleteFirstPrescriptionCommand.equals(deleteFirstPrescriptionCommandCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"TeeRenJing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"TeeRenJing"},"content":" // different deleteCommand -\u003e returns false","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(deleteFirstPrescriptionCommand.equals(deleteSecondPrescriptionCommand));","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"TeeRenJing"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"TeeRenJing"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand deletePrescriptionCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{toDelete\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(expected, deletePrescriptionCommand.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"TeeRenJing"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"TeeRenJing"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"TeeRenJing"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"TeeRenJing"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-22"},{"lineNumber":113,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":114,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"TeeRenJing"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":122,"author":{"gitId":"TeeRenJing"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-22"},{"lineNumber":123,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":124,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":126,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":127,"author":{"gitId":"TeeRenJing"},"content":" public Path getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-22"},{"lineNumber":128,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":129,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":131,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":132,"author":{"gitId":"TeeRenJing"},"content":" public void setPrescriptionListFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-22"},{"lineNumber":133,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":137,"author":{"gitId":"TeeRenJing"},"content":" public Path getCompletedPrescriptionListFilePath() {","lastModifiedDate":"2023-10-24"},{"lineNumber":138,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":139,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":141,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":142,"author":{"gitId":"TeeRenJing"},"content":" public void setCompletedPrescriptionListFilePath(Path completedPrescriptionListFilePath) {","lastModifiedDate":"2023-10-24"},{"lineNumber":143,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":144,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":145,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":146,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":147,"author":{"gitId":"TeeRenJing"},"content":" public void addPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":149,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":150,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":151,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"TeeRenJing"},"content":" public void setPrescriptionList(ReadOnlyPrescriptionList newData) {","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":157,"author":{"gitId":"TeeRenJing"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-22"},{"lineNumber":158,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":160,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":161,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":162,"author":{"gitId":"TeeRenJing"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":163,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":164,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":165,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":166,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":167,"author":{"gitId":"TeeRenJing"},"content":" public void deletePrescription(Prescription target) {","lastModifiedDate":"2023-10-22"},{"lineNumber":168,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":169,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":170,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":171,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":172,"author":{"gitId":"TeeRenJing"},"content":" public void setPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":173,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":174,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":175,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":176,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":177,"author":{"gitId":"TeeRenJing"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-22"},{"lineNumber":178,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":179,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":180,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"TeeRenJing"},"content":" public Prescription getPrescriptionByName(Name prescriptionName) {","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"TeeRenJing"},"content":" };","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":187,"author":{"gitId":"TeeRenJing"},"content":" public void updateFilteredPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-22"},{"lineNumber":188,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":190,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":191,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":192,"author":{"gitId":"TeeRenJing"},"content":" public void setCompletedPrescriptionList(ReadOnlyPrescriptionList completedPrescriptionList) {","lastModifiedDate":"2023-10-24"},{"lineNumber":193,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":194,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":195,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":196,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":197,"author":{"gitId":"TeeRenJing"},"content":" public ReadOnlyPrescriptionList getCompletedPrescriptionList() {","lastModifiedDate":"2023-10-24"},{"lineNumber":198,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":199,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":200,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":201,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":202,"author":{"gitId":"TeeRenJing"},"content":" public boolean hasCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-24"},{"lineNumber":203,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":204,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":205,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":206,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":207,"author":{"gitId":"TeeRenJing"},"content":" public void deleteCompletedPrescription(Prescription target) {","lastModifiedDate":"2023-10-24"},{"lineNumber":208,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":209,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":210,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":211,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":212,"author":{"gitId":"TeeRenJing"},"content":" public void addCompletedPrescription(Prescription completedPrescription) {","lastModifiedDate":"2023-10-24"},{"lineNumber":213,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":214,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":215,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":216,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":217,"author":{"gitId":"TeeRenJing"},"content":" public void setCompletedPrescription(Prescription target, Prescription editedPrescription) {","lastModifiedDate":"2023-10-24"},{"lineNumber":218,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":219,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":220,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":221,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":222,"author":{"gitId":"TeeRenJing"},"content":" public ObservableList\u003cPrescription\u003e getFilteredCompletedPrescriptionList() {","lastModifiedDate":"2023-10-24"},{"lineNumber":223,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":224,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":225,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":226,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":227,"author":{"gitId":"TeeRenJing"},"content":" public Prescription getCompletedPrescriptionByName(Name completedPrescriptionName) throws CommandException {","lastModifiedDate":"2023-10-24"},{"lineNumber":228,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":229,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":230,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":231,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":232,"author":{"gitId":"TeeRenJing"},"content":" public void updateFilteredCompletedPrescriptionList(Predicate\u003cPrescription\u003e predicate) {","lastModifiedDate":"2023-10-24"},{"lineNumber":233,"author":{"gitId":"TeeRenJing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-24"},{"lineNumber":234,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":237,"author":{"gitId":"TeeRenJing"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":238,"author":{"gitId":"TeeRenJing"},"content":" * A Model stub that contains a single prescription.","lastModifiedDate":"2023-10-22"},{"lineNumber":239,"author":{"gitId":"TeeRenJing"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":240,"author":{"gitId":"TeeRenJing"},"content":" private class ModelStubWithPrescription extends DeleteCommandTest.ModelStub {","lastModifiedDate":"2023-10-22"},{"lineNumber":241,"author":{"gitId":"TeeRenJing"},"content":" private final Prescription prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":242,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":243,"author":{"gitId":"TeeRenJing"},"content":" ModelStubWithPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":244,"author":{"gitId":"TeeRenJing"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":245,"author":{"gitId":"TeeRenJing"},"content":" this.prescription \u003d prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":246,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":247,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":248,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":249,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":250,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":251,"author":{"gitId":"TeeRenJing"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":252,"author":{"gitId":"TeeRenJing"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":253,"author":{"gitId":"TeeRenJing"},"content":" return this.prescription.isSamePrescription(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":254,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":258,"author":{"gitId":"TeeRenJing"},"content":" * A Model stub that has dummy prescriptions to be removed","lastModifiedDate":"2023-10-22"},{"lineNumber":259,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":260,"author":{"gitId":"TeeRenJing"},"content":" private class ModelStubAcceptingPrescriptionDeleted extends ModelStub {","lastModifiedDate":"2023-10-22"},{"lineNumber":261,"author":{"gitId":"TeeRenJing"},"content":" // populate the prescriptionsAdded with dummy prescriptions","lastModifiedDate":"2023-10-22"},{"lineNumber":262,"author":{"gitId":"TeeRenJing"},"content":" final ArrayList\u003cPrescription\u003e prescriptionsAdded \u003d new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2023-10-22"},{"lineNumber":263,"author":{"gitId":"TeeRenJing"},"content":" new PrescriptionBuilder().build()","lastModifiedDate":"2023-10-22"},{"lineNumber":264,"author":{"gitId":"TeeRenJing"},"content":" ));","lastModifiedDate":"2023-10-22"},{"lineNumber":265,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":266,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":267,"author":{"gitId":"TeeRenJing"},"content":" public boolean hasPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":268,"author":{"gitId":"TeeRenJing"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":269,"author":{"gitId":"TeeRenJing"},"content":" return prescriptionsAdded.stream().anyMatch(prescription::isSamePrescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":270,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":271,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":272,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":273,"author":{"gitId":"TeeRenJing"},"content":" public void deletePrescription(Prescription prescription) {","lastModifiedDate":"2023-10-22"},{"lineNumber":274,"author":{"gitId":"TeeRenJing"},"content":" requireNonNull(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":275,"author":{"gitId":"TeeRenJing"},"content":" prescriptionsAdded.remove(prescription);","lastModifiedDate":"2023-10-22"},{"lineNumber":276,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":277,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":278,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":279,"author":{"gitId":"TeeRenJing"},"content":" public ReadOnlyPrescriptionList getPrescriptionList() {","lastModifiedDate":"2023-10-22"},{"lineNumber":280,"author":{"gitId":"TeeRenJing"},"content":" return new PrescriptionList();","lastModifiedDate":"2023-10-22"},{"lineNumber":281,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":283,"author":{"gitId":"TeeRenJing"},"content":" @Override","lastModifiedDate":"2023-10-22"},{"lineNumber":284,"author":{"gitId":"TeeRenJing"},"content":" public ObservableList\u003cPrescription\u003e getFilteredPrescriptionList() {","lastModifiedDate":"2023-10-22"},{"lineNumber":285,"author":{"gitId":"TeeRenJing"},"content":" return observableArrayList(prescriptionsAdded);","lastModifiedDate":"2023-10-22"},{"lineNumber":286,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":228,"ChongWeiJie29":8,"-":52}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ASPIRIN;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder(editedPrescription).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(model.getFilteredPrescriptionList().get(0), editedPrescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" Index indexLastPrescription \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" Prescription lastPrescription \u003d model.getFilteredPrescriptionList().get(indexLastPrescription.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" PrescriptionBuilder prescriptionInList \u003d new PrescriptionBuilder(lastPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d prescriptionInList.withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" .withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL)","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPrescription, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(lastPrescription, editedPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, new EditPrescriptionDescriptor());","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionInFilteredList \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" Prescription editedPrescription \u003d new PrescriptionBuilder(prescriptionInFilteredList)","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" .withName(\"Paracetamol\").build();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder().withName(\"Paracetamol\").build());","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PRESCRIPTION_SUCCESS,","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" Messages.format(editedPrescription));","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(new PrescriptionList(model.getPrescriptionList()),","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" new PrescriptionList(getTypicalPrescriptionList()), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" expectedModel.setPrescription(model.getFilteredPrescriptionList().get(0), editedPrescription);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" public void execute_duplicatePrescriptionUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" Prescription firstPrescription \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder(firstPrescription).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PRESCRIPTION, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" // edit prescription in filtered list into a duplicate in prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":" Prescription prescriptionInList \u003d model.getPrescriptionList().getPrescriptionList()","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" .get(INDEX_SECOND_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION,","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder(prescriptionInList).build());","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPrescriptionList().size() + 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2023-10-19"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":" * but smaller than size of prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2023-10-19"},{"lineNumber":150,"author":{"gitId":"shyanyong"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"shyanyong"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"shyanyong"},"content":" // ensures that outOfBoundIndex is still in bounds of prescription list","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"shyanyong"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getPrescriptionList().getPrescriptionList().size());","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2023-10-19"},{"lineNumber":156,"author":{"gitId":"shyanyong"},"content":" new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_PROPRANOLOL).build());","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":158,"author":{"gitId":"shyanyong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PRESCRIPTION_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"shyanyong"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PRESCRIPTION, DESC_ASPIRIN);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new ListCommand()));","lastModifiedDate":"2023-10-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":175,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PRESCRIPTION, DESC_ASPIRIN)));","lastModifiedDate":"2023-10-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PRESCRIPTION, DESC_PROPRANOLOL)));","lastModifiedDate":"2023-10-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editPrescriptionDescriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPrescriptionDescriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPrescriptionDescriptor\u003d\"","lastModifiedDate":"2023-10-22"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" + editPrescriptionDescriptor + \"}\";","lastModifiedDate":"2023-10-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":80,"ChongWeiJie29":9,"-":101}},{"path":"src/test/java/seedu/address/logic/commands/EditPrescriptionDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ASPIRIN;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CONSUMPTION_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_END_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EXPIRY_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STOCK_PROPRANOLOL;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"public class EditPrescriptionDescriptorTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptorWithSameValues \u003d new EditPrescriptionDescriptor(DESC_ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" assertTrue(DESC_ASPIRIN.equals(descriptorWithSameValues));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" assertTrue(DESC_ASPIRIN.equals(DESC_ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(5));","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(DESC_PROPRANOLOL));","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"shyanyong"},"content":" // different dosage -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" // different frequency -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" .withFrequency(VALID_FREQUENCY_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" // different start date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" // different end date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" .withEndDate(VALID_END_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" // different expiry date -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" // different total stock -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" .withTotalStock(VALID_STOCK_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" //different consumption count -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" // different note -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" editedAspirin \u003d new EditPrescriptionDescriptorBuilder(DESC_ASPIRIN)","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" .withNote(VALID_NOTE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" assertFalse(DESC_ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"shyanyong":86}},{"path":"src/test/java/seedu/address/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" public void equals() {","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" ExitCommand firstExitCommand \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" new ExitCommand();","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" ExitCommand secondExitCommand \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" new ExitCommand();","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(firstExitCommand.equals(secondExitCommand));","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstExitCommand.equals(1));","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstExitCommand.equals(true));","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstExitCommand.equals(new HelpCommand()));","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstExitCommand.equals(null));","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"TeeRenJing":24,"-":20}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.Messages.MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ZOMIG;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" private Model model;","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" @BeforeEach","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" public void setUp() {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" public void execute_zeroKeywords_noPrescriptionFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"TeeRenJing"},"content":" public void execute_multipleKeywords_multiplePrescriptionsFound() {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":" String expectedMessage \u003d String.format(MESSAGE_PRESCRIPTIONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" // \"Zolmitriptan Rapimelt\" is the name for ZOMIG","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Aspirin Propranolol Zolmitriptan Rapimelt\");","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"TeeRenJing"},"content":" expectedModel.updateFilteredPrescriptionList(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" assertEquals(Arrays.asList(ASPIRIN, PROPRANOLOL, ZOMIG), model.getFilteredPrescriptionList());","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":24,"ChongWeiJie29":3,"-":72}},{"path":"src/test/java/seedu/address/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" public void equals() {","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" HelpCommand firstHelpCommand \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" new HelpCommand();","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" HelpCommand secondHelpCommand \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" new HelpCommand();","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertTrue(firstHelpCommand.equals(secondHelpCommand));","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstHelpCommand.equals(1));","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstHelpCommand.equals(true));","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstHelpCommand.equals(new ExitCommand()));","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" assertFalse(firstHelpCommand.equals(null));","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"TeeRenJing":23,"-":20}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPrescriptionAtIndex;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" * Contains integration tests (interaction with the seedu.address.model.ModelPrescription)","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" * and unit tests for ListPrescriptionCommand.","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" showPrescriptionAtIndex(model, INDEX_FIRST_PRESCRIPTION);","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListCommand(), model,","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":13,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/ListTodayCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.IsTodayPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" private Model expectedModel;","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" @BeforeEach","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" public void setUp() {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(),","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" model.getCompletedPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"shyanyong"},"content":" public void execute_validDateWithMedications_listTodaySuccess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_noMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_validWeeklyMedicationsForToday_listTodaySucess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":" public void execute_invalidWeeklyMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(6);","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(7);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Weekly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_validMonthlyMedicationsForToday_listTodaySucess() {","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Monthly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":" @Test public void execute_invalidMonthlyMedicationsForToday_listTodayEmpty() {","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d ListTodayCommand.MESSAGE_EMPTY_LIST;","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" model.setPrescriptionList(new PrescriptionList());","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" assertTrue(model.getFilteredPrescriptionList().isEmpty());","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" LocalDate startLocalDate \u003d LocalDate.now().minusDays(29);","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"shyanyong"},"content":" LocalDate endLocalDate \u003d LocalDate.now().plusDays(30);","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"shyanyong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"shyanyong"},"content":" String startDateString \u003d startLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"shyanyong"},"content":" String endDateString \u003d endLocalDate.format(formatter);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"shyanyong"},"content":" Date startDate \u003d new Date(startDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"shyanyong"},"content":" Date endDate \u003d new Date(endDateString);","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" model.addPrescription(new Prescription(new Name(\"Paracetamol\"), new Dosage(\"1\"), new Frequency(\"Monthly\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" startDate, endDate, endDate, new Stock(\"100\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(\"1\"), false, new Note(\"test\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"ChongWeiJie29"},"content":" expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"shyanyong"},"content":" expectedModel.updateFilteredPrescriptionList(new IsTodayPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandSuccess(new ListTodayCommand(), model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"jingyu987":4,"shyanyong":106,"ChongWeiJie29":34}},{"path":"src/test/java/seedu/address/logic/commands/TakeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.TakeCommand.MESSAGE_INSUFFICIENT_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" private Model model;","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @BeforeEach","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void setUp() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public void execute_validDosesToTake_success() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d new PrescriptionBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" .build();","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" prescriptionList.addPrescription(prescriptionToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Model model \u003d new ModelManager(prescriptionList, completedPrescriptionList, new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToTake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d 1; //Valid number of doses","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage \u003d String.format(TakeCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName());","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" Prescription expectedPrescription \u003d expectedModel.getPrescriptionByName(prescriptionToTake.getName());","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" expectedPrescription.getTotalStock().get().decrementCount(dosesToTake);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getConsumptionCount().incrementCount(dosesToTake);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" expectedModel.updateFilteredPrescriptionList(new SameNamePredicate(prescriptionToTake.getName()));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(expectedModel.getPrescriptionByName(prescriptionToTake.getName())","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" assertCommandSuccess(takePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock - dosesToTake, newStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" public void execute_insufficientStock_throwsCommandException() throws CommandException {","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToTake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d initialStock + 1; // More than available stock","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(takePrescriptionCommand, model, MESSAGE_INSUFFICIENT_STOCK);","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" // Ensure that the stock is not modified","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(model.getPrescriptionByName(prescriptionToTake.getName())","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock, newStock);","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" public void execute_invalidPrescription_throwsCommandException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToTake \u003d new PrescriptionBuilder().withName(\"Invalid Name\").build();","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" int dosesToTake \u003d 1; // A valid number of doses","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand takePrescriptionCommand \u003d new TakeCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" prescriptionToTake.getName(), dosesToTake);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" assertCommandFailure(takePrescriptionCommand, model, TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" Name name1 \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" Name name2 \u003d new Name(\"Panadol\");","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" int doses1 \u003d 2;","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" int doses2 \u003d 1;","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command1 \u003d new TakeCommand(name1, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command2 \u003d new TakeCommand(name1, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command3 \u003d new TakeCommand(name2, doses1);","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand command4 \u003d new TakeCommand(name1, doses2);","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" // Same object","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command1));","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" // Test for equality","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command2)); // Same name and doses","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" assertTrue(command2.equals(command1)); // Test for symmetry","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command3)); // Different names","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command4)); // Different doses","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" // Test for non-equality","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(null)); // Null object","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":94,"ChongWeiJie29":27}},{"path":"src/test/java/seedu/address/logic/commands/UntakeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.commands.UntakeCommand.MESSAGE_INSUFFICIENT_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.SameNamePredicate;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" private Model model;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @BeforeEach","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void setUp() {","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" model \u003d new ModelManager(getTypicalPrescriptionList(), getTypicalPrescriptionList(), new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" public void execute_validDosesToUntake_success() throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d new PrescriptionBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"100\")","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" .build();","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" prescriptionList.addPrescription(prescriptionToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":" Model model \u003d new ModelManager(prescriptionList, completedPrescriptionList, new UserPrefs());","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"ChongWeiJie29"},"content":" Model expectedModel \u003d new ModelManager(model.getPrescriptionList(), model.getCompletedPrescriptionList(),","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" new UserPrefs());","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" int initialStock \u003d Integer.parseInt(prescriptionToUntake.getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d 1; //Valid number of doses","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" String expectedMessage \u003d String.format(UntakeCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName());","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" Prescription expectedPrescription \u003d expectedModel.getPrescriptionByName(prescriptionToUntake.getName());","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getTotalStock().get().incrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" expectedPrescription.getConsumptionCount().decrementCount(dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" expectedModel.updateFilteredPrescriptionList(new SameNamePredicate(prescriptionToUntake.getName()));","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" int newStock \u003d Integer.parseInt(expectedModel.getPrescriptionByName(prescriptionToUntake.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" .getTotalStock().get().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" assertCommandSuccess(untakePrescriptionCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialStock + dosesToUntake, newStock);","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" public void execute_insufficientConsumption_throwsCommandException() throws CommandException {","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d model.getFilteredPrescriptionList()","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" .get(INDEX_FIRST_PRESCRIPTION.getZeroBased());","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" int initialConsumption \u003d Integer.parseInt(prescriptionToUntake.getConsumptionCount().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d initialConsumption + 1; // More than currently consumed","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(untakePrescriptionCommand, model, MESSAGE_INSUFFICIENT_CONSUMPTION);","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" // Ensure that the consumption is not modified","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" int newConsumption \u003d Integer.parseInt(model.getPrescriptionByName(prescriptionToUntake.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" .getConsumptionCount().toString());","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertEquals(initialConsumption, newConsumption);","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" public void execute_invalidPrescription_throwsCommandException() {","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" Prescription prescriptionToUntake \u003d new PrescriptionBuilder().withName(\"Invalid Name\").build();","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" int dosesToUntake \u003d 1; // A valid number of doses","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" UntakeCommand untakePrescriptionCommand \u003d new UntakeCommand(","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" prescriptionToUntake.getName(), dosesToUntake);","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" assertCommandFailure(untakePrescriptionCommand, model, TakeCommand.MESSAGE_PRESCRIPTION_NOT_FOUND);","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" Name name1 \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" Name name2 \u003d new Name(\"Panadol\");","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" int doses1 \u003d 2;","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" int doses2 \u003d 1;","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command1 \u003d new UntakeCommand(name1, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command2 \u003d new UntakeCommand(name1, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command3 \u003d new UntakeCommand(name2, doses1);","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"jingyu987"},"content":" UntakeCommand command4 \u003d new UntakeCommand(name1, doses2);","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" // Same object","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command1));","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" // Test for equality","lastModifiedDate":"2023-10-22"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" assertTrue(command1.equals(command2)); // Same name and doses","lastModifiedDate":"2023-10-22"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" assertTrue(command2.equals(command1)); // Test for symmetry","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command3)); // Different names","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(command4)); // Different doses","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" // Test for non-equality","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" assertFalse(command1.equals(null)); // Null object","lastModifiedDate":"2023-10-22"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":117,"ChongWeiJie29":4}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FREQUENCY_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_START_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" Prescription expectedPrescription \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_ASPIRIN + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + NOTE_DESC_ASPIRIN,","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" new AddCommand(expectedPrescription));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + DOSAGE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + NOTE_DESC_ASPIRIN,","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + DOSAGE_DESC_PROPRANOLOL + FREQUENCY_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" + START_DATE_DESC_PROPRANOLOL + END_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_PROPRANOLOL + STOCK_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" + NOTE_DESC_PROPRANOLOL, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + INVALID_DOSAGE_DESC + FREQUENCY_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" + START_DATE_DESC_PROPRANOLOL + END_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" + EXPIRY_DATE_DESC_PROPRANOLOL + STOCK_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" + NOTE_DESC_PROPRANOLOL, Dosage.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid frequency","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" + INVALID_FREQUENCY_DESC + START_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" + END_DATE_DESC_PROPRANOLOL + EXPIRY_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"ChongWeiJie29"},"content":" + STOCK_DESC_PROPRANOLOL + NOTE_DESC_PROPRANOLOL,","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" Frequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" // invalid start date","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, NAME_DESC_PROPRANOLOL + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_PROPRANOLOL + INVALID_START_DATE_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" + END_DATE_DESC_PROPRANOLOL + EXPIRY_DATE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"ChongWeiJie29"},"content":" + STOCK_DESC_PROPRANOLOL + NOTE_DESC_PROPRANOLOL,","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"ChongWeiJie29"},"content":" Date.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"shyanyong":7,"ChongWeiJie29":51,"-":35}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentMultimapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"public class ArgumentMultimapTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":" public void testParseExceptionWithDuplicatePrefixes() {","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" ArgumentMultimap argumentMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" Prefix prefix1 \u003d new Prefix(\"p1\");","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":" Prefix prefix2 \u003d new Prefix(\"p2\");","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":" Prefix prefix3 \u003d new Prefix(\"p3\");","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix1, \"value1\");","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix2, \"value2\");","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.put(prefix1, \"value3\");","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" Prefix[] duplicatedPrefixes \u003d { prefix1 };","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" ParseException exception \u003d assertThrows(ParseException.class, () -\u003e {","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" argumentMultimap.verifyNoDuplicatePrefixesFor(prefix1, prefix2, prefix3);","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":" });","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" String expectedErrorMessage \u003d Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes);","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" assertEquals(expectedErrorMessage, exception.getMessage());","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"shyanyong":32}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"ChongWeiJie29":2,"-":38}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" //write some test cases for the parser","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":" public void parse_zeroIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" public void parse_negativeIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"TeeRenJing"},"content":" public void parse_nonNumberIndex_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"abc\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"TeeRenJing"},"content":" public void parse_float_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1.0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"TeeRenJing"},"content":" public void parse_fraction_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1/2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"TeeRenJing"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"TeeRenJing"},"content":" public void parse_leadingZeroes_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"001\", new DeleteCommand(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"TeeRenJing"},"content":" public void parse_multipleNumbers_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"TeeRenJing"},"content":" // Valid index","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"1 2 3\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"TeeRenJing"},"content":" // No index specified","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"TeeRenJing"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"TeeRenJing"},"content":" // No index specified","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"TeeRenJing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"TeeRenJing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"TeeRenJing":70,"ChongWeiJie29":7,"-":19}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CONSUMPTION_COUNT_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CONSUMPTION_COUNT_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FREQUENCY_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_END_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EXPIRY_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FREQUENCY_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NOTE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_START_DATE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STOCK_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CONSUMPTION_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_END_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EXPIRY_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FREQUENCY_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STOCK_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"shyanyong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"shyanyong"},"content":"import seedu.address.testutil.EditPrescriptionDescriptorBuilder;","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"shyanyong"},"content":" String.format(EditCommand.MESSAGE_USAGE, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" //no field specified","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"-5\" + VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2023-10-22"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"0\" + VALID_NAME_ASPIRIN, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2023-10-22"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1 some random string\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2023-10-22"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1 i/ string\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2023-10-22"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_DOSAGE_DESC, Dosage.MESSAGE_CONSTRAINTS); // invalid dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_FREQUENCY_DESC, Frequency.MESSAGE_CONSTRAINTS); // invalid frequency","lastModifiedDate":"2023-10-22"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_START_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid start date","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_END_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid end date","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_EXPIRY_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid expiry date","lastModifiedDate":"2023-10-22"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_STOCK_DESC, Stock.MESSAGE_CONSTRAINTS); // invalid stock","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NOTE_DESC, Note.MESSAGE_CONSTRAINTS); // invalid note","lastModifiedDate":"2023-10-22"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" //invalid name followed by valid dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + \" \" + VALID_NAME_ASPIRIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" //multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2023-10-22"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_DOSAGE_DESC + INVALID_FREQUENCY_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" + INVALID_START_DATE_DESC + INVALID_END_DATE_DESC + INVALID_EXPIRY_DATE_DESC + INVALID_STOCK_DESC","lastModifiedDate":"2023-10-22"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" + INVALID_NOTE_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":117,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_SECOND_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_ASPIRIN + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":119,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_ASPIRIN + START_DATE_DESC_ASPIRIN + END_DATE_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" + EXPIRY_DATE_DESC_ASPIRIN + STOCK_DESC_ASPIRIN + CONSUMPTION_COUNT_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":" + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":123,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder().withName(VALID_NAME_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" .withStartDate(VALID_START_DATE_ASPIRIN).withEndDate(VALID_END_DATE_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":" .withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).withTotalStock(VALID_STOCK_ASPIRIN)","lastModifiedDate":"2023-10-22"},{"lineNumber":127,"author":{"gitId":"shyanyong"},"content":" .withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":133,"author":{"gitId":"shyanyong"},"content":" public void parse_someFieldSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":134,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_PROPRANOLOL + FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" .withDosage(VALID_DOSAGE_PROPRANOLOL).withFrequency(VALID_FREQUENCY_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2023-10-22"},{"lineNumber":147,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_THIRD_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":148,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":149,"author":{"gitId":"shyanyong"},"content":" EditPrescriptionDescriptor descriptor \u003d new EditPrescriptionDescriptorBuilder()","lastModifiedDate":"2023-10-22"},{"lineNumber":150,"author":{"gitId":"shyanyong"},"content":" .withName(VALID_NAME_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":154,"author":{"gitId":"shyanyong"},"content":" // dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":155,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":156,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withDosage(VALID_DOSAGE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":160,"author":{"gitId":"shyanyong"},"content":" // frequency","lastModifiedDate":"2023-10-22"},{"lineNumber":161,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + FREQUENCY_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":162,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withFrequency(VALID_FREQUENCY_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":166,"author":{"gitId":"shyanyong"},"content":" // start date","lastModifiedDate":"2023-10-22"},{"lineNumber":167,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + START_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":168,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withStartDate(VALID_START_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":172,"author":{"gitId":"shyanyong"},"content":" // end date","lastModifiedDate":"2023-10-22"},{"lineNumber":173,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + END_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":174,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withEndDate(VALID_END_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":178,"author":{"gitId":"shyanyong"},"content":" // expiry date","lastModifiedDate":"2023-10-22"},{"lineNumber":179,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + EXPIRY_DATE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":180,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withExpiryDate(VALID_EXPIRY_DATE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":181,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":182,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":184,"author":{"gitId":"shyanyong"},"content":" // stock","lastModifiedDate":"2023-10-22"},{"lineNumber":185,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + STOCK_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":186,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withTotalStock(VALID_STOCK_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":187,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":188,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":190,"author":{"gitId":"shyanyong"},"content":" // consumption count","lastModifiedDate":"2023-10-22"},{"lineNumber":191,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + CONSUMPTION_COUNT_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":192,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withConsumptionCount(VALID_CONSUMPTION_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":193,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":194,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":196,"author":{"gitId":"shyanyong"},"content":" // note","lastModifiedDate":"2023-10-22"},{"lineNumber":197,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + NOTE_DESC_ASPIRIN;","lastModifiedDate":"2023-10-22"},{"lineNumber":198,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptorBuilder().withNote(VALID_NOTE_ASPIRIN).build();","lastModifiedDate":"2023-10-22"},{"lineNumber":199,"author":{"gitId":"shyanyong"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-22"},{"lineNumber":200,"author":{"gitId":"shyanyong"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":201,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":203,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":204,"author":{"gitId":"shyanyong"},"content":" public void parse_multiRepeatedFields_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":205,"author":{"gitId":"shyanyong"},"content":" // More extensive testing of duplicate parameter detection is done in","lastModifiedDate":"2023-10-22"},{"lineNumber":206,"author":{"gitId":"shyanyong"},"content":" // AddCommandParserTest#parse_multiRepeatedFields_failure()","lastModifiedDate":"2023-10-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":208,"author":{"gitId":"shyanyong"},"content":" //valid followed by invalid","lastModifiedDate":"2023-10-22"},{"lineNumber":209,"author":{"gitId":"shyanyong"},"content":" Index targetIndex \u003d INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":210,"author":{"gitId":"shyanyong"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_DOSAGE_DESC + DOSAGE_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":212,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DOSAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":214,"author":{"gitId":"shyanyong"},"content":" //invalid follwed by valid","lastModifiedDate":"2023-10-22"},{"lineNumber":215,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_PROPRANOLOL + INVALID_DOSAGE_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":217,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_DOSAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":219,"author":{"gitId":"shyanyong"},"content":" //multiple valid fields repeated","lastModifiedDate":"2023-10-22"},{"lineNumber":220,"author":{"gitId":"shyanyong"},"content":" userInput \u003d targetIndex.getOneBased() + DOSAGE_DESC_ASPIRIN + FREQUENCY_DESC_ASPIRIN","lastModifiedDate":"2023-10-22"},{"lineNumber":221,"author":{"gitId":"shyanyong"},"content":" + CONSUMPTION_COUNT_DESC_ASPIRIN + DOSAGE_DESC_PROPRANOLOL","lastModifiedDate":"2023-10-22"},{"lineNumber":222,"author":{"gitId":"shyanyong"},"content":" + FREQUENCY_DESC_PROPRANOLOL + CONSUMPTION_COUNT_DESC_PROPRANOLOL;","lastModifiedDate":"2023-10-22"},{"lineNumber":223,"author":{"gitId":"shyanyong"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2023-10-22"},{"lineNumber":224,"author":{"gitId":"shyanyong"},"content":" PREFIX_DOSAGE, PREFIX_FREQUENCY, PREFIX_CONSUMPTION));","lastModifiedDate":"2023-10-22"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"shyanyong":142,"-":84}},{"path":"src/test/java/seedu/address/logic/parser/ExitCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class ExitCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" private ExitCommandParser parser \u003d new ExitCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"\", new ExitCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public void parse_preambleWhitespace_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \" \", new ExitCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ExitCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":34}},{"path":"src/test/java/seedu/address/logic/parser/HelpCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"TeeRenJing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"TeeRenJing"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"TeeRenJing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"TeeRenJing"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"TeeRenJing"},"content":"public class HelpCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"TeeRenJing"},"content":" private HelpCommandParser parser \u003d new HelpCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"TeeRenJing"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \"\", new HelpCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"TeeRenJing"},"content":" public void parse_preambleWhitespace_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"TeeRenJing"},"content":" assertParseSuccess(parser, \" \", new HelpCommand());","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"TeeRenJing"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"TeeRenJing"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"TeeRenJing"},"content":" // Random values","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"TeeRenJing"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"TeeRenJing"},"content":" // Random prefixes","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"TeeRenJing"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"TeeRenJing"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"TeeRenJing"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"TeeRenJing"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"TeeRenJing":34}},{"path":"src/test/java/seedu/address/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_emptyPreamble_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \"\", new ListCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_preambleWhitespace_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \" \", new ListCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":34}},{"path":"src/test/java/seedu/address/logic/parser/ListTodayCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChongWeiJie29"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"public class ListTodayCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"ChongWeiJie29"},"content":" private ListTodayCommandParser parser \u003d new ListTodayCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseSuccess(parser, \"\", new ListTodayCommand());","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_invalidInput_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"invalid input\",","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"ChongWeiJie29"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" ListTodayCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"ChongWeiJie29":40}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PRESCRIPTION;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NAME \u003d \"@sp!r!n\";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_DOSAGE \u003d \"abc\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_FREQUENCY \u003d \"Yearly\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_START_DATE \u003d \"1/1/2023\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_END_DATE \u003d \"1/1/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_EXPIRY_DATE \u003d \"1/1/2025\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_TOTAL_STOCK \u003d \"a\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NOTE \u003d \"***\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NAME \u003d \"Aspirin\";","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_DOSAGE \u003d \"1\";","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_FREQUENCY \u003d \"Daily\";","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_START_DATE \u003d \"01/10/2023\";","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_END_DATE \u003d \"23/02/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_EXPIRY_DATE \u003d \"12/12/2024\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_TOTAL_STOCK \u003d \"100\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NOTE \u003d \"Take after food\";","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(INDEX_FIRST_PRESCRIPTION, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(INDEX_FIRST_PRESCRIPTION, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDosage((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDosage(INVALID_DOSAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_validValueWithoutWhitespace_returnsDosage() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" Dosage expectedDosage \u003d new Dosage(VALID_DOSAGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedDosage, ParserUtil.parseDosage(VALID_DOSAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" public void parseDosage_validValueWithWhitespace_returnsTrimmedDosage() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" String dosageWithWhitespace \u003d WHITESPACE + VALID_DOSAGE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" Dosage expectedDosage \u003d new Dosage(VALID_DOSAGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedDosage, ParserUtil.parseDosage(dosageWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFrequency((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFrequency(INVALID_FREQUENCY));","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_validValueWithoutWhitespace_returnsFrequency() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" Frequency expectedFrequency \u003d new Frequency(VALID_FREQUENCY);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedFrequency, ParserUtil.parseFrequency(VALID_FREQUENCY));","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void parseFrequency_validValueWithWhitespace_returnsTrimmedFrequency() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" String frequencyWithWhitespace \u003d WHITESPACE + VALID_FREQUENCY + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" Frequency expectedFrequency \u003d new Frequency(VALID_FREQUENCY);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedFrequency, ParserUtil.parseFrequency(frequencyWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStartDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStartDate(INVALID_START_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_validValueWithoutWhitespace_returnsStartDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"RoeReRe"},"content":" Date expectedStartDate \u003d new Date(VALID_START_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedStartDate, ParserUtil.parseStartDate(VALID_START_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" public void parseStartDate_validValueWithWhitespace_returnsTrimmedStartDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"RoeReRe"},"content":" String startDateWithWhitespace \u003d WHITESPACE + VALID_START_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"RoeReRe"},"content":" Date expectedStartDate \u003d new Date(VALID_START_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedStartDate, ParserUtil.parseStartDate(startDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEndDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEndDate(INVALID_END_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_validValueWithoutWhitespace_returnsEndDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" Date expectedEndDate \u003d new Date(VALID_END_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedEndDate, ParserUtil.parseEndDate(VALID_END_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" public void parseEndDate_validValueWithWhitespace_returnsTrimmedEndDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" String endDateWithWhitespace \u003d WHITESPACE + VALID_END_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" Date expectedEndDate \u003d new Date(VALID_END_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedEndDate, ParserUtil.parseEndDate(endDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseExpiryDate((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseExpiryDate(INVALID_EXPIRY_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_validValueWithoutWhitespace_returnsExpiryDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"RoeReRe"},"content":" Date expectedExpiryDate \u003d new Date(VALID_EXPIRY_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedExpiryDate, ParserUtil.parseExpiryDate(VALID_EXPIRY_DATE));","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"RoeReRe"},"content":" public void parseExpiryDate_validValueWithWhitespace_returnsTrimmedExpiryDate() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":" String expiryDateWithWhitespace \u003d WHITESPACE + VALID_EXPIRY_DATE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" Date expectedExpiryDate \u003d new Date(VALID_EXPIRY_DATE);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedExpiryDate, ParserUtil.parseExpiryDate(expiryDateWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTotalStock((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTotalStock(INVALID_TOTAL_STOCK));","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_validValueWithoutWhitespace_returnsTotalStock() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"RoeReRe"},"content":" Stock expectedTotalStock \u003d new Stock(VALID_TOTAL_STOCK);","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedTotalStock, ParserUtil.parseTotalStock(VALID_TOTAL_STOCK));","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"RoeReRe"},"content":" public void parseTotalStock_validValueWithWhitespace_returnsTrimmedTotalStock() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"RoeReRe"},"content":" String totalStockWithWhitespace \u003d WHITESPACE + VALID_TOTAL_STOCK + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"RoeReRe"},"content":" Stock expectedTotalStock \u003d new Stock(VALID_TOTAL_STOCK);","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedTotalStock, ParserUtil.parseTotalStock(totalStockWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNote((String) null));","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNote(INVALID_NOTE));","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_validValueWithoutWhitespace_returnsNote() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"RoeReRe"},"content":" Note expectedNote \u003d new Note(VALID_NOTE);","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedNote, ParserUtil.parseNote(VALID_NOTE));","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":237,"author":{"gitId":"RoeReRe"},"content":" public void parseNote_validValueWithWhitespace_returnsTrimmedNote() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":238,"author":{"gitId":"RoeReRe"},"content":" String noteWithWhitespace \u003d WHITESPACE + VALID_NOTE + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":239,"author":{"gitId":"RoeReRe"},"content":" Note expectedNote \u003d new Note(VALID_NOTE);","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(expectedNote, ParserUtil.parseNote(noteWithWhitespace));","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":246,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtilPrescription.parseTag(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":249,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":251,"author":{"gitId":"RoeReRe"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtilPrescription.parseTag(INVALID_TAG));","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":256,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":257,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedTag, ParserUtilPrescription.parseTag(VALID_TAG_1));","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":261,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedTag, ParserUtilPrescription.parseTag(tagWithWhitespace));","lastModifiedDate":"2023-10-16"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtilPrescription.parseTags(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":" assertThrows(ParseException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"RoeReRe"},"content":" () -\u003e ParserUtilPrescription.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ParserUtilPrescription.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":284,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"RoeReRe"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtilPrescription.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":30,"RoeReRe":132,"-":129}},{"path":"src/test/java/seedu/address/logic/parser/PrescriptionListParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.ListTodayCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListParserTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private final PrescriptionListParser parser \u003d new PrescriptionListParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"ChongWeiJie29"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" PrescriptionUtil.getAddPrescriptionCommand(prescription));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(new AddCommand(prescription), command);","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" public void parseCommand_listToday() throws Exception {","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"shyanyong"},"content":" assertTrue(parser.parseCommand(ListTodayCommand.COMMAND_WORD) instanceof ListTodayCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(prescription).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PrescriptionUtil.DescriptorDetails(descriptor));","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"shyanyong":5,"ChongWeiJie29":2,"RoeReRe":14,"-":74}},{"path":"src/test/java/seedu/address/logic/parser/TakeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.TakeCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":"public class TakeCommandParserTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" private TakeCommandParser parser \u003d new TakeCommandParser();","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" // Valid arguments with a valid name and dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand expectedCommand \u003d new TakeCommand(new Name(\"Aspirin\"), 2);","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" assertParseSuccess(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\", expectedCommand);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void parse_notIntegerDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"abc\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" public void parse_negativeIntegerDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"-1\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" // Empty input","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" // Whitespace input","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" // Missing Name","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_CONSUMPTION + \"2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public void parse_missingDosage_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" // Missing dosage","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" // Random values","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" // Random prefixes","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"ChongWeiJie29"},"content":" TakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":67,"ChongWeiJie29":15}},{"path":"src/test/java/seedu/address/logic/parser/UntakeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-22"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-22"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONSUMPTION;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"import seedu.address.logic.commands.UntakeCommand;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-22"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"public class UntakeCommandParserTest {","lastModifiedDate":"2023-10-22"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" private UntakeCommandParser parser \u003d new UntakeCommandParser();","lastModifiedDate":"2023-10-22"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2023-10-22"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" // Valid arguments with a valid name and dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" UntakeCommand expectedCommand \u003d new UntakeCommand(new Name(\"Aspirin\"), 2);","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" assertParseSuccess(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"2\", expectedCommand);","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" public void parse_notIntegerDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"abc\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" public void parse_negativeIntegerDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" // Invalid dosage (not an integer)","lastModifiedDate":"2023-10-22"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin \"","lastModifiedDate":"2023-10-22"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" + PREFIX_CONSUMPTION + \"-1\", ConsumptionCount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-22"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" public void parse_emptyPreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" // Empty input","lastModifiedDate":"2023-10-22"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" public void parse_whitespacePreamble_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" // Whitespace input","lastModifiedDate":"2023-10-22"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" // Missing Name","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_CONSUMPTION + \"2\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" public void parse_missingDosage_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" // Missing dosage","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \" \" + PREFIX_NAME + \"Aspirin\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" public void parse_extraValues_failure() {","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" // Random values","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"ABCDEFGH\",","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" // Random prefixes","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" assertParseFailure(parser, \"mn/ABCD d/2\",","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" UntakeCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-22"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-22"}],"authorContributionMap":{"jingyu987":82}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PRESCRIPTIONS;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.model.prescription.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.testutil.PrescriptionListBuilder;","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(new PrescriptionList(), new PrescriptionList(modelManager.getPrescriptionList()));","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"prescription/list/file/path\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"new/prescription/list/file/path\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPrescriptionListFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_validPath_setsPrescriptionListFilePath() {","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"ChongWeiJie29"},"content":" Path path \u003d Paths.get(\"prescription/list/file/path\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.setPrescriptionListFilePath(path);","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"ChongWeiJie29"},"content":" assertEquals(path, modelManager.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPrescription(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_prescriptionNotInPrescriptionList_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"ChongWeiJie29"},"content":" public void hasPrescription_prescriptionInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"ChongWeiJie29"},"content":" assertTrue(modelManager.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"ChongWeiJie29"},"content":" public void getFilteredPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPrescriptionList().remove(0));","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList prescriptionList \u003d new PrescriptionListBuilder()","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"ChongWeiJie29"},"content":" .withPrescription(ASPIRIN).withPrescription(PROPRANOLOL).build();","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList completedPrescriptionList \u003d new PrescriptionListBuilder().build();","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList differentPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"ChongWeiJie29"},"content":" PrescriptionList differentCompletedPrescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager \u003d new ModelManager(prescriptionList, completedPrescriptionList, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(prescriptionList, completedPrescriptionList, userPrefs);","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(differentPrescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":121,"author":{"gitId":"ChongWeiJie29"},"content":" differentCompletedPrescriptionList, userPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"ChongWeiJie29"},"content":" String[] keywords \u003d ASPIRIN.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.updateFilteredPrescriptionList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(prescriptionList, completedPrescriptionList, userPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" modelManager.updateFilteredPrescriptionList(PREDICATE_SHOW_ALL_PRESCRIPTIONS);","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" differentUserPrefs.setPrescriptionListFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":" assertFalse(modelManager.equals(new ModelManager(prescriptionList,","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionList, differentUserPrefs)));","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"ChongWeiJie29":39,"-":98}},{"path":"src/test/java/seedu/address/model/PrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collection;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" private final PrescriptionList prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" public void constructor() {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertEquals(Collections.emptyList(), prescriptionList.getPrescriptionList());","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e prescriptionList.resetData(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" public void resetData_withValidReadOnlyPrescriptionList_replacesData() {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList newData \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.resetData(newData);","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" assertEquals(newData, prescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" public void resetData_withDuplicatePrescriptions_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // Two prescription with the same identity fields","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL)","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e newPrescriptions \u003d Arrays.asList(ASPIRIN, editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" PrescriptionListStub newData \u003d new PrescriptionListStub(newPrescriptions);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e prescriptionList.resetData(newData));","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e prescriptionList.hasPrescription(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionNotInPrescriptionList_returnsFalse() {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" assertFalse(prescriptionList.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" assertTrue(prescriptionList.hasPrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" public void hasPrescription_prescriptionWithSameIdentityFieldsInPrescriptionList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" assertTrue(prescriptionList.hasPrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" public void getPrescriptionList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e prescriptionList.getPrescriptionList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" String expected \u003d PrescriptionList.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" + \"{prescriptions\u003d\" + prescriptionList.getPrescriptionList() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expected, prescriptionList.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" * A stub ReadOnlyPrescriptionList whose prescriptions list can violate interface constraints.","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" private static class PrescriptionListStub implements ReadOnlyPrescriptionList {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" private final ObservableList\u003cPrescription\u003e prescriptions \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" PrescriptionListStub(Collection\u003cPrescription\u003e prescriptions) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" this.prescriptions.setAll(prescriptions);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" public ObservableList\u003cPrescription\u003e getPrescriptionList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" return prescriptions;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":106}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChongWeiJie29"},"content":" public void setPrescriptionListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"ChongWeiJie29"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setPrescriptionListFilePath(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChongWeiJie29":2,"-":19}},{"path":"src/test/java/seedu/address/model/prescription/ConsumptionCountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"public class ConsumptionCountTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" assertThrows(NullPointerException.class, () -\u003e new ConsumptionCount(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public void constructor_invalidConsumptionCount_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" String invalidConsumptionCount \u003d \"\";","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" new ConsumptionCount(invalidConsumptionCount));","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" public void isValidConsumptionCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" // null consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" assertThrows(NullPointerException.class, () -\u003e ConsumptionCount.isValidConsumptionCount(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" // invalid consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"\")); // empty string","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\" \")); // spaces only","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" assertFalse(ConsumptionCount.isValidConsumptionCount(\"a\")); // alphabets","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" // valid consumptionCount","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"1\")); // single digit","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"12\")); // double digit","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" assertTrue(ConsumptionCount.isValidConsumptionCount(\"02\")); // trailing zero","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" public void incrementCount() {","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" // Test incrementing","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" consumptionCount.incrementCount(1);","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"1\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" // Test incrementing with a larger number","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" consumptionCount.incrementCount(5);","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"6\"));","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" public void decrementCount() {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"10\");","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" // Test decrementing","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" consumptionCount.decrementCount(1);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"9\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" // Test decrementing with a larger number","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" consumptionCount.decrementCount(5);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.getConsumptionCount().equals(\"4\"));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" public void setConsumptionCount() {","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount1 \u003d new ConsumptionCount(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" // Test setIsCompleted","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" consumptionCount.setConsumptionCount(\"1\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" assertEquals(consumptionCount.getConsumptionCount(), consumptionCount1.getConsumptionCount());","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" public void equals() {","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" ConsumptionCount consumptionCount \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.equals(new ConsumptionCount(\"0\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" assertTrue(consumptionCount.equals(consumptionCount));","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(null));","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(5.0f));","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" assertFalse(consumptionCount.equals(new ConsumptionCount(\"1\")));","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" // Add more test cases for equals as needed","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":99}},{"path":"src/test/java/seedu/address/model/prescription/DateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class DateTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Date(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Date(invalidDate));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidDate() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null date","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Date.isValidDate(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid date","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"1/01/2023\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"01/1/2023\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"01/01/23\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Date.isValidDate(\"2023/01/01\")); // contains incorrect date format","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" // valid date","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"01/01/2023\")); // day and month are single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"21/01/2023\")); // month is single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"01/12/2023\")); // day is single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Date.isValidDate(\"21/12/2023\")); // day and month are double digits","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" Date date \u003d new Date(\"01/01/2023\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" assertTrue(date.equals(new Date(\"01/01/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"02/01/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"01/02/2023\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"01/01/2024\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" assertFalse(date.equals(new Date(\"21/12/2024\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":65}},{"path":"src/test/java/seedu/address/model/prescription/DosageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class DosageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Dosage(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidDosage_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidDosage \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Dosage(invalidDosage));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidDosage() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Dosage.isValidDosage(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Dosage.isValidDosage(\"a\")); // alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid dosage","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"1\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"12\")); // double digit","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Dosage.isValidDosage(\"02\")); // trailing zero","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" Dosage dosage \u003d new Dosage(\"1\");","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertTrue(dosage.equals(new Dosage(\"1\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(dosage.equals(dosage));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertFalse(dosage.equals(new Dosage(\"2\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":58}},{"path":"src/test/java/seedu/address/model/prescription/FrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class FrequencyTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Frequency(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidFrequency \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Frequency(invalidFrequency));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidFrequency() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Frequency.isValidFrequency(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Daily*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Daaily\")); // extra characters","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Weeekly\")); // extra characters","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Wkly\")); // not enough characters","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Frequency.isValidFrequency(\"Yearly\")); // contains invalid values","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" // valid frequency","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Daily\")); // Daily","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Weekly\")); // Weekly","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Frequency.isValidFrequency(\"Monthly\")); // Month","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" Frequency frequency \u003d new Frequency(\"Daily\");","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" assertTrue(frequency.equals(new Frequency(\"Daily\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(frequency.equals(frequency));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" assertFalse(frequency.equals(new Frequency(\"Weekly\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":62}},{"path":"src/test/java/seedu/address/model/prescription/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" Collections.singletonList(\"Aspirin\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"Propranolol\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"Propranolol\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Caffox Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"AsPIRin\", \"ProPRanOlOl\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" assertTrue(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Aspirin\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Caffox\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Aspirin Propranolol\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" // Keywords match dosage, frequency and start date, but does not match name","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Aspirin\", \"1\", \"Daily\", \"01/08/2023\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" assertFalse(predicate.test(new PrescriptionBuilder().withName(\"Propranolol\").withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\").withStartDate(\"01/08/2023\").build()));","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":18,"-":68}},{"path":"src/test/java/seedu/address/model/prescription/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Name.isValidName(\"aspirin*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"ergotamine tartrate\")); // alphabets only","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"2nd aspirin\")); // alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"Aspirin\")); // with capital letters","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Name.isValidName(\"Aspirin that is white in colour\")); // long names","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":6,"-":54}},{"path":"src/test/java/seedu/address/model/prescription/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class NoteTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Note(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidNote_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidNote \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Note(invalidNote));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidNote() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null note","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Note.isValidNote(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid note","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Note.isValidNote(\"aspirin*\")); // contains non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid note","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"Drowsy\")); // alphabets only","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"12345\")); // numbers only","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"2 times after food\")); // alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"MAY cause drowsiness\")); // with capital letters","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Note.isValidNote(\"It can cause drowsiness so best to take at night\")); // long names","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" Note note \u003d new Note(\"Valid Note\");","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertTrue(note.equals(new Note(\"Valid Note\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" assertTrue(note.equals(note));","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" assertFalse(note.equals(new Note(\"Other Valid Note\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":60}},{"path":"src/test/java/seedu/address/model/prescription/PrescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_START_DATE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" /*","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" Prescription prescription \u003d new PrescriptionBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e prescription.getTags().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public void isSamePrescription() {","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.isSamePrescription(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.isSamePrescription(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // same name and start date, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(\"1\").withEndDate(\"01/01/2027\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.isSamePrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.isSamePrescription(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" Prescription editedPropranolol \u003d new PrescriptionBuilder(PROPRANOLOL)","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" .withName(VALID_NAME_PROPRANOLOL.toLowerCase()).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertFalse(PROPRANOLOL.isSamePrescription(editedPropranolol));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_PROPRANOLOL + \" \";","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" editedPropranolol \u003d new PrescriptionBuilder(PROPRANOLOL).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" assertFalse(PROPRANOLOL.isSamePrescription(editedPropranolol));","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" Prescription aspirinCopy \u003d new PrescriptionBuilder(ASPIRIN).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.equals(aspirinCopy));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" assertTrue(ASPIRIN.equals(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(5));","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" // different prescription -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(PROPRANOLOL));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withName(VALID_NAME_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" // different start date -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withStartDate(VALID_START_DATE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" // editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" // assertFalse(ASPIRIN.equals(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" String expected \u003d Prescription.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" + \"{name\u003d\" + ASPIRIN.getName()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" + \", dosage\u003d\" + ASPIRIN.getDosage()","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" + \", frequency\u003d\" + ASPIRIN.getFrequency()","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" + \", startDate\u003d\" + ASPIRIN.getStartDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" + \", endDate\u003d\" + ASPIRIN.getEndDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" + \", expiryDate\u003d\" + ASPIRIN.getExpiryDate()","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" + \", totalStock\u003d\" + ASPIRIN.getTotalStock()","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" + \", consumptionCount\u003d\" + ASPIRIN.getConsumptionCount()","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"ChongWeiJie29"},"content":" + \", isCompleted\u003d\" + ASPIRIN.getIsCompleted()","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" + \", note\u003d\" + ASPIRIN.getNote() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expected, ASPIRIN.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":3,"RoeReRe":95}},{"path":"src/test/java/seedu/address/model/prescription/StockTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"public class StockTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e new Stock(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" public void constructor_invalidStock_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" String invalidStock \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Stock(invalidStock));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public void isValidStock() {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" // null stock","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e Stock.isValidStock(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" // invalid stock","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"^\")); // non-alphanumeric characters","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" assertFalse(Stock.isValidStock(\"a\")); // alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" // valid stock","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"1\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"12\")); // double digit","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" assertTrue(Stock.isValidStock(\"02\")); // trailing zero","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" Stock stock \u003d new Stock(\"100\");","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertTrue(stock.equals(new Stock(\"100\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" assertTrue(stock.equals(stock));","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertFalse(stock.equals(new Stock(\"200\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":58}},{"path":"src/test/java/seedu/address/model/prescription/UniquePrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.model.prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DOSAGE_PROPRANOLOL;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.PROPRANOLOL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.DuplicatePrescriptionException;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.exceptions.PrescriptionNotFoundException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.PrescriptionBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"public class UniquePrescriptionListTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private final UniquePrescriptionList uniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public void contains_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.contains(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionNotInList_returnsFalse() {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" assertFalse(uniquePrescriptionList.contains(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionInList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" assertTrue(uniquePrescriptionList.contains(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" public void contains_prescriptionWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" assertTrue(uniquePrescriptionList.contains(editedAspirin));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" public void add_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.add(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" public void add_duplicatePrescription_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e uniquePrescriptionList.add(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_nullTargetPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.setPrescription(null, ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_nullEditedPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.setPrescription(ASPIRIN, null));","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_targetPrescriptionNotInList_throwsPrescriptionNotFoundException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" assertThrows(PrescriptionNotFoundException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionIsSamePrescription_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasSameIdentity_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" Prescription editedAspirin \u003d new PrescriptionBuilder(ASPIRIN).withDosage(VALID_DOSAGE_PROPRANOLOL).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(editedAspirin);","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" public void setPrescription_editedPrescriptionHasNonUniqueIdentity_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescription(ASPIRIN, PROPRANOLOL));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" public void remove_nullPrescription_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePrescriptionList.remove(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" public void remove_prescriptionDoesNotExist_throwsPrescriptionNotFoundException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" assertThrows(PrescriptionNotFoundException.class, () -\u003e uniquePrescriptionList.remove(ASPIRIN));","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void remove_existingPrescription_removesPrescription() {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.remove(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_nullUniquePrescriptionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions((UniquePrescriptionList) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_uniquePrescriptionList_replacesOwnListWithProvidedUniquePrescriptionList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(expectedUniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions((List\u003cPrescription\u003e) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.add(ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e prescriptionList \u003d Collections.singletonList(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(prescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"RoeReRe"},"content":" UniquePrescriptionList expectedUniquePrescriptionList \u003d new UniquePrescriptionList();","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" expectedUniquePrescriptionList.add(PROPRANOLOL);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" assertEquals(expectedUniquePrescriptionList, uniquePrescriptionList);","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" public void setPrescriptions_listWithDuplicatePrescriptions_throwsDuplicatePrescriptionException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" List\u003cPrescription\u003e listWithDuplicatePrescriptions \u003d Arrays.asList(ASPIRIN, ASPIRIN);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DuplicatePrescriptionException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.setPrescriptions(listWithDuplicatePrescriptions));","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"RoeReRe"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"RoeReRe"},"content":" assertEquals(uniquePrescriptionList.asUnmodifiableObservableList().toString(),","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"RoeReRe"},"content":" uniquePrescriptionList.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":177}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPrescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.storage.JsonAdaptedPrescription.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.ASPIRIN;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"public class JsonAdaptedPrescriptionTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NAME \u003d \"@spr!n\";","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_DOSAGE \u003d \"ABCD\";","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_FREQUENCY \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_START_DATE \u003d \"1/1/2023\";","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_END_DATE \u003d \"01/2/2024\";","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_EXPIRY_DATE \u003d \"2024/01/23\";","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_STOCK \u003d \"EFGH\";","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" private static final String INVALID_CONSUMPTION \u003d \"IJKL\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" private static final String INVALID_NOTE \u003d \" \";","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_NAME \u003d ASPIRIN.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_DOSAGE \u003d ASPIRIN.getDosage().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_FREQUENCY \u003d ASPIRIN.getFrequency().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" private static final String VALID_START_DATE \u003d ASPIRIN.getStartDate().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_END_DATE \u003d ASPIRIN.getEndDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_EXPIRY_DATE \u003d ASPIRIN.getExpiryDate().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_STOCK \u003d ASPIRIN.getTotalStock().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" private static final String VALID_CONSUMPTION \u003d ASPIRIN.getConsumptionCount().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" private static final String VALID_NOTE \u003d ASPIRIN.getNote().get().toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" // private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d ASPIRIN.getTags().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // .collect(Collectors.toList());","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_validPrescriptionDetails_returnsPrescription() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(ASPIRIN);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertEquals(ASPIRIN, prescription.toModelType());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" INVALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" null,","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidDosage_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" INVALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Dosage.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullDosage_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":105,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":106,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":107,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":108,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":109,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":110,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":113,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":114,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":116,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":117,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Dosage.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":118,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidFrequency_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" INVALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Frequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":140,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullFrequency_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":141,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":142,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":147,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":150,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":151,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":153,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Frequency.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidStartDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":" INVALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":165,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":166,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":167,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":176,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullStartDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":177,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":178,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":179,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":180,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":181,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":182,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":184,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":186,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":187,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":188,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":189,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":190,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":191,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":192,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":193,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":194,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidEndDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":195,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":196,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":197,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":198,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":199,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":200,"author":{"gitId":"RoeReRe"},"content":" INVALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":201,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":202,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":203,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":206,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":207,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":208,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":209,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":210,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":211,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":212,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullEndDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":213,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":214,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":216,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":219,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":220,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":222,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":223,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":224,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":225,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":226,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":227,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":228,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":229,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":230,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidExpiryDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":231,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":232,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":233,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":234,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":235,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":236,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":237,"author":{"gitId":"RoeReRe"},"content":" INVALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":238,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":239,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":242,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":243,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Date.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":244,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":245,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":246,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":247,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":248,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullExpiryDate_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":249,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":250,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":251,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":252,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":253,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":254,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":255,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":256,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":257,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":258,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":259,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":260,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":261,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Date.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":262,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":263,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":264,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":265,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":266,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidStock_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":267,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":268,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":269,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":270,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":271,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":272,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":273,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":274,"author":{"gitId":"RoeReRe"},"content":" INVALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":275,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"RoeReRe"},"content":" VALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":278,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":279,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Stock.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":280,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":281,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":282,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":283,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":284,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullStock_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":285,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":286,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":287,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":288,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":289,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":290,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":291,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":292,"author":{"gitId":"ChongWeiJie29"},"content":" // null,","lastModifiedDate":"2023-10-21"},{"lineNumber":293,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":294,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":295,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NOTE","lastModifiedDate":"2023-10-21"},{"lineNumber":296,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":297,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Stock.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":298,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":299,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":300,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":301,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":302,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidNote_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":303,"author":{"gitId":"RoeReRe"},"content":" JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-15"},{"lineNumber":304,"author":{"gitId":"RoeReRe"},"content":" VALID_NAME,","lastModifiedDate":"2023-10-15"},{"lineNumber":305,"author":{"gitId":"RoeReRe"},"content":" VALID_DOSAGE,","lastModifiedDate":"2023-10-15"},{"lineNumber":306,"author":{"gitId":"RoeReRe"},"content":" VALID_FREQUENCY,","lastModifiedDate":"2023-10-15"},{"lineNumber":307,"author":{"gitId":"RoeReRe"},"content":" VALID_START_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":308,"author":{"gitId":"RoeReRe"},"content":" VALID_END_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":309,"author":{"gitId":"RoeReRe"},"content":" VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-15"},{"lineNumber":310,"author":{"gitId":"RoeReRe"},"content":" VALID_STOCK,","lastModifiedDate":"2023-10-15"},{"lineNumber":311,"author":{"gitId":"jingyu987"},"content":" VALID_CONSUMPTION,","lastModifiedDate":"2023-10-16"},{"lineNumber":312,"author":{"gitId":"jingyu987"},"content":" false,","lastModifiedDate":"2023-10-16"},{"lineNumber":313,"author":{"gitId":"RoeReRe"},"content":" INVALID_NOTE","lastModifiedDate":"2023-10-15"},{"lineNumber":314,"author":{"gitId":"RoeReRe"},"content":" );","lastModifiedDate":"2023-10-15"},{"lineNumber":315,"author":{"gitId":"RoeReRe"},"content":" String expectedMessage \u003d Note.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":316,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":317,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":318,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":319,"author":{"gitId":"ChongWeiJie29"},"content":" // @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":320,"author":{"gitId":"ChongWeiJie29"},"content":" // public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":321,"author":{"gitId":"ChongWeiJie29"},"content":" // JsonAdaptedPrescription prescription \u003d new JsonAdaptedPrescription(","lastModifiedDate":"2023-10-21"},{"lineNumber":322,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_NAME,","lastModifiedDate":"2023-10-21"},{"lineNumber":323,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_DOSAGE,","lastModifiedDate":"2023-10-21"},{"lineNumber":324,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_FREQUENCY,","lastModifiedDate":"2023-10-21"},{"lineNumber":325,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_START_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":326,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_END_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":327,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_EXPIRY_DATE,","lastModifiedDate":"2023-10-21"},{"lineNumber":328,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_STOCK,","lastModifiedDate":"2023-10-21"},{"lineNumber":329,"author":{"gitId":"ChongWeiJie29"},"content":" // VALID_CONSUMPTION,","lastModifiedDate":"2023-10-21"},{"lineNumber":330,"author":{"gitId":"ChongWeiJie29"},"content":" // false,","lastModifiedDate":"2023-10-21"},{"lineNumber":331,"author":{"gitId":"ChongWeiJie29"},"content":" // null","lastModifiedDate":"2023-10-21"},{"lineNumber":332,"author":{"gitId":"ChongWeiJie29"},"content":" // );","lastModifiedDate":"2023-10-21"},{"lineNumber":333,"author":{"gitId":"ChongWeiJie29"},"content":" // String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2023-10-21"},{"lineNumber":334,"author":{"gitId":"ChongWeiJie29"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, prescription::toModelType);","lastModifiedDate":"2023-10-21"},{"lineNumber":335,"author":{"gitId":"ChongWeiJie29"},"content":" // }","lastModifiedDate":"2023-10-21"},{"lineNumber":336,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":337,"author":{"gitId":"RoeReRe"},"content":" // @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":338,"author":{"gitId":"RoeReRe"},"content":" // public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":339,"author":{"gitId":"RoeReRe"},"content":" // List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2023-10-15"},{"lineNumber":340,"author":{"gitId":"RoeReRe"},"content":" // invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2023-10-15"},{"lineNumber":341,"author":{"gitId":"RoeReRe"},"content":" // JsonAdaptedPrescription prescription \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":342,"author":{"gitId":"RoeReRe"},"content":" // new JsonAdaptedPrescription(VALID_NAME, VALID_DOSAGE, VALID_FREQUENCY, VALID_ADDRESS, invalidTags);","lastModifiedDate":"2023-10-15"},{"lineNumber":343,"author":{"gitId":"RoeReRe"},"content":" // assertThrows(IllegalValueException.class, prescription::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":344,"author":{"gitId":"RoeReRe"},"content":" // }","lastModifiedDate":"2023-10-15"},{"lineNumber":345,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":346,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":20,"ChongWeiJie29":125,"RoeReRe":201}},{"path":"src/test/java/seedu/address/storage/JsonPrescriptionListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.CAFFOX;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.IBUPROFEN;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.NAPROXEN;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"public class JsonPrescriptionListStorageTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPrescriptionListStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e readPrescriptionList(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private java.util.Optional\u003cReadOnlyPrescriptionList\u003e readPrescriptionList(String filePath) throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" return new JsonPrescriptionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" .readPrescriptionList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" assertFalse(readPrescriptionList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"notJsonFormatPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_invalidPrescriptionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"invalidPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" public void readPrescriptionList_invalidAndValidPrescriptionList_throwDataLoadingException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPrescriptionList(\"invalidAndValidPrescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" public void readAndSavePrescriptionList_allInOrder_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" Path filePath \u003d testFolder.resolve(\"TempPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList original \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage jsonPrescriptionListStorage \u003d new JsonPrescriptionListStorage(filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // Save in new file and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" ReadOnlyPrescriptionList readBack \u003d jsonPrescriptionListStorage.readPrescriptionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" original.addPrescription(IBUPROFEN);","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" original.removePrescription(NAPROXEN);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original, filePath);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" readBack \u003d jsonPrescriptionListStorage.readPrescriptionList(filePath).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" // Save and read without specifying file path","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" original.addPrescription(CAFFOX);","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" jsonPrescriptionListStorage.savePrescriptionList(original); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" readBack \u003d jsonPrescriptionListStorage.readPrescriptionList().get(); // file path not specified","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(readBack));","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList_nullPrescriptionList_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e savePrescriptionList(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" * Saves {@code prescriptionList} at the specified {@code filePath}.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" private void savePrescriptionList(ReadOnlyPrescriptionList prescriptionList, String filePath) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" new JsonPrescriptionListStorage(Paths.get(filePath))","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" .savePrescriptionList(prescriptionList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" public void savePrescriptionList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" assertThrows(NullPointerException.class, () -\u003e savePrescriptionList(new PrescriptionList(), null));","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":111}},{"path":"src/test/java/seedu/address/storage/JsonSerializablePrescriptionListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.testutil.TypicalPrescriptions;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":"public class JsonSerializablePrescriptionListTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" \"JsonSerializablePrescriptionListTest\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" private static final Path TYPICAL_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" private static final Path INVALID_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" private static final Path DUPLICATE_PRESCRIPTION_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePrescriptionList.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_typicalPrescriptionFile_success() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList prescriptionListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList typicalPrescriptionList \u003d TypicalPrescriptions.getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" assertEquals(prescriptionListFromFile, typicalPrescriptionList);","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_invalidPrescriptionFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" public void toModelType_duplicatePrescription_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PRESCRIPTION_FILE,","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" JsonSerializablePrescriptionList.class).get();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePrescriptionList.MESSAGE_DUPLICATE_PRESCRIPTION,","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":48}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder)","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" throws DataLoadingException {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" : null;","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" userPrefs.setPrescriptionListFilePath(Paths.get(\"prescriptionList.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":1,"RoeReRe":5,"-":118}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import static seedu.address.testutil.TypicalPrescriptions.getTypicalPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.ReadOnlyPrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" JsonPrescriptionListStorage prescriptionListStorage \u003d new JsonPrescriptionListStorage(","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" getTempFilePath(\"pl\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"ChongWeiJie29"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" getTempFilePath(\"prefs\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" JsonCompletedPrescriptionListStorage completedPrescriptionListStorage \u003d","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" new JsonCompletedPrescriptionListStorage(getTempFilePath(\"cpl\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" storageManager \u003d new StorageManager(prescriptionListStorage,","lastModifiedDate":"2023-10-23"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" completedPrescriptionListStorage, userPrefsStorage);","lastModifiedDate":"2023-10-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonUserPrefsStoragePrescription} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" * More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonUserPrefsStoragePrescriptionTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" public void prescriptionListReadSave() throws Exception {","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" * {@link JsonPrescriptionListStorage} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonPrescriptionListStorageTest} class.","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList original \u003d getTypicalPrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" storageManager.savePrescriptionList(original);","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" ReadOnlyPrescriptionList retrieved \u003d storageManager.readPrescriptionList().get();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" assertEquals(original, new PrescriptionList(retrieved));","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" public void getPrescriptionListFilePath() {","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" assertNotNull(storageManager.getPrescriptionListFilePath());","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":5,"RoeReRe":18,"-":51}},{"path":"src/test/java/seedu/address/testutil/EditPrescriptionDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shyanyong"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"shyanyong"},"content":"import seedu.address.logic.commands.EditCommand.EditPrescriptionDescriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"shyanyong"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"shyanyong"},"content":"/**","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"shyanyong"},"content":" * A utility class to help with building EditPrescriptionDescriptor objects.","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"shyanyong"},"content":"public class EditPrescriptionDescriptorBuilder {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"shyanyong"},"content":" private EditPrescriptionDescriptor descriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder() {","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder(EditPrescriptionDescriptor descriptor) {","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"shyanyong"},"content":" this.descriptor \u003d new EditPrescriptionDescriptor(descriptor);","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"shyanyong"},"content":" * Returns an {@code EditPrescriptionDescriptor} with fields containing {@code prescription}\u0027s details","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder(Prescription prescription) {","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"shyanyong"},"content":" descriptor \u003d new EditPrescriptionDescriptor();","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"shyanyong"},"content":" descriptor.setName(prescription.getName());","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getDosage().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setDosage(prescription.getDosage().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getFrequency().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setFrequency(prescription.getFrequency().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"shyanyong"},"content":" descriptor.setStartDate(prescription.getStartDate());","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getEndDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setEndDate(prescription.getEndDate().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getExpiryDate().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setExpiryDate(prescription.getExpiryDate().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getTotalStock().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setTotalStock(prescription.getTotalStock().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"shyanyong"},"content":" descriptor.setConsumptionCount(prescription.getConsumptionCount());","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setIsCompleted(prescription.getIsCompleted());","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"ChongWeiJie29"},"content":" if (prescription.getNote().isPresent()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setNote(prescription.getNote().get());","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Name} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"shyanyong"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Dosage} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withDosage(String dosage) {","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"shyanyong"},"content":" descriptor.setDosage(new Dosage(dosage));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Frequency} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withFrequency(String frequency) {","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"shyanyong"},"content":" descriptor.setFrequency(new Frequency(frequency));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code StartDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withStartDate(String startDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"shyanyong"},"content":" descriptor.setStartDate(new Date(startDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code EndDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withEndDate(String endDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"shyanyong"},"content":" descriptor.setEndDate(new Date(endDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code ExpiryDate} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withExpiryDate(String expiryDate) {","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"shyanyong"},"content":" descriptor.setExpiryDate(new Date(expiryDate));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code TotalStock} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withTotalStock(String totalStock) {","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"shyanyong"},"content":" descriptor.setTotalStock(new Stock(totalStock));","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code ConsumptionCount} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"jingyu987"},"content":" descriptor.setConsumptionCount(new ConsumptionCount(consumptionCount));","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"ChongWeiJie29"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" * Sets the {@code isCompleted} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"ChongWeiJie29"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"ChongWeiJie29"},"content":" public EditPrescriptionDescriptorBuilder withIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"ChongWeiJie29"},"content":" descriptor.setIsCompleted(isCompleted);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"ChongWeiJie29"},"content":" return this;","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"ChongWeiJie29"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":134,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"shyanyong"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"shyanyong"},"content":" * Sets the {@code Note} of the {@code EditPrescriptionDescriptor} that we are building.","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"shyanyong"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptorBuilder withNote(String note) {","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"shyanyong"},"content":" descriptor.setNote(new Note(note));","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"shyanyong"},"content":" return this;","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"shyanyong"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"shyanyong"},"content":" public EditPrescriptionDescriptor build() {","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"shyanyong"},"content":" return descriptor;","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"shyanyong"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"shyanyong"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"jingyu987":1,"shyanyong":112,"ChongWeiJie29":33}},{"path":"src/test/java/seedu/address/testutil/PrescriptionBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import seedu.address.model.prescription.ConsumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Date;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Dosage;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Frequency;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Note;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Stock;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" * A utility class to help with building Prescription objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public static final Name DEFAULT_NAME \u003d new Name(\"Aspirin\");","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" public static final Dosage DEFAULT_DOSAGE \u003d new Dosage(\"1\");","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" public static final Frequency DEFAULT_FREQUENCY \u003d new Frequency(\"Daily\");","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_START_DATE \u003d new Date(\"01/10/2023\");","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_END_DATE \u003d new Date(\"01/10/2024\");","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" public static final Date DEFAULT_EXPIRY_DATE \u003d new Date(\"11/02/2025\");","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" public static final Stock DEFAULT_STOCK \u003d new Stock(\"100\");","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" public static final ConsumptionCount DEFAULT_CONSUMPTION \u003d new ConsumptionCount(\"0\");","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public static final Boolean DEFAULT_ISCOMPLETED \u003d false;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" public static final Note DEFAULT_NOTE \u003d new Note(\"Take after food\");","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" private Name name;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDosage\u003e dosage;","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cFrequency\u003e frequency;","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" private Date startDate;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDate\u003e endDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cDate\u003e expiryDate;","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cStock\u003e totalStock;","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" private ConsumptionCount consumptionCount;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" private Boolean isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" private Optional\u003cNote\u003e note;","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // private Set\u003cTag\u003e tags;","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" * Creates a {@code PrescriptionBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" name \u003d DEFAULT_NAME;","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"ChongWeiJie29"},"content":" dosage \u003d Optional.ofNullable(DEFAULT_DOSAGE);","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"ChongWeiJie29"},"content":" frequency \u003d Optional.ofNullable(DEFAULT_FREQUENCY);","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" startDate \u003d DEFAULT_START_DATE;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"ChongWeiJie29"},"content":" endDate \u003d Optional.ofNullable(DEFAULT_END_DATE);","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"ChongWeiJie29"},"content":" expiryDate \u003d Optional.ofNullable(DEFAULT_EXPIRY_DATE);","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"ChongWeiJie29"},"content":" totalStock \u003d Optional.ofNullable(DEFAULT_STOCK);","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" consumptionCount \u003d DEFAULT_CONSUMPTION;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d DEFAULT_ISCOMPLETED;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"ChongWeiJie29"},"content":" note \u003d Optional.ofNullable(DEFAULT_NOTE);","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" // tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" * Initializes the PrescriptionBuilder with the data of {@code prescriptionToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder(Prescription prescriptionToCopy) {","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" name \u003d prescriptionToCopy.getName();","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" dosage \u003d prescriptionToCopy.getDosage();","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" frequency \u003d prescriptionToCopy.getFrequency();","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"RoeReRe"},"content":" startDate \u003d prescriptionToCopy.getStartDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" endDate \u003d prescriptionToCopy.getEndDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" expiryDate \u003d prescriptionToCopy.getExpiryDate();","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":" totalStock \u003d prescriptionToCopy.getTotalStock();","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" consumptionCount \u003d prescriptionToCopy.getConsumptionCount();","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" isCompleted \u003d prescriptionToCopy.getIsCompleted();","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" note \u003d prescriptionToCopy.getNote();","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" // tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Name} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withName(String name) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" // /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" // * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" // */","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" // public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" // this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"RoeReRe"},"content":" // return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" // }","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Dosage} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withDosage(String dosage) {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"ChongWeiJie29"},"content":" this.dosage \u003d Optional.ofNullable(new Dosage(dosage));","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Frequency} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withFrequency(String frequency) {","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"ChongWeiJie29"},"content":" this.frequency \u003d Optional.ofNullable(new Frequency(frequency));","lastModifiedDate":"2023-10-21"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withStartDate(String startDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":112,"author":{"gitId":"RoeReRe"},"content":" this.startDate \u003d new Date(startDate);","lastModifiedDate":"2023-10-15"},{"lineNumber":113,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":116,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":117,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":118,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withEndDate(String endDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"ChongWeiJie29"},"content":" this.endDate \u003d Optional.ofNullable(new Date(endDate));","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":123,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":125,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Date} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":126,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":127,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withExpiryDate(String expiryDate) {","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"ChongWeiJie29"},"content":" this.expiryDate \u003d Optional.ofNullable(new Date(expiryDate));","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":130,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":131,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":132,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":133,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Stock} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":134,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":135,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withStock(String stock) {","lastModifiedDate":"2023-10-15"},{"lineNumber":136,"author":{"gitId":"ChongWeiJie29"},"content":" this.totalStock \u003d Optional.ofNullable(new Stock(stock));","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":139,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":140,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"jingyu987"},"content":" * Sets the {@code Stock} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"jingyu987"},"content":" public PrescriptionBuilder withConsumptionCount(String consumptionCount) {","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"jingyu987"},"content":" this.consumptionCount \u003d new ConsumptionCount(consumptionCount);","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"jingyu987"},"content":" return this;","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"jingyu987"},"content":" * Sets the {@code isCompleted} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"jingyu987"},"content":" public PrescriptionBuilder withIsCompleted(Boolean isCompleted) {","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"jingyu987"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"jingyu987"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"RoeReRe"},"content":" * Sets the {@code Note} of the {@code Prescription} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionBuilder withNote(String note) {","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"ChongWeiJie29"},"content":" this.note \u003d Optional.ofNullable(new Note(note));","lastModifiedDate":"2023-10-21"},{"lineNumber":161,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":162,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":163,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":164,"author":{"gitId":"jingyu987"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"jingyu987"},"content":" * Builds the {@code Prescription} with the fields previously set.","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"jingyu987"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"RoeReRe"},"content":" public Prescription build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":168,"author":{"gitId":"ChongWeiJie29"},"content":" return new Prescription(name, dosage.orElse(null), frequency.orElse(null),","lastModifiedDate":"2023-10-21"},{"lineNumber":169,"author":{"gitId":"ChongWeiJie29"},"content":" startDate, endDate.orElse(null), expiryDate.orElse(null), totalStock.orElse(null),","lastModifiedDate":"2023-10-21"},{"lineNumber":170,"author":{"gitId":"ChongWeiJie29"},"content":" consumptionCount, isCompleted, note.orElse(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":171,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":28,"ChongWeiJie29":23,"RoeReRe":122}},{"path":"src/test/java/seedu/address/testutil/PrescriptionListBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":" * A utility class to help with building PrescriptionList objects.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":" * {@code PrescriptionList pl \u003d new PrescriptionListBuilder().withPrescription(PrescA, PrescB).build();}","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionListBuilder {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":" private PrescriptionList prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder() {","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" prescriptionList \u003d new PrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder(PrescriptionList prescriptionList) {","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" this.prescriptionList \u003d prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" * Adds a new {@code Prescription} to the {@code PrescriptionList} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionListBuilder withPrescription(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" prescriptionList.addPrescription(prescription);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" public PrescriptionList build() {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" return prescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"RoeReRe":34}},{"path":"src/test/java/seedu/address/testutil/PrescriptionUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DOSAGE;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EXPIRY_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FREQUENCY;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"ChongWeiJie29"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TOTAL_STOCK;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"ChongWeiJie29"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" * A utility class for Prescription.","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":"public class PrescriptionUtil {","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" * Returns an add command string for adding the {@code prescription}.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"RoeReRe"},"content":" public static String getAddPrescriptionCommand(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"ChongWeiJie29"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPrescriptionDetails(prescription);","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" * Returns the part of command string for the given {@code prescription}\u0027s details.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" public static String getPrescriptionDetails(Prescription prescription) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_NAME + prescription.getName().toString() + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_DOSAGE + prescription.getDosage().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_FREQUENCY + prescription.getFrequency().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_START_DATE + prescription.getStartDate().toString() + \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_END_DATE + prescription.getEndDate().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_EXPIRY_DATE + prescription.getExpiryDate().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_TOTAL_STOCK + prescription.getTotalStock().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"ChongWeiJie29"},"content":" sb.append(PREFIX_NOTE + prescription.getNote().get().toString() + \" \");","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" // person.getTags().stream().forEach(","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" // s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" // );","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" return sb.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"ChongWeiJie29":18,"RoeReRe":28}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_FIRST_PRESCRIPTION \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_SECOND_PRESCRIPTION \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" public static final Index INDEX_THIRD_PRESCRIPTION \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"RoeReRe":4,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPrescriptions.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RoeReRe"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"RoeReRe"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"RoeReRe"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"RoeReRe"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.PrescriptionList;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"RoeReRe"},"content":"import seedu.address.model.prescription.Prescription;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"RoeReRe"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"RoeReRe"},"content":" * A utility class containing a list of {@code Prescription} objects to be used in tests.","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"RoeReRe"},"content":"public class TypicalPrescriptions {","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ASPIRIN \u003d new PrescriptionBuilder().withName(\"Aspirin\")","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"23/02/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"12/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"100\")","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"shyanyong"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription PROPRANOLOL \u003d new PrescriptionBuilder().withName(\"Propranolol\")","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"4\")","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"22/07/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"500\")","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take after food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ERGOTAMINE \u003d new PrescriptionBuilder().withName(\"Ergotamine\")","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Weekly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/12/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"22/07/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"50\")","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription NAPROXEN \u003d new PrescriptionBuilder().withName(\"Naproxen\")","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Weekly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"01/08/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"20/06/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"13/01/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"75\")","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription ZOMIG \u003d new PrescriptionBuilder().withName(\"Zolmitriptan Rapimelt\")","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Monthly\")","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"20\")","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Drowsy\")","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"RoeReRe"},"content":" // Manually added","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription IBUPROFEN \u003d new PrescriptionBuilder().withName(\"Ibuprofen\")","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"2\")","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"50\")","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take after food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"RoeReRe"},"content":" public static final Prescription CAFFOX \u003d new PrescriptionBuilder().withName(\"Caffox\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"RoeReRe"},"content":" .withDosage(\"1\")","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"RoeReRe"},"content":" .withFrequency(\"Daily\")","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"RoeReRe"},"content":" .withStartDate(\"12/10/2023\")","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"RoeReRe"},"content":" .withEndDate(\"12/10/2024\")","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"RoeReRe"},"content":" .withExpiryDate(\"15/03/2025\")","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"RoeReRe"},"content":" .withStock(\"20\")","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" .withConsumptionCount(\"0\")","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"RoeReRe"},"content":" .withNote(\"Take before food\")","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"RoeReRe"},"content":" .build();","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"RoeReRe"},"content":" private TypicalPrescriptions() {} // prevents instantiation","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"RoeReRe"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"RoeReRe"},"content":" * Returns an {@code PrescriptionList} with all the typical prescriptions.","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"RoeReRe"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"RoeReRe"},"content":" public static PrescriptionList getTypicalPrescriptionList() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"RoeReRe"},"content":" PrescriptionList pl \u003d new PrescriptionList();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"RoeReRe"},"content":" for (Prescription prescription : getTypicalPrescriptions()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"RoeReRe"},"content":" pl.addPrescription(prescription);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"RoeReRe"},"content":" return pl;","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"RoeReRe"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"RoeReRe"},"content":" public static List\u003cPrescription\u003e getTypicalPrescriptions() {","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"RoeReRe"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ASPIRIN, PROPRANOLOL, ERGOTAMINE, NAPROXEN, ZOMIG));","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"RoeReRe"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"RoeReRe"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"jingyu987":7,"shyanyong":1,"RoeReRe":101}}] diff --git a/AY2324S1-CS2103T-T15-2_tp_master/commits.json b/AY2324S1-CS2103T-T15-2_tp_master/commits.json index 31994340..4597a927 100644 --- a/AY2324S1-CS2103T-T15-2_tp_master/commits.json +++ b/AY2324S1-CS2103T-T15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"TeeRenJing":[{"date":"2023-09-26","commitResults":[{"hash":"15f694c551fa6c868f855864324b87af5956e80e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from RoeReRe/v1.1","messageBody":"V1.1","fileTypesAndContributionMap":{}},{"hash":"00d1943da3b9ef194a046596c6f33ef69181a87b","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"0386ad2f1794509c84fd9f7ebd80a1d0a7e2c148","isMergeCommit":false,"messageTitle":"Fix naming errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"6d57bf0bb66853087415e635c6a7c7f619217620","isMergeCommit":false,"messageTitle":"Delete TeeRenJing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":30}}},{"hash":"8bd7f22b4a0fd1d868ce734c388227566ef14913","isMergeCommit":false,"messageTitle":"Create teerenjing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}}]},{"date":"2023-10-01","commitResults":[{"hash":"cbb5c4f4666d223b999d7fc35d9548a0c4365ace","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ChongWeiJie29/add-weijie-info","messageBody":"Add in photo, role details and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"91408e0802bffce242e0c90564b6248d13eb1f5b","isMergeCommit":false,"messageTitle":"Add delete to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":12}}},{"hash":"4243e196ac144b39661442f266ba3c9f7cb1e618","isMergeCommit":false,"messageTitle":"Edit format for standardization","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-03","commitResults":[{"hash":"15c33eb499dd35877f2adf391053018ba8590088","isMergeCommit":false,"messageTitle":"Change path to our tp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"a47349c00a07d10e3a6932ae95860fad141f0044","isMergeCommit":false,"messageTitle":"Customise User Case, NFR, Glossary and Testing","messageBody":"First draft of possible NFRs and User Stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":16}}},{"hash":"e1cf27ec1dbd4af2486f33cc106f509593e730b1","isMergeCommit":false,"messageTitle":"Customise UI, Logic, Model and Storage components","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-16","commitResults":[{"hash":"245003d4840628b7c40c7d3a8f435f0fa698647a","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":27}}},{"hash":"c06a7fbcd632d22bdb46c4779255c903d6239082","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":44}}}]},{"date":"2023-10-17","commitResults":[{"hash":"0e0aac168130c3b2262ea8dd163f1a42710fb74f","isMergeCommit":false,"messageTitle":"Test delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":129,"deletions":0}}},{"hash":"3109be511b444db781e40a4e959c4647d287cd3d","isMergeCommit":false,"messageTitle":"Test delete command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"8411b02e122250d7db9e8a40b3fe57acee57f08f","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"bdecca55bd30e4aaf494ffbdbcafdda3687fc425","isMergeCommit":false,"messageTitle":"Remove dependency on Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":13}}},{"hash":"905b3714af9b89a234c88f058c4adc7b20995f70","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"d26ecdff170454ab75586c417788f100643493b4","isMergeCommit":false,"messageTitle":"Remove Delete Person code","messageBody":"Remove code and files related to deleting Person.\n\nThese old code are no longer relevant.\n\nLets,\n* remove files where there are old code\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":117},"test-code":{"insertions":23,"deletions":202}}},{"hash":"187c0b416f72904f5fbfc9aff3e92031322f26ee","isMergeCommit":false,"messageTitle":"Remove old code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":0,"deletions":658}}}]},{"date":"2023-10-20","commitResults":[{"hash":"1adaf937ee8b804af54c2ea0c0046ea4a45a69af","isMergeCommit":false,"messageTitle":"Add help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":3}}},{"hash":"fdcc402004c47a610ab18912ce7ce86e730f4c71","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1},"test-code":{"insertions":34,"deletions":0}}},{"hash":"d5f74654a424ed0ca14ef33dd6553f42451a2151","isMergeCommit":false,"messageTitle":"Add exit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1},"test-code":{"insertions":34,"deletions":0}}},{"hash":"a7268a4394a4fe8112609fbd8a825d1ba353e5da","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":96,"deletions":0},"test-code":{"insertions":98,"deletions":0}}},{"hash":"b877aa2a79bf6882173d3bb3c27512b414af33cb","isMergeCommit":false,"messageTitle":"Edit delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":30},"test-code":{"insertions":31,"deletions":4}}}]},{"date":"2023-10-22","commitResults":[{"hash":"f2f7ab81321b60e83ec5368cc9781edfa7f84e0e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"jingyu987":[{"date":"2023-09-27","commitResults":[{"hash":"be58e5f933264f6e73c5f4d7f97b4c6fccec7596","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AY2324S1-CS2103T-T15-2/shyanyong-add-image-1","messageBody":"Update About Us","fileTypesAndContributionMap":{}},{"hash":"152378e5d8d6158520fac526592a1de2e75a6fdc","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":4}}},{"hash":"d73f899b60779f0d7a227b4d8b4683b1bd1c2635","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-02","commitResults":[{"hash":"2fd1241774038027ff4dd3d1bca6102375193dee","isMergeCommit":true,"messageTitle":"Merge pull request #36 from TeeRenJing/branch-User-Guide","messageBody":"Add delete to User Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"a805d31aa186cecced4a746f1baf35206e72fd4c","isMergeCommit":false,"messageTitle":"Add take command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":3}}},{"hash":"f481ef1c3bf5ca6b590a26a2d4bdb619d7cbe625","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"2d0c6a381f5d475820f31a6de9ea638e804046b0","isMergeCommit":false,"messageTitle":"Add ConsumptionCount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":5}}},{"hash":"11b06b86d7f670e4af76a9d59c73f43a93ce1cf4","isMergeCommit":false,"messageTitle":"Add ConsumptionCount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"75a5f6725ee58ae1408a21169b769dbebfd67851","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"9fef85fd50573c010ead5a27199bf55e5ae9f6ec","isMergeCommit":false,"messageTitle":"Add getters and setters to consumption count class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3}}},{"hash":"997aa2f5dcd2f76b155d25f0a26ec4d9a058cbb3","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jingyu987/branch-take","messageBody":"Add ConsumptionCount","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"ab16059e6f3b8ab2f96b0d089664ab1cf89268bd","isMergeCommit":false,"messageTitle":"Add take command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":9}}},{"hash":"f29225767159e7353ec37084861b542aaf451199","isMergeCommit":true,"messageTitle":"Merge pull request #60 from RoeReRe/v1.2-test","messageBody":"Set up baseline for the test codes and fix bugs","fileTypesAndContributionMap":{}},{"hash":"e43e6a7f49ccac98817af292cd8582d15ba8ac60","isMergeCommit":false,"messageTitle":"Fix errors displayed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7}}},{"hash":"7339a7ddd66d9c53ea1fd632ea4ce606bf9627bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-T15-2/tp into branch-take","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"337927e2559077a9ee66ec9f3977cf1b47252812","isMergeCommit":false,"messageTitle":"Fix test cases to inclue consumption count","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":2}}}]},{"date":"2023-10-18","commitResults":[{"hash":"1ecb2e466be186bd084c8154a19e153349de4232","isMergeCommit":false,"messageTitle":"Add tests for TakePrescriptionCommand and TakePrescriptionCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":187,"deletions":1}}},{"hash":"ef2cd9cb2aec2caceed3af2d3508235af37fcd02","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e14076f5b768ed1d23585af35d9eb72b61dfd168","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"9f4f7029efa1f070d00878709ffc1e68386531c9","isMergeCommit":false,"messageTitle":"Fix tests to not alter state of model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":12,"deletions":7}}},{"hash":"5d625b4622d445807c4c8f946e01172cf423f5cf","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ae9961d8556251ed6046b4e51736ff34260248c6","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0},"test-code":{"insertions":115,"deletions":0}}},{"hash":"91500cdb529516390704c7caf1dbfcecd2a77d94","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":26,"deletions":6}}},{"hash":"fad8a200f1b3696ace118078f437f2ebf3cfff6d","isMergeCommit":false,"messageTitle":"Add fullstop to strings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"ed82b5ddd6566215473d6d28238ea1c9cf43f527","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e9fba2ee57a9c773162627d365982e4691b30962","isMergeCommit":true,"messageTitle":"Merge pull request #69 from ChongWeiJie29/v1.2-check-changes","messageBody":"Remove unused AB3 code and first round clean up","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"d5dac592863fac3447061638828895273a4ff5e3","isMergeCommit":true,"messageTitle":"Merge pull request #80 from shyanyong/branch-edit","messageBody":"Add Edit Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"2d81954bb6f5e47c26654744b1978587b98e8e62","isMergeCommit":false,"messageTitle":"Improve take function and push isCompleted to prescription","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":61},"test-code":{"insertions":48,"deletions":65}}},{"hash":"bcd97c06bbd3bcb97d709c0245eac18733bda316","isMergeCommit":true,"messageTitle":"Merge pull request #84 from shyanyong/branch-codecov","messageBody":"Change Name of Adress Book","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"0a19e4333fecac2a4d85a95c2583aa758cdcbd34","isMergeCommit":true,"messageTitle":"Merge pull request #87 from TeeRenJing/change-delete-command","messageBody":"Edit delete command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"fb18a72928e8cd0b10938e789c6611b2a55ea60f","isMergeCommit":false,"messageTitle":"Add untake command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":2},"test-code":{"insertions":202,"deletions":0}}},{"hash":"bbf7490c37d9314c40093e21b3717908de668a58","isMergeCommit":true,"messageTitle":"Merge pull request #95 from shyanyong/branch-codecov","messageBody":"add tests","fileTypesAndContributionMap":{}},{"hash":"20566d1f3f6ed170407c403791af88dd88d741c5","isMergeCommit":true,"messageTitle":"Merge pull request #96 from ChongWeiJie29/branch-fix-optionalBug","messageBody":"Fix the bug that shows Optional in the UI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"d412b59b22f7033a1a819a0cf4925c240faa6cea","isMergeCommit":true,"messageTitle":"Merge pull request #103 from ChongWeiJie29/branch-completedPrescriptions","messageBody":"Include a new storage json for completed prescriptions","fileTypesAndContributionMap":{}}]}],"shyanyong":[{"date":"2023-09-27","commitResults":[{"hash":"08d0fdb89b99b13cec27f32208b9eafe614f7e67","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e327dfef86a23e7771df21ff61eeb5740fc02cc1","isMergeCommit":false,"messageTitle":"Create shyanyong.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}},{"hash":"ab28730f57acc6935fbcbb504f7b11f136bfb90c","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jingyu987/branch-v1.1","messageBody":"Update personal particulars","fileTypesAndContributionMap":{}}]},{"date":"2023-09-28","commitResults":[{"hash":"6dd5b7f3665e0c1fb4e428dec9f1b79af31aedd8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into add-shyanyong-info","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"c2f66c53d315235e0cbb42628407b6e06318c7cd","isMergeCommit":true,"messageTitle":"Merge pull request #37 from TeeRenJing/branch-DG","messageBody":"First draft of Developer Guide","fileTypesAndContributionMap":{}},{"hash":"1549ed122cd35b32e04a3db09294e8d64a8d6837","isMergeCommit":false,"messageTitle":"Add list today to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"44e3826aaa50a72cbd3613b3b069095cf7c7d304","isMergeCommit":false,"messageTitle":"Fixed typo in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"08b946d6a510bedebda84c13f49592c1ee740d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec133f253375bf8364f197102e10f76eff894e86","isMergeCommit":false,"messageTitle":"Fixed typo in User Guide and standardise image size","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"42acda27b9ef78456e0062baf0db0f52fa77adba","isMergeCommit":false,"messageTitle":"Add Use Case for List Today command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"8f6251354736097fe0523a96a7688bf468971991","isMergeCommit":false,"messageTitle":"Add baseline for list today command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"f738e481c1ecd853307a2c3665d934da725f3f81","isMergeCommit":false,"messageTitle":"Add listToday Command. This commit adds a new command, listToday, that allows users to list all prescriptions that are scheduled to be taken on the current day.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":122,"deletions":25}}},{"hash":"0a13f03d34fb27235d5ae4fe487697e20f09f3d4","isMergeCommit":false,"messageTitle":"update listToday command. Add predicate as a separate class. Fixed bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":30}}},{"hash":"4efab551c2cfaac11bb89d065586662556ea4254","isMergeCommit":false,"messageTitle":"fix typos","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b83c4d241ea51a8a6653a62104cf515d7607bb6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-list-today\u0027 of https://github.com/shyanyong/tp into branch-list-today","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1df5ecf220efa47b4aefac6420267c188b07c13b","isMergeCommit":true,"messageTitle":"Merge pull request #54 from shyanyong/branch-list-today","messageBody":"V1.2 listToday ","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"84f663d4252c074421fdc27bbaaa243f9e0e14f3","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jingyu987/branch-take","messageBody":"Add take command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"c39d2b3a30c4095eb0b3abe8e571642422d67b02","isMergeCommit":false,"messageTitle":"Add test for ListToday command.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":178,"deletions":0}}},{"hash":"dfe803d0d9bda9571d151c30d3229be25918d594","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bee4b278446d4933effc6593dc86c7d4985e2963","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"261983a95d9c4fd7d65c4c6c9b7bf3b868a8c43c","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"627b894209cb2d96626dd9096fbf68c75a49343b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-test-listToday\u0027 of https://github.com/shyanyong/tp into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"524733310f8fec0040ff9e7abf51033cfbd20f18","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7}}},{"hash":"70f3991704dfd4677d97339df7faa24bdf6fa968","isMergeCommit":false,"messageTitle":"Edit Equal in listToday","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-18","commitResults":[{"hash":"ea1e66bb553e112b75ccd53f75cb4e2a1a8835a4","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jingyu987/branch-take-test","messageBody":"Add tests for TakePrescriptionCommand and TakePrescriptionCommandParser","fileTypesAndContributionMap":{}},{"hash":"60688cf93179066ed4d21f34d2e5d11d9c7c2258","isMergeCommit":false,"messageTitle":"Remove unused imports. Add Testing for parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":23},"test-code":{"insertions":5,"deletions":28}}},{"hash":"dd388a629aa2c1c29ae80eb719a37d7ea1390236","isMergeCommit":false,"messageTitle":"add edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":380,"deletions":2},"test-code":{"insertions":239,"deletions":11}}}]},{"date":"2023-10-19","commitResults":[{"hash":"b6c2511d2e6fe75d1421c501a801755b73183838","isMergeCommit":false,"messageTitle":"add Edit Command. Update Test case. clean up code.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":169,"deletions":12}}}]},{"date":"2023-10-20","commitResults":[{"hash":"17dacbe9ccb369072e335003ecd03cd6887ec3b8","isMergeCommit":true,"messageTitle":"Merge pull request #81 from TeeRenJing/add-help-command","messageBody":"Add help command","fileTypesAndContributionMap":{}},{"hash":"567f7864dbff2cc2af74cf3aa9f3a4e0a209f45d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-exit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58b2e9bfa7d7849295f354e99f1adb2f87da954d","isMergeCommit":true,"messageTitle":"Merge pull request #82 from TeeRenJing/add-exit-command","messageBody":"Add exit command","fileTypesAndContributionMap":{}},{"hash":"7ac6f5ad51762e7cd626e8cebc5f3bf3502dc181","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f6e736c08bd9120cdf1bb14cacb0a677c03bbf9d","isMergeCommit":false,"messageTitle":"change name of adress book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e8fdee71e802e21236d5a691589cfcd5ff90c98","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-codecov","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab809e943751e78725e2a53933ca857ba6c04a93","isMergeCommit":false,"messageTitle":"fix bug for date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}},{"hash":"a31a8f384ba6af730931006ea009558adc1f72c5","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-22","commitResults":[{"hash":"27fb08a2092a46484a0a93244ac1f2c3ac7da43c","isMergeCommit":true,"messageTitle":"Merge pull request #92 from jingyu987/branch-untake","messageBody":"Add untake command","fileTypesAndContributionMap":{}},{"hash":"e5fe413c1be15c98714e02936314f491b5fd34ae","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2},"test-code":{"insertions":289,"deletions":16}}},{"hash":"364f2686499c82b33dd745573ea07c95cf536d04","isMergeCommit":true,"messageTitle":"Merge pull request #98 from ChongWeiJie29/branch-fix-optionalBug","messageBody":"Fix bug with optional dates check","fileTypesAndContributionMap":{}}]}],"ChongWeiJie29":[{"date":"2023-10-01","commitResults":[{"hash":"8568ce399c670df269e97fd00ba836cefea269f8","isMergeCommit":false,"messageTitle":"Add in supplementary details for README and format README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"365435089346f66488b21932299ce3af32ca297c","isMergeCommit":false,"messageTitle":"Add in photo, role details and PPP","messageBody":"Add in suitable photo and own details, together\nwith associated roles and responsibilities. Also\nadd in a skeletal PPP.\n","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":15}}}]},{"date":"2023-10-02","commitResults":[{"hash":"21cf2ba85ab046380914c17a3faf50551d35c53c","isMergeCommit":false,"messageTitle":"Add in some features for UG","messageBody":"Add in quick start, command format notes,\nhelp and add feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":45}}},{"hash":"15ba62c75be42b6af7befa3b37fa3f7cbe8f5406","isMergeCommit":false,"messageTitle":"Standardise bullet points","messageBody":"Edit bullet points so that all ends with fullstop.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"94a357426670e9e6e5c49003667dad2a839e5683","isMergeCommit":false,"messageTitle":"Modify some aspects in user guide","messageBody":"Edit saving data, editing the data file\nand command summary section.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":23}}},{"hash":"bdc12570375bc0f50ef801f35f39338a63748837","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-User-Guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"14d92c7fdd9cb9b094a43f9a2e8ac931dc98a5ea","isMergeCommit":true,"messageTitle":"Merge pull request #38 from RoeReRe/v1.1-list","messageBody":"Add list cmd and standardise image size for cmds in UG","fileTypesAndContributionMap":{}},{"hash":"43a11ba2cec2b18bfbe9e01874c7cda82326d1f2","isMergeCommit":true,"messageTitle":"Merge pull request #40 from shyanyong/branch-UG","messageBody":"Add list today in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"a144e17573e496e23485275e07ba58b27fce1e3f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from shyanyong/branch-DG","messageBody":"Add Use Case for List Today command","fileTypesAndContributionMap":{}},{"hash":"0d66cc9d4d1230224c6c63f3478b4e47e5b4da31","isMergeCommit":true,"messageTitle":"Merge pull request #43 from RoeReRe/v1.1-cleanup","messageBody":"Standardise all v1.1 progress so far.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"effe51f81c77bdcd1cdaf2851e1785a306168db8","isMergeCommit":false,"messageTitle":"Make changes to set baseline for v1.2","messageBody":"Implement the basic storage and model for the\nprescription list. Also implement the first version of\nthe add prescription command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3205,"deletions":1}}},{"hash":"19b17249dcd0a7c8dd14b2fc65c7914ddaaa7a67","isMergeCommit":false,"messageTitle":"change styles in fxml slightly to match checkstyle test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"docs":{"insertions":2,"deletions":2}}},{"hash":"8512a19a25ff3ee6fb4e101cdd6b6b8ec8620a89","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2023-10-15","commitResults":[{"hash":"2b287e8d11c9786e3c86d6b9b9a40035874f5c3e","isMergeCommit":true,"messageTitle":"Merge pull request #55 from RoeReRe/v1.2-list-new","messageBody":"V1.2 list","fileTypesAndContributionMap":{}},{"hash":"c5d780c5b69ebd56d05c88932166990485aaa148","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-list-today","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"899551daf879aedd912007965131414bf65a714e","isMergeCommit":true,"messageTitle":"Merge pull request #63 from TeeRenJing/branch-testdelete","messageBody":"Branch testdelete","fileTypesAndContributionMap":{}},{"hash":"22801eec88efee06caaf1f63a4e59daf757cf07b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from shyanyong/branch-test-listToday","messageBody":"Add test for ListToday command.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"cca47f6a65fcb079c016236c6f4a72b5b4b37f59","isMergeCommit":true,"messageTitle":"Merge pull request #65 from TeeRenJing/remove-delete-person","messageBody":"Remove Delete Person code","fileTypesAndContributionMap":{}},{"hash":"57f762ed2d750c3f4c3f2e3aff85dfc1083380fd","isMergeCommit":false,"messageTitle":"Remove unused AB3 code and first round clean up","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":519,"deletions":3894},"other":{"insertions":244,"deletions":245},"test-code":{"insertions":423,"deletions":2677}}},{"hash":"96a8fdca2b99d77bb7d3dd730cc16da6018c586e","isMergeCommit":true,"messageTitle":"Resolve conflicts for v1.2-check-changes PR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"607794bd581156f4bebe2a4c893a6283a3f5a9c2","isMergeCommit":true,"messageTitle":"Merge pull request #76 from RoeReRe/v1.2-standardiseList","messageBody":"Standardise List cmd to ListToday","fileTypesAndContributionMap":{}},{"hash":"577069701b9c103ec97ce711913af059163d11c7","isMergeCommit":false,"messageTitle":"Modify Prescription constructor to accept inputs without consumption count","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"fb0f7be35f56d4ed5fa24a6f5739a47eace86e1d","isMergeCommit":false,"messageTitle":"Add javadoc comment for prescription constructior","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"08fbb4fd0c560d5423e773ca5105fd18e71e8ac5","isMergeCommit":true,"messageTitle":"Merge pull request #86 from jingyu987/branch-take","messageBody":"Improve take function and push isCompleted to prescription","fileTypesAndContributionMap":{}},{"hash":"b41ade68d4857e68d38c141035fbfcc584fcd872","isMergeCommit":true,"messageTitle":"Merge pull request #85 from shyanyong/branch-date","messageBody":"Add logic to ensure correct date sequence","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"dfa62dba59b1e926718db31b58efb5d33f923eb0","isMergeCommit":false,"messageTitle":"include optional fields into BayMeds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":237,"deletions":124},"test-code":{"insertions":195,"deletions":176}}}]},{"date":"2023-10-22","commitResults":[{"hash":"ab1f4830572cdd97b7a0c65828361301adaadd11","isMergeCommit":true,"messageTitle":"Merge pull request #88 from ChongWeiJie29/branch-optional-fields","messageBody":"Include optional fields into BayMeds","fileTypesAndContributionMap":{}},{"hash":"7a22409e619528aefd3c0ca13c0cdab5e58e9daf","isMergeCommit":true,"messageTitle":"Merge pull request #91 from RoeReRe/v1.3-gui","messageBody":"V1.3 GUI","fileTypesAndContributionMap":{}},{"hash":"165de8207c6b75aa0eda08182d3a47e5a5b0dd72","isMergeCommit":true,"messageTitle":"Merge pull request #83 from TeeRenJing/add-find-command","messageBody":"Add find command","fileTypesAndContributionMap":{}},{"hash":"8f658ef2dcf6cb735e88eebf1a24c9644f70acca","isMergeCommit":false,"messageTitle":"Fix the bug that shows Optional in the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"7714da13f485d68e5012bbeff322aa938abfb3f6","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"9b3a427f36e8926c3254526a3114cf05f76ba228","isMergeCommit":false,"messageTitle":"Fix bug with optional dates check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2023-10-23","commitResults":[{"hash":"8e7314b19856005e92dc8d2464553fb74551e524","isMergeCommit":false,"messageTitle":"Include a new storage json for completed prescriptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":17},"test-code":{"insertions":114,"deletions":34}}},{"hash":"9d0c863d631a47e57f840d64172ee1c7da7bea8a","isMergeCommit":true,"messageTitle":"Merge pull request #102 from RoeReRe/v1.3-gui","messageBody":"Fix bug causing ListView to disappear","fileTypesAndContributionMap":{}}]}],"RoeReRe":[{"date":"2023-09-25","commitResults":[{"hash":"59edd5042e27d9af4ffc5ea931b28fc0f6dd03b2","isMergeCommit":false,"messageTitle":"Update README.md, AboutUs.md and Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":24}}},{"hash":"7a896dbe0fa15fd7955bd2c272c32bf5a0696b24","isMergeCommit":false,"messageTitle":"Update README.md, AboutUs.md, RoeReRe.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"40b40118529ca68a1c1311b85a7544fffe137bde","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"3b8c6d75c9b0d5674fe380e23eea1e2b77a144d9","isMergeCommit":false,"messageTitle":"Update UserGuide.md title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e170f7e19f2f7a1aff823c4ec56a734adfec96bc","isMergeCommit":false,"messageTitle":"Update skeletal PPP in roerere.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"3a89148525f88c275accac5c95fb55aeed622ea2","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md: Target user, value proposition and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":12}}}]},{"date":"2023-09-26","commitResults":[{"hash":"e1e64dd7ab39f9f55f99c08786f375ed3b18e5e5","isMergeCommit":false,"messageTitle":"Update documentation as per PR comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e069c61ebb6724e651220d87ffddd16f5602bb0b","isMergeCommit":true,"messageTitle":"Merge pull request #13 from TeeRenJing/branch-v1.1","messageBody":"Update personal particulars","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"826483f316e59039e33eb96118ff0f5b2b132fb5","isMergeCommit":true,"messageTitle":"Merge pull request #24 from ChongWeiJie29/branch-edit-README","messageBody":"Add in supplementary details for README and format README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"d1db2430038ea4ee19817f079bc807d7ed346696","isMergeCommit":true,"messageTitle":"Merge pull request #28 from ChongWeiJie29/branch-editUG","messageBody":"Add in some features for UG","fileTypesAndContributionMap":{}},{"hash":"22fe5e0cd768ebb6b31fe3ab82f87f52ae7289a3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ChongWeiJie29/branch-editUG-add","messageBody":"Edit add feature, command summary in user guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"8192b61083d4a9dc113ac4c10de0c9032531a552","isMergeCommit":false,"messageTitle":"Add list cmd and standardise image size for cmds in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":5}}},{"hash":"8bc71af3551ea3b4bd22fae4bf68e6931e2cd3a9","isMergeCommit":true,"messageTitle":"Merge pull request #41 from jingyu987/branch-editUG","messageBody":"Add take command in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"2ac8a89b61e4646bd3027657a34f509f2b00a6bd","isMergeCommit":false,"messageTitle":"Standardise all v1.1 docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":43}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4fffd693c143ca8d09f8366a8c894109da84b46d","isMergeCommit":false,"messageTitle":"Fix UG typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d98620f4051eef0dfbae5920d3441caf2d3a287a","isMergeCommit":true,"messageTitle":"Merge pull request #49 from ChongWeiJie29/v1.2-baselineChanges","messageBody":"Make changes to set baseline for v1.2","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"12ee14701440f3abab241444566b32600281b730","isMergeCommit":false,"messageTitle":"Add list cmd","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":7}}},{"hash":"11f245a81ec81b07509f78bed0efc26f8e048cb7","isMergeCommit":false,"messageTitle":"Fix slight style error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"928b82e80d6ce44531d7b1c75c0df05af4c9fd2a","isMergeCommit":false,"messageTitle":"Update ListPrescriptionCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4d3e3284f845f254a7e84277a13a8c00c0f636ff","isMergeCommit":false,"messageTitle":"Add util class for test code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":314,"deletions":0}}},{"hash":"ac017f556d7a0de3b0da0d9e9cacf26aeabac493","isMergeCommit":false,"messageTitle":"Add test code for JsonAdapatedPrescription","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":388,"deletions":1}}},{"hash":"ed13f47ab69b76af5a8b7b1f170e837ca3325993","isMergeCommit":false,"messageTitle":"Add tests for Prescription Storage module","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":305,"deletions":4}}},{"hash":"6488892feda70fa675609eeec8fc4c837f72305a","isMergeCommit":false,"messageTitle":"Fix Frequency.java regex and add test code for prescription fields except Prescription, UniquePrescriptionList and PrescriptionList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":602,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"1f9f7330104edf08146b45a6847c1056bbd6ef9a","isMergeCommit":false,"messageTitle":"Set up baseline for testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2},"test-code":{"insertions":1203,"deletions":123}}},{"hash":"12b95dc20ff2e312b1fcc8e10ed46eeee317d953","isMergeCommit":false,"messageTitle":"Fix CI checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"dba822848ff2873825951541c9329ea055349ca0","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":203,"deletions":191}}},{"hash":"84ab33c5636b0d1c1abf7ba2a9f2cc5bb2492843","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"c361c1bf0b67b0be51e0f9da3af688107c1d7afe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"88040d221563d2f3e60f6a500a5d2ec97a83eb9f","isMergeCommit":false,"messageTitle":"Merge with JY\u0027s commit for consumption","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3da602635ffd1efd4aadb3ec14389885c60955e4","isMergeCommit":true,"messageTitle":"Merge pull request #62 from TeeRenJing/branch-delete","messageBody":"Add delete command","fileTypesAndContributionMap":{}},{"hash":"a20be8cdbfa85dbbb8fbf5900f041d1403a1960e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-take","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62dc52fe6f07dd5d5310351567b3a372246b6847","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"fa415ac9bee6948e4e4ec643e0002b295108661f","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"93bb1e77e51b61aa5d49dd2f9f87c54938f36c6c","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-18","commitResults":[{"hash":"5525197f260cdda15c6c92ad32170a50a01a9cc8","isMergeCommit":false,"messageTitle":"Standardise List cmd to ListToday","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"304ae174333e93bb3ad93d83b78c19a4f3c02a64","isMergeCommit":false,"messageTitle":"Update ListCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"514d33a3c33c5a57f255ccdf1fff1c449c2811b9","isMergeCommit":true,"messageTitle":"Merge pull request #70 from shyanyong/branch-codecov","messageBody":"Remove unused imports. Add Testing for parser","fileTypesAndContributionMap":{}},{"hash":"af9c8d1eedcc0d7d157104f8f84aff4ee37429fc","isMergeCommit":true,"messageTitle":"Merge pull request #78 from ChongWeiJie29/branch-tidy-up","messageBody":"Modify Prescription to accept inputs without consumption count","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"b101f84e50a80405f0d12314bec89978abc47264","isMergeCommit":false,"messageTitle":"Redo GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":184,"deletions":49}}},{"hash":"3c5fa817c4e0caad79ccc0a342e115fec1e8c3a3","isMergeCommit":false,"messageTitle":"Change GUI to allow for better UX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":262,"deletions":152}}},{"hash":"a8eba6b820e3428c273bf5fc8d8e6441a336f439","isMergeCommit":true,"messageTitle":"Merge from upstream master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f2ad926d936e7bfde5997e7743ff9068aad8d84","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":7}}},{"hash":"17658fb3ec6c376e5c88ef896126fdad82eda4a2","isMergeCommit":false,"messageTitle":"Add blank display for optional field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}}]},{"date":"2023-10-23","commitResults":[{"hash":"7ca390c832ff7eb2e9a82caf01e4cf8986c00513","isMergeCommit":false,"messageTitle":"Fix bug causing ListView to disappear","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"0d964bdaf14bebcbeb242eac5eaa5b5290eb6e65","isMergeCommit":false,"messageTitle":"Change neutral label and delete unused AB3 UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":62}}}]}]},"authorFileTypeContributionMap":{"TeeRenJing":{"docs":76,"functional-code":105,"test-code":199},"jingyu987":{"docs":54,"functional-code":475,"test-code":519},"shyanyong":{"docs":66,"functional-code":347,"test-code":599},"ChongWeiJie29":{"docs":99,"functional-code":2360,"test-code":768},"RoeReRe":{"docs":125,"functional-code":358,"test-code":1554}},"authorContributionVariance":{"TeeRenJing":53555.48,"jingyu987":13309.214,"shyanyong":19270.0,"ChongWeiJie29":2203121.0,"RoeReRe":187099.3},"authorDisplayNameMap":{"TeeRenJing":"CS2103T-T15-2 TEE ..JING","jingyu987":"CS2103T-T15-2 HUAN..G YU","shyanyong":"CS2103T-T15-2 WONG..YONG","ChongWeiJie29":"CS2103T-T15-2 CHON.. JIE","RoeReRe":"CS2103T-T15-2 ONG ..IANG"}} +{"authorDailyContributionsMap":{"TeeRenJing":[{"date":"2023-09-26","commitResults":[{"hash":"15f694c551fa6c868f855864324b87af5956e80e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from RoeReRe/v1.1","messageBody":"V1.1","fileTypesAndContributionMap":{}},{"hash":"00d1943da3b9ef194a046596c6f33ef69181a87b","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"0386ad2f1794509c84fd9f7ebd80a1d0a7e2c148","isMergeCommit":false,"messageTitle":"Fix naming errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"6d57bf0bb66853087415e635c6a7c7f619217620","isMergeCommit":false,"messageTitle":"Delete TeeRenJing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":30}}},{"hash":"8bd7f22b4a0fd1d868ce734c388227566ef14913","isMergeCommit":false,"messageTitle":"Create teerenjing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}}]},{"date":"2023-10-01","commitResults":[{"hash":"cbb5c4f4666d223b999d7fc35d9548a0c4365ace","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ChongWeiJie29/add-weijie-info","messageBody":"Add in photo, role details and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"91408e0802bffce242e0c90564b6248d13eb1f5b","isMergeCommit":false,"messageTitle":"Add delete to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":12}}},{"hash":"4243e196ac144b39661442f266ba3c9f7cb1e618","isMergeCommit":false,"messageTitle":"Edit format for standardization","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-03","commitResults":[{"hash":"15c33eb499dd35877f2adf391053018ba8590088","isMergeCommit":false,"messageTitle":"Change path to our tp","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"a47349c00a07d10e3a6932ae95860fad141f0044","isMergeCommit":false,"messageTitle":"Customise User Case, NFR, Glossary and Testing","messageBody":"First draft of possible NFRs and User Stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":16}}},{"hash":"e1cf27ec1dbd4af2486f33cc106f509593e730b1","isMergeCommit":false,"messageTitle":"Customise UI, Logic, Model and Storage components","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-16","commitResults":[{"hash":"245003d4840628b7c40c7d3a8f435f0fa698647a","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":27}}},{"hash":"c06a7fbcd632d22bdb46c4779255c903d6239082","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":44}}}]},{"date":"2023-10-17","commitResults":[{"hash":"0e0aac168130c3b2262ea8dd163f1a42710fb74f","isMergeCommit":false,"messageTitle":"Test delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":129,"deletions":0}}},{"hash":"3109be511b444db781e40a4e959c4647d287cd3d","isMergeCommit":false,"messageTitle":"Test delete command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"8411b02e122250d7db9e8a40b3fe57acee57f08f","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"bdecca55bd30e4aaf494ffbdbcafdda3687fc425","isMergeCommit":false,"messageTitle":"Remove dependency on Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":13}}},{"hash":"905b3714af9b89a234c88f058c4adc7b20995f70","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"d26ecdff170454ab75586c417788f100643493b4","isMergeCommit":false,"messageTitle":"Remove Delete Person code","messageBody":"Remove code and files related to deleting Person.\n\nThese old code are no longer relevant.\n\nLets,\n* remove files where there are old code\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":117},"test-code":{"insertions":23,"deletions":202}}},{"hash":"187c0b416f72904f5fbfc9aff3e92031322f26ee","isMergeCommit":false,"messageTitle":"Remove old code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":0,"deletions":658}}}]},{"date":"2023-10-20","commitResults":[{"hash":"1adaf937ee8b804af54c2ea0c0046ea4a45a69af","isMergeCommit":false,"messageTitle":"Add help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":3}}},{"hash":"fdcc402004c47a610ab18912ce7ce86e730f4c71","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1},"test-code":{"insertions":34,"deletions":0}}},{"hash":"d5f74654a424ed0ca14ef33dd6553f42451a2151","isMergeCommit":false,"messageTitle":"Add exit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1},"test-code":{"insertions":34,"deletions":0}}},{"hash":"a7268a4394a4fe8112609fbd8a825d1ba353e5da","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":96,"deletions":0},"test-code":{"insertions":98,"deletions":0}}},{"hash":"b877aa2a79bf6882173d3bb3c27512b414af33cb","isMergeCommit":false,"messageTitle":"Edit delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":30},"test-code":{"insertions":31,"deletions":4}}}]},{"date":"2023-10-22","commitResults":[{"hash":"30dc1f412937b656c89796fb3263058890e1f03b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cce2e88692ea5c14652a48880ebbe57ad97822bd","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":336,"deletions":88}}},{"hash":"f2f7ab81321b60e83ec5368cc9781edfa7f84e0e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-24","commitResults":[{"hash":"92293a44a00b271936e0cb7e8d6e8893868e32f0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a692d0ee7658bebb5adf149215e80c1d5258754f","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}}]}],"jingyu987":[{"date":"2023-09-27","commitResults":[{"hash":"be58e5f933264f6e73c5f4d7f97b4c6fccec7596","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AY2324S1-CS2103T-T15-2/shyanyong-add-image-1","messageBody":"Update About Us","fileTypesAndContributionMap":{}},{"hash":"152378e5d8d6158520fac526592a1de2e75a6fdc","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":4}}},{"hash":"d73f899b60779f0d7a227b4d8b4683b1bd1c2635","isMergeCommit":false,"messageTitle":"Update personal particulars","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-02","commitResults":[{"hash":"2fd1241774038027ff4dd3d1bca6102375193dee","isMergeCommit":true,"messageTitle":"Merge pull request #36 from TeeRenJing/branch-User-Guide","messageBody":"Add delete to User Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"a805d31aa186cecced4a746f1baf35206e72fd4c","isMergeCommit":false,"messageTitle":"Add take command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":3}}},{"hash":"f481ef1c3bf5ca6b590a26a2d4bdb619d7cbe625","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"2d0c6a381f5d475820f31a6de9ea638e804046b0","isMergeCommit":false,"messageTitle":"Add ConsumptionCount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":5}}},{"hash":"11b06b86d7f670e4af76a9d59c73f43a93ce1cf4","isMergeCommit":false,"messageTitle":"Add ConsumptionCount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"75a5f6725ee58ae1408a21169b769dbebfd67851","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"9fef85fd50573c010ead5a27199bf55e5ae9f6ec","isMergeCommit":false,"messageTitle":"Add getters and setters to consumption count class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3}}},{"hash":"997aa2f5dcd2f76b155d25f0a26ec4d9a058cbb3","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jingyu987/branch-take","messageBody":"Add ConsumptionCount","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"ab16059e6f3b8ab2f96b0d089664ab1cf89268bd","isMergeCommit":false,"messageTitle":"Add take command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":9}}},{"hash":"f29225767159e7353ec37084861b542aaf451199","isMergeCommit":true,"messageTitle":"Merge pull request #60 from RoeReRe/v1.2-test","messageBody":"Set up baseline for the test codes and fix bugs","fileTypesAndContributionMap":{}},{"hash":"e43e6a7f49ccac98817af292cd8582d15ba8ac60","isMergeCommit":false,"messageTitle":"Fix errors displayed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7}}},{"hash":"7339a7ddd66d9c53ea1fd632ea4ce606bf9627bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2103T-T15-2/tp into branch-take","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"337927e2559077a9ee66ec9f3977cf1b47252812","isMergeCommit":false,"messageTitle":"Fix test cases to inclue consumption count","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":2}}}]},{"date":"2023-10-18","commitResults":[{"hash":"1ecb2e466be186bd084c8154a19e153349de4232","isMergeCommit":false,"messageTitle":"Add tests for TakePrescriptionCommand and TakePrescriptionCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":187,"deletions":1}}},{"hash":"ef2cd9cb2aec2caceed3af2d3508235af37fcd02","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e14076f5b768ed1d23585af35d9eb72b61dfd168","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"9f4f7029efa1f070d00878709ffc1e68386531c9","isMergeCommit":false,"messageTitle":"Fix tests to not alter state of model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":12,"deletions":7}}},{"hash":"5d625b4622d445807c4c8f946e01172cf423f5cf","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ae9961d8556251ed6046b4e51736ff34260248c6","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0},"test-code":{"insertions":115,"deletions":0}}},{"hash":"91500cdb529516390704c7caf1dbfcecd2a77d94","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":26,"deletions":6}}},{"hash":"fad8a200f1b3696ace118078f437f2ebf3cfff6d","isMergeCommit":false,"messageTitle":"Add fullstop to strings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"ed82b5ddd6566215473d6d28238ea1c9cf43f527","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e9fba2ee57a9c773162627d365982e4691b30962","isMergeCommit":true,"messageTitle":"Merge pull request #69 from ChongWeiJie29/v1.2-check-changes","messageBody":"Remove unused AB3 code and first round clean up","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"d5dac592863fac3447061638828895273a4ff5e3","isMergeCommit":true,"messageTitle":"Merge pull request #80 from shyanyong/branch-edit","messageBody":"Add Edit Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"2d81954bb6f5e47c26654744b1978587b98e8e62","isMergeCommit":false,"messageTitle":"Improve take function and push isCompleted to prescription","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":61},"test-code":{"insertions":48,"deletions":65}}},{"hash":"bcd97c06bbd3bcb97d709c0245eac18733bda316","isMergeCommit":true,"messageTitle":"Merge pull request #84 from shyanyong/branch-codecov","messageBody":"Change Name of Adress Book","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"0a19e4333fecac2a4d85a95c2583aa758cdcbd34","isMergeCommit":true,"messageTitle":"Merge pull request #87 from TeeRenJing/change-delete-command","messageBody":"Edit delete command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"fb18a72928e8cd0b10938e789c6611b2a55ea60f","isMergeCommit":false,"messageTitle":"Add untake command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":2},"test-code":{"insertions":202,"deletions":0}}},{"hash":"bbf7490c37d9314c40093e21b3717908de668a58","isMergeCommit":true,"messageTitle":"Merge pull request #95 from shyanyong/branch-codecov","messageBody":"add tests","fileTypesAndContributionMap":{}},{"hash":"20566d1f3f6ed170407c403791af88dd88d741c5","isMergeCommit":true,"messageTitle":"Merge pull request #96 from ChongWeiJie29/branch-fix-optionalBug","messageBody":"Fix the bug that shows Optional in the UI","fileTypesAndContributionMap":{}}]},{"date":"2023-10-23","commitResults":[{"hash":"d412b59b22f7033a1a819a0cf4925c240faa6cea","isMergeCommit":true,"messageTitle":"Merge pull request #103 from ChongWeiJie29/branch-completedPrescriptions","messageBody":"Include a new storage json for completed prescriptions","fileTypesAndContributionMap":{}},{"hash":"f3c055b23c51c220a4cebceb2b88ddceeb8468bb","isMergeCommit":false,"messageTitle":"Add listCompleted command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":3}}},{"hash":"e2784a91e2c3d0b3f679decfdf6861295b660734","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"162ab0ef08d9419ea4f845611a7d95262aa06174","isMergeCommit":false,"messageTitle":"Add updating prescriptionlists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":7}}},{"hash":"652bed0276aae059b5cd68e522387e9427ce162e","isMergeCommit":false,"messageTitle":"Add updating prescriptionlists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]}],"shyanyong":[{"date":"2023-09-27","commitResults":[{"hash":"08d0fdb89b99b13cec27f32208b9eafe614f7e67","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e327dfef86a23e7771df21ff61eeb5740fc02cc1","isMergeCommit":false,"messageTitle":"Create shyanyong.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":0}}},{"hash":"ab28730f57acc6935fbcbb504f7b11f136bfb90c","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jingyu987/branch-v1.1","messageBody":"Update personal particulars","fileTypesAndContributionMap":{}}]},{"date":"2023-09-28","commitResults":[{"hash":"6dd5b7f3665e0c1fb4e428dec9f1b79af31aedd8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into add-shyanyong-info","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"c2f66c53d315235e0cbb42628407b6e06318c7cd","isMergeCommit":true,"messageTitle":"Merge pull request #37 from TeeRenJing/branch-DG","messageBody":"First draft of Developer Guide","fileTypesAndContributionMap":{}},{"hash":"1549ed122cd35b32e04a3db09294e8d64a8d6837","isMergeCommit":false,"messageTitle":"Add list today to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"44e3826aaa50a72cbd3613b3b069095cf7c7d304","isMergeCommit":false,"messageTitle":"Fixed typo in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"08b946d6a510bedebda84c13f49592c1ee740d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec133f253375bf8364f197102e10f76eff894e86","isMergeCommit":false,"messageTitle":"Fixed typo in User Guide and standardise image size","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"42acda27b9ef78456e0062baf0db0f52fa77adba","isMergeCommit":false,"messageTitle":"Add Use Case for List Today command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":3}}}]},{"date":"2023-10-13","commitResults":[{"hash":"8f6251354736097fe0523a96a7688bf468971991","isMergeCommit":false,"messageTitle":"Add baseline for list today command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"f738e481c1ecd853307a2c3665d934da725f3f81","isMergeCommit":false,"messageTitle":"Add listToday Command. This commit adds a new command, listToday, that allows users to list all prescriptions that are scheduled to be taken on the current day.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":122,"deletions":25}}},{"hash":"0a13f03d34fb27235d5ae4fe487697e20f09f3d4","isMergeCommit":false,"messageTitle":"update listToday command. Add predicate as a separate class. Fixed bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":30}}},{"hash":"4efab551c2cfaac11bb89d065586662556ea4254","isMergeCommit":false,"messageTitle":"fix typos","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b83c4d241ea51a8a6653a62104cf515d7607bb6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-list-today\u0027 of https://github.com/shyanyong/tp into branch-list-today","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1df5ecf220efa47b4aefac6420267c188b07c13b","isMergeCommit":true,"messageTitle":"Merge pull request #54 from shyanyong/branch-list-today","messageBody":"V1.2 listToday ","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"84f663d4252c074421fdc27bbaaa243f9e0e14f3","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jingyu987/branch-take","messageBody":"Add take command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"c39d2b3a30c4095eb0b3abe8e571642422d67b02","isMergeCommit":false,"messageTitle":"Add test for ListToday command.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":178,"deletions":0}}},{"hash":"dfe803d0d9bda9571d151c30d3229be25918d594","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bee4b278446d4933effc6593dc86c7d4985e2963","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"261983a95d9c4fd7d65c4c6c9b7bf3b868a8c43c","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"627b894209cb2d96626dd9096fbf68c75a49343b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-test-listToday\u0027 of https://github.com/shyanyong/tp into branch-test-listToday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"524733310f8fec0040ff9e7abf51033cfbd20f18","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7}}},{"hash":"70f3991704dfd4677d97339df7faa24bdf6fa968","isMergeCommit":false,"messageTitle":"Edit Equal in listToday","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-18","commitResults":[{"hash":"ea1e66bb553e112b75ccd53f75cb4e2a1a8835a4","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jingyu987/branch-take-test","messageBody":"Add tests for TakePrescriptionCommand and TakePrescriptionCommandParser","fileTypesAndContributionMap":{}},{"hash":"60688cf93179066ed4d21f34d2e5d11d9c7c2258","isMergeCommit":false,"messageTitle":"Remove unused imports. Add Testing for parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":23},"test-code":{"insertions":5,"deletions":28}}},{"hash":"dd388a629aa2c1c29ae80eb719a37d7ea1390236","isMergeCommit":false,"messageTitle":"add edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":380,"deletions":2},"test-code":{"insertions":239,"deletions":11}}}]},{"date":"2023-10-19","commitResults":[{"hash":"b6c2511d2e6fe75d1421c501a801755b73183838","isMergeCommit":false,"messageTitle":"add Edit Command. Update Test case. clean up code.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":169,"deletions":12}}}]},{"date":"2023-10-20","commitResults":[{"hash":"17dacbe9ccb369072e335003ecd03cd6887ec3b8","isMergeCommit":true,"messageTitle":"Merge pull request #81 from TeeRenJing/add-help-command","messageBody":"Add help command","fileTypesAndContributionMap":{}},{"hash":"567f7864dbff2cc2af74cf3aa9f3a4e0a209f45d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-exit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58b2e9bfa7d7849295f354e99f1adb2f87da954d","isMergeCommit":true,"messageTitle":"Merge pull request #82 from TeeRenJing/add-exit-command","messageBody":"Add exit command","fileTypesAndContributionMap":{}},{"hash":"7ac6f5ad51762e7cd626e8cebc5f3bf3502dc181","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f6e736c08bd9120cdf1bb14cacb0a677c03bbf9d","isMergeCommit":false,"messageTitle":"change name of adress book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e8fdee71e802e21236d5a691589cfcd5ff90c98","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-T15-2:master\u0027 into branch-codecov","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab809e943751e78725e2a53933ca857ba6c04a93","isMergeCommit":false,"messageTitle":"fix bug for date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}},{"hash":"a31a8f384ba6af730931006ea009558adc1f72c5","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-22","commitResults":[{"hash":"27fb08a2092a46484a0a93244ac1f2c3ac7da43c","isMergeCommit":true,"messageTitle":"Merge pull request #92 from jingyu987/branch-untake","messageBody":"Add untake command","fileTypesAndContributionMap":{}},{"hash":"e5fe413c1be15c98714e02936314f491b5fd34ae","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2},"test-code":{"insertions":289,"deletions":16}}},{"hash":"364f2686499c82b33dd745573ea07c95cf536d04","isMergeCommit":true,"messageTitle":"Merge pull request #98 from ChongWeiJie29/branch-fix-optionalBug","messageBody":"Fix bug with optional dates check","fileTypesAndContributionMap":{}}]},{"date":"2023-10-24","commitResults":[{"hash":"05f9a48156ac8caf184ba42ddb305edeadadd5da","isMergeCommit":true,"messageTitle":"Merge pull request #94 from TeeRenJing/add-tests","messageBody":"Add tests","fileTypesAndContributionMap":{}},{"hash":"9b39e5ab57b7db82fbdd6556364155cf5561b4fd","isMergeCommit":true,"messageTitle":"Merge pull request #108 from jingyu987/branch-listCompleted","messageBody":"Add listCompleted command","fileTypesAndContributionMap":{}}]}],"ChongWeiJie29":[{"date":"2023-10-01","commitResults":[{"hash":"8568ce399c670df269e97fd00ba836cefea269f8","isMergeCommit":false,"messageTitle":"Add in supplementary details for README and format README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"365435089346f66488b21932299ce3af32ca297c","isMergeCommit":false,"messageTitle":"Add in photo, role details and PPP","messageBody":"Add in suitable photo and own details, together\nwith associated roles and responsibilities. Also\nadd in a skeletal PPP.\n","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":15}}}]},{"date":"2023-10-02","commitResults":[{"hash":"21cf2ba85ab046380914c17a3faf50551d35c53c","isMergeCommit":false,"messageTitle":"Add in some features for UG","messageBody":"Add in quick start, command format notes,\nhelp and add feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":45}}},{"hash":"15ba62c75be42b6af7befa3b37fa3f7cbe8f5406","isMergeCommit":false,"messageTitle":"Standardise bullet points","messageBody":"Edit bullet points so that all ends with fullstop.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"94a357426670e9e6e5c49003667dad2a839e5683","isMergeCommit":false,"messageTitle":"Modify some aspects in user guide","messageBody":"Edit saving data, editing the data file\nand command summary section.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":23}}},{"hash":"bdc12570375bc0f50ef801f35f39338a63748837","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-User-Guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"14d92c7fdd9cb9b094a43f9a2e8ac931dc98a5ea","isMergeCommit":true,"messageTitle":"Merge pull request #38 from RoeReRe/v1.1-list","messageBody":"Add list cmd and standardise image size for cmds in UG","fileTypesAndContributionMap":{}},{"hash":"43a11ba2cec2b18bfbe9e01874c7cda82326d1f2","isMergeCommit":true,"messageTitle":"Merge pull request #40 from shyanyong/branch-UG","messageBody":"Add list today in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"a144e17573e496e23485275e07ba58b27fce1e3f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from shyanyong/branch-DG","messageBody":"Add Use Case for List Today command","fileTypesAndContributionMap":{}},{"hash":"0d66cc9d4d1230224c6c63f3478b4e47e5b4da31","isMergeCommit":true,"messageTitle":"Merge pull request #43 from RoeReRe/v1.1-cleanup","messageBody":"Standardise all v1.1 progress so far.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"effe51f81c77bdcd1cdaf2851e1785a306168db8","isMergeCommit":false,"messageTitle":"Make changes to set baseline for v1.2","messageBody":"Implement the basic storage and model for the\nprescription list. Also implement the first version of\nthe add prescription command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3205,"deletions":1}}},{"hash":"19b17249dcd0a7c8dd14b2fc65c7914ddaaa7a67","isMergeCommit":false,"messageTitle":"change styles in fxml slightly to match checkstyle test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"docs":{"insertions":2,"deletions":2}}},{"hash":"8512a19a25ff3ee6fb4e101cdd6b6b8ec8620a89","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2023-10-15","commitResults":[{"hash":"2b287e8d11c9786e3c86d6b9b9a40035874f5c3e","isMergeCommit":true,"messageTitle":"Merge pull request #55 from RoeReRe/v1.2-list-new","messageBody":"V1.2 list","fileTypesAndContributionMap":{}},{"hash":"c5d780c5b69ebd56d05c88932166990485aaa148","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-list-today","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"899551daf879aedd912007965131414bf65a714e","isMergeCommit":true,"messageTitle":"Merge pull request #63 from TeeRenJing/branch-testdelete","messageBody":"Branch testdelete","fileTypesAndContributionMap":{}},{"hash":"22801eec88efee06caaf1f63a4e59daf757cf07b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from shyanyong/branch-test-listToday","messageBody":"Add test for ListToday command.","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"cca47f6a65fcb079c016236c6f4a72b5b4b37f59","isMergeCommit":true,"messageTitle":"Merge pull request #65 from TeeRenJing/remove-delete-person","messageBody":"Remove Delete Person code","fileTypesAndContributionMap":{}},{"hash":"57f762ed2d750c3f4c3f2e3aff85dfc1083380fd","isMergeCommit":false,"messageTitle":"Remove unused AB3 code and first round clean up","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":519,"deletions":3894},"other":{"insertions":244,"deletions":245},"test-code":{"insertions":423,"deletions":2677}}},{"hash":"96a8fdca2b99d77bb7d3dd730cc16da6018c586e","isMergeCommit":true,"messageTitle":"Resolve conflicts for v1.2-check-changes PR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"607794bd581156f4bebe2a4c893a6283a3f5a9c2","isMergeCommit":true,"messageTitle":"Merge pull request #76 from RoeReRe/v1.2-standardiseList","messageBody":"Standardise List cmd to ListToday","fileTypesAndContributionMap":{}},{"hash":"577069701b9c103ec97ce711913af059163d11c7","isMergeCommit":false,"messageTitle":"Modify Prescription constructor to accept inputs without consumption count","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"fb0f7be35f56d4ed5fa24a6f5739a47eace86e1d","isMergeCommit":false,"messageTitle":"Add javadoc comment for prescription constructior","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2023-10-20","commitResults":[{"hash":"08fbb4fd0c560d5423e773ca5105fd18e71e8ac5","isMergeCommit":true,"messageTitle":"Merge pull request #86 from jingyu987/branch-take","messageBody":"Improve take function and push isCompleted to prescription","fileTypesAndContributionMap":{}},{"hash":"b41ade68d4857e68d38c141035fbfcc584fcd872","isMergeCommit":true,"messageTitle":"Merge pull request #85 from shyanyong/branch-date","messageBody":"Add logic to ensure correct date sequence","fileTypesAndContributionMap":{}}]},{"date":"2023-10-21","commitResults":[{"hash":"dfa62dba59b1e926718db31b58efb5d33f923eb0","isMergeCommit":false,"messageTitle":"include optional fields into BayMeds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":237,"deletions":124},"test-code":{"insertions":195,"deletions":176}}}]},{"date":"2023-10-22","commitResults":[{"hash":"ab1f4830572cdd97b7a0c65828361301adaadd11","isMergeCommit":true,"messageTitle":"Merge pull request #88 from ChongWeiJie29/branch-optional-fields","messageBody":"Include optional fields into BayMeds","fileTypesAndContributionMap":{}},{"hash":"7a22409e619528aefd3c0ca13c0cdab5e58e9daf","isMergeCommit":true,"messageTitle":"Merge pull request #91 from RoeReRe/v1.3-gui","messageBody":"V1.3 GUI","fileTypesAndContributionMap":{}},{"hash":"165de8207c6b75aa0eda08182d3a47e5a5b0dd72","isMergeCommit":true,"messageTitle":"Merge pull request #83 from TeeRenJing/add-find-command","messageBody":"Add find command","fileTypesAndContributionMap":{}},{"hash":"8f658ef2dcf6cb735e88eebf1a24c9644f70acca","isMergeCommit":false,"messageTitle":"Fix the bug that shows Optional in the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"7714da13f485d68e5012bbeff322aa938abfb3f6","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"9b3a427f36e8926c3254526a3114cf05f76ba228","isMergeCommit":false,"messageTitle":"Fix bug with optional dates check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2023-10-23","commitResults":[{"hash":"8e7314b19856005e92dc8d2464553fb74551e524","isMergeCommit":false,"messageTitle":"Include a new storage json for completed prescriptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":455,"deletions":17},"test-code":{"insertions":114,"deletions":34}}},{"hash":"9d0c863d631a47e57f840d64172ee1c7da7bea8a","isMergeCommit":true,"messageTitle":"Merge pull request #102 from RoeReRe/v1.3-gui","messageBody":"Fix bug causing ListView to disappear","fileTypesAndContributionMap":{}}]}],"RoeReRe":[{"date":"2023-09-25","commitResults":[{"hash":"59edd5042e27d9af4ffc5ea931b28fc0f6dd03b2","isMergeCommit":false,"messageTitle":"Update README.md, AboutUs.md and Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":24}}},{"hash":"7a896dbe0fa15fd7955bd2c272c32bf5a0696b24","isMergeCommit":false,"messageTitle":"Update README.md, AboutUs.md, RoeReRe.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"40b40118529ca68a1c1311b85a7544fffe137bde","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"3b8c6d75c9b0d5674fe380e23eea1e2b77a144d9","isMergeCommit":false,"messageTitle":"Update UserGuide.md title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e170f7e19f2f7a1aff823c4ec56a734adfec96bc","isMergeCommit":false,"messageTitle":"Update skeletal PPP in roerere.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"3a89148525f88c275accac5c95fb55aeed622ea2","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md: Target user, value proposition and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":12}}}]},{"date":"2023-09-26","commitResults":[{"hash":"e1e64dd7ab39f9f55f99c08786f375ed3b18e5e5","isMergeCommit":false,"messageTitle":"Update documentation as per PR comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e069c61ebb6724e651220d87ffddd16f5602bb0b","isMergeCommit":true,"messageTitle":"Merge pull request #13 from TeeRenJing/branch-v1.1","messageBody":"Update personal particulars","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"826483f316e59039e33eb96118ff0f5b2b132fb5","isMergeCommit":true,"messageTitle":"Merge pull request #24 from ChongWeiJie29/branch-edit-README","messageBody":"Add in supplementary details for README and format README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"d1db2430038ea4ee19817f079bc807d7ed346696","isMergeCommit":true,"messageTitle":"Merge pull request #28 from ChongWeiJie29/branch-editUG","messageBody":"Add in some features for UG","fileTypesAndContributionMap":{}},{"hash":"22fe5e0cd768ebb6b31fe3ab82f87f52ae7289a3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ChongWeiJie29/branch-editUG-add","messageBody":"Edit add feature, command summary in user guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"8192b61083d4a9dc113ac4c10de0c9032531a552","isMergeCommit":false,"messageTitle":"Add list cmd and standardise image size for cmds in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":5}}},{"hash":"8bc71af3551ea3b4bd22fae4bf68e6931e2cd3a9","isMergeCommit":true,"messageTitle":"Merge pull request #41 from jingyu987/branch-editUG","messageBody":"Add take command in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"2ac8a89b61e4646bd3027657a34f509f2b00a6bd","isMergeCommit":false,"messageTitle":"Standardise all v1.1 docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":43}}}]},{"date":"2023-10-13","commitResults":[{"hash":"4fffd693c143ca8d09f8366a8c894109da84b46d","isMergeCommit":false,"messageTitle":"Fix UG typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d98620f4051eef0dfbae5920d3441caf2d3a287a","isMergeCommit":true,"messageTitle":"Merge pull request #49 from ChongWeiJie29/v1.2-baselineChanges","messageBody":"Make changes to set baseline for v1.2","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"12ee14701440f3abab241444566b32600281b730","isMergeCommit":false,"messageTitle":"Add list cmd","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":7}}},{"hash":"11f245a81ec81b07509f78bed0efc26f8e048cb7","isMergeCommit":false,"messageTitle":"Fix slight style error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"928b82e80d6ce44531d7b1c75c0df05af4c9fd2a","isMergeCommit":false,"messageTitle":"Update ListPrescriptionCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4d3e3284f845f254a7e84277a13a8c00c0f636ff","isMergeCommit":false,"messageTitle":"Add util class for test code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":314,"deletions":0}}},{"hash":"ac017f556d7a0de3b0da0d9e9cacf26aeabac493","isMergeCommit":false,"messageTitle":"Add test code for JsonAdapatedPrescription","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":388,"deletions":1}}},{"hash":"ed13f47ab69b76af5a8b7b1f170e837ca3325993","isMergeCommit":false,"messageTitle":"Add tests for Prescription Storage module","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":305,"deletions":4}}},{"hash":"6488892feda70fa675609eeec8fc4c837f72305a","isMergeCommit":false,"messageTitle":"Fix Frequency.java regex and add test code for prescription fields except Prescription, UniquePrescriptionList and PrescriptionList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":602,"deletions":0}}}]},{"date":"2023-10-16","commitResults":[{"hash":"1f9f7330104edf08146b45a6847c1056bbd6ef9a","isMergeCommit":false,"messageTitle":"Set up baseline for testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2},"test-code":{"insertions":1203,"deletions":123}}},{"hash":"12b95dc20ff2e312b1fcc8e10ed46eeee317d953","isMergeCommit":false,"messageTitle":"Fix CI checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"dba822848ff2873825951541c9329ea055349ca0","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":203,"deletions":191}}},{"hash":"84ab33c5636b0d1c1abf7ba2a9f2cc5bb2492843","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"c361c1bf0b67b0be51e0f9da3af688107c1d7afe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"88040d221563d2f3e60f6a500a5d2ec97a83eb9f","isMergeCommit":false,"messageTitle":"Merge with JY\u0027s commit for consumption","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3da602635ffd1efd4aadb3ec14389885c60955e4","isMergeCommit":true,"messageTitle":"Merge pull request #62 from TeeRenJing/branch-delete","messageBody":"Add delete command","fileTypesAndContributionMap":{}},{"hash":"a20be8cdbfa85dbbb8fbf5900f041d1403a1960e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-take","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62dc52fe6f07dd5d5310351567b3a372246b6847","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"fa415ac9bee6948e4e4ec643e0002b295108661f","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"93bb1e77e51b61aa5d49dd2f9f87c54938f36c6c","isMergeCommit":false,"messageTitle":"Update PrescriptionListParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-18","commitResults":[{"hash":"5525197f260cdda15c6c92ad32170a50a01a9cc8","isMergeCommit":false,"messageTitle":"Standardise List cmd to ListToday","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"304ae174333e93bb3ad93d83b78c19a4f3c02a64","isMergeCommit":false,"messageTitle":"Update ListCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"514d33a3c33c5a57f255ccdf1fff1c449c2811b9","isMergeCommit":true,"messageTitle":"Merge pull request #70 from shyanyong/branch-codecov","messageBody":"Remove unused imports. Add Testing for parser","fileTypesAndContributionMap":{}},{"hash":"af9c8d1eedcc0d7d157104f8f84aff4ee37429fc","isMergeCommit":true,"messageTitle":"Merge pull request #78 from ChongWeiJie29/branch-tidy-up","messageBody":"Modify Prescription to accept inputs without consumption count","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"b101f84e50a80405f0d12314bec89978abc47264","isMergeCommit":false,"messageTitle":"Redo GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":184,"deletions":49}}},{"hash":"3c5fa817c4e0caad79ccc0a342e115fec1e8c3a3","isMergeCommit":false,"messageTitle":"Change GUI to allow for better UX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":262,"deletions":152}}},{"hash":"a8eba6b820e3428c273bf5fc8d8e6441a336f439","isMergeCommit":true,"messageTitle":"Merge from upstream master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f2ad926d936e7bfde5997e7743ff9068aad8d84","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":7}}},{"hash":"17658fb3ec6c376e5c88ef896126fdad82eda4a2","isMergeCommit":false,"messageTitle":"Add blank display for optional field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}}]},{"date":"2023-10-23","commitResults":[{"hash":"7ca390c832ff7eb2e9a82caf01e4cf8986c00513","isMergeCommit":false,"messageTitle":"Fix bug causing ListView to disappear","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"0d964bdaf14bebcbeb242eac5eaa5b5290eb6e65","isMergeCommit":false,"messageTitle":"Change neutral label and delete unused AB3 UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":62}}}]}]},"authorFileTypeContributionMap":{"TeeRenJing":{"docs":76,"functional-code":106,"test-code":554},"jingyu987":{"docs":54,"functional-code":637,"test-code":520},"shyanyong":{"docs":66,"functional-code":347,"test-code":599},"ChongWeiJie29":{"docs":99,"functional-code":2358,"test-code":742},"RoeReRe":{"docs":125,"functional-code":358,"test-code":1554}},"authorContributionVariance":{"TeeRenJing":55722.363,"jingyu987":13415.482,"shyanyong":18779.033,"ChongWeiJie29":2141100.0,"RoeReRe":182027.33},"authorDisplayNameMap":{"TeeRenJing":"CS2103T-T15-2 TEE ..JING","jingyu987":"CS2103T-T15-2 HUAN..G YU","shyanyong":"CS2103T-T15-2 WONG..YONG","ChongWeiJie29":"CS2103T-T15-2 CHON.. JIE","RoeReRe":"CS2103T-T15-2 ONG ..IANG"}} diff --git a/AY2324S1-CS2103T-W08-3_tp_master/authorship.json b/AY2324S1-CS2103T-W08-3_tp_master/authorship.json index 1a6b9e39..6a7c7d2e 100644 --- a/AY2324S1-CS2103T-W08-3_tp_master/authorship.json +++ b/AY2324S1-CS2103T-W08-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"## Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W08-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop application that helps you manage your job applications by easily recording organization and recruiter contacts, plus note down information about your applications. It is optimized for CLI use, so you can operate the application with only your keyboard.","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"* The project simulates an ongoing software project for a desktop application used for managing contact details regarding organizations and recruiters and job application status info.","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * It is an extension built on top of **[Address Book Level 3 by se-education.org](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"* For detailed documentation of this project, see the **[Jobby Product Website](https://ay2324s1-cs2103t-w08-3.github.io/tp/)**.","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wxwern":8,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" archiveFileName \u003d \u0027jobby.jar\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wxwern":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"### Wern","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"\u003cimg src\u003d\"images/wxwern.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"[[homepage](https://wern.cc/)]","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"[[github](https://github.com/wxwern)]","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"[[portfolio](team/wxwern.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"* Role: Member","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"### Chun Jie","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"\u003cimg src\u003d\"images/cj-lee01.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":"[[github](https://github.com/CJ-Lee01)]","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"* Role: Member","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"### Bryan Lee","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"\u003cimg src\u003d\"images/mcnabry.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"[[github](http://github.com/mcnabry)]","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"[[portfolio](team/mcnabry.md)]","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"* Role: Member","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":"### Shi Yu","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":"\u003cimg src\u003d\"images/tanshiyu1999.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":"[[github](https://github.com/tanshiyu1999)] [[portfolio](team/tanshiyu1999.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"* Role: Member","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":"### Juanpa Abola","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":"\u003cimg src\u003d\"images/wamps-jp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":"[[github](https://github.com/wamps-jp)] [[portfolio](team/wamps-jp.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":"* Role: Member","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":4,"CJ-Lee01":4,"wxwern":7,"tanshiyu1999":4,"wamps-jp":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a contact).","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":"How arguments from a raw command input may be obtained by parsers:","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":"* When arguments are needed for a command, `ArgumentTokenizer` is used to prepare and tokenize the raw input string, which can then convert it to an `ArgumentMultimap` for easy access.","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":"* An `ArgumentMultimap` represents the command data (which has the format `name preamble text --flag1 value 1 --flag2 value 2`) in their distinct fields: **preamble**, **flags** and their mapped **values**. Note that as a multimap, multiple values can be mapped to the same flag.","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":"* All parsers can use the `ArgumentMultimap` (obtained from using the raw input on `ArgumentTokenizer`) to access the required arguments to create and execute a `Command`.","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"CJ-Lee01"},"content":"Step 2. The user executes `delete 5` command to delete the 5th contact in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"CJ-Lee01"},"content":"Step 3. The user executes `add n/David …​` to add a new contact. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"CJ-Lee01"},"content":"Step 4. The user now decides that adding the contact was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"CJ-Lee01"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the contact being deleted).","lastModifiedDate":"2023-10-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":"* students looking to apply for jobs","lastModifiedDate":"2023-10-03"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":"* have a need to manage a significant number of organization and recruiter contacts and application statuses","lastModifiedDate":"2023-10-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":"* is reasonably comfortable and familiar with using CLI apps","lastModifiedDate":"2023-10-03"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":"**Value proposition**:","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":"Allows for comprehensive tracking of job applications and the information of companies and recruiters the user may be interested in, and manage them faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-03"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":"| Priority | As a(n) ... | I want to ... | So that I can ... |","lastModifiedDate":"2023-10-03"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":"| -------- | ------------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------------- |","lastModifiedDate":"2023-10-03"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the app |","lastModifiedDate":"2023-10-03"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":"| `* * *` | user | add a new contact | keep track of organizations and recruiters I\u0027m interested in |","lastModifiedDate":"2023-10-03"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":"| `* * *` | user | delete contacts | remove organizations and recruiters that I no longer need |","lastModifiedDate":"2023-10-03"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":"| `* *` | user | edit my contacts | be up to date with changes in organization and recruiter details |","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":"| `* *` | user | find contacts by saved details | locate a contact without going through the entire list |","lastModifiedDate":"2023-10-03"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":"| `* *` | user | filter organizations by job application status | get a summary of the statuses of what I\u0027ve applied to |","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":"| `* *` | user | tag contacts | organize my contact list for more efficient access of different categories |","lastModifiedDate":"2023-10-03"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":"| `* *` | efficient user | type shorter arguments and known values with auto-completion | type my command even more quickly |","lastModifiedDate":"2023-10-03"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":"| `*` | user | import and export contacts | share my list of contacts with my peers |","lastModifiedDate":"2023-10-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":"(For all use cases below, the **System** is `Jobby` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-19"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2023-10-03"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":"1. User requests to list organizations","lastModifiedDate":"2023-10-03"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":"2. Jobby shows a list of organizations","lastModifiedDate":"2023-10-19"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":"3. User requests to delete a specific organization in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":"4. Jobby deletes the organization","lastModifiedDate":"2023-10-19"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" * 3a1. Jobby shows an error message.","lastModifiedDate":"2023-10-19"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"CJ-Lee01"},"content":"* 3b. The given ID does not match to any organization.","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":322,"author":{"gitId":"CJ-Lee01"},"content":" * 3b1. Jobby shows an error message.","lastModifiedDate":"2023-10-20"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-20"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":326,"author":{"gitId":"CJ-Lee01"},"content":"* 4a. The user has specified to delete recursively.","lastModifiedDate":"2023-10-20"},{"lineNumber":327,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":328,"author":{"gitId":"CJ-Lee01"},"content":" * 4a1. Jobby deletes all recruiter contacts associated with the recruiter (WIP)","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"CJ-Lee01"},"content":" ","lastModifiedDate":"2023-10-20"},{"lineNumber":330,"author":{"gitId":"CJ-Lee01"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":331,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":332,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":333,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":334,"author":{"gitId":"wamps-jp"},"content":"**Use case: List contacts**","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":336,"author":{"gitId":"wamps-jp"},"content":"**MSS**","lastModifiedDate":"2023-10-20"},{"lineNumber":337,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":338,"author":{"gitId":"wamps-jp"},"content":"1. User requests to list contacts","lastModifiedDate":"2023-10-20"},{"lineNumber":339,"author":{"gitId":"wamps-jp"},"content":"2. Jobby shows a list of contacts","lastModifiedDate":"2023-10-20"},{"lineNumber":340,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":341,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":342,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":343,"author":{"gitId":"wamps-jp"},"content":"**Extensions**","lastModifiedDate":"2023-10-20"},{"lineNumber":344,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":345,"author":{"gitId":"wamps-jp"},"content":"* 1a. User requests to list organizations.","lastModifiedDate":"2023-10-20"},{"lineNumber":346,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":347,"author":{"gitId":"wamps-jp"},"content":" * 1a1. Jobby shows a list of organizations.","lastModifiedDate":"2023-10-20"},{"lineNumber":348,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":349,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":350,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":351,"author":{"gitId":"wamps-jp"},"content":"* 1b. User requests to list recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":352,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":353,"author":{"gitId":"wamps-jp"},"content":" * 1b1. Jobby shows a list of recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":358,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"CJ-Lee01"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"wxwern"},"content":"4. A user with familiarity with common Unix/Linux shell command syntax should find the syntax of Jobby to match their habits and easy to pick up.","lastModifiedDate":"2023-10-19"},{"lineNumber":366,"author":{"gitId":"wxwern"},"content":"5. The command syntax should not conflict with something that a user could plausibly use as legitimate data input.","lastModifiedDate":"2023-10-03"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"wxwern"},"content":"* **Mainstream OS**: Windows, macOS, Linux, Unix","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"CJ-Lee01"},"content":"* **Commands**: A set of keywords that defines the operations the user wishes to execute.","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"CJ-Lee01"},"content":"* **Arguments**: A set of keywords that defines the type of data the user wishes to pass into the command line.","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"CJ-Lee01"},"content":"### Deleting a contact","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"CJ-Lee01"},"content":"1. Deleting a contact while all contacts are being shown","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"CJ-Lee01"},"content":" 1. Prerequisites: List all contacts using the `list` command. Multiple contacts in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"CJ-Lee01"},"content":" Expected: No contact is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJ-Lee01":22,"wxwern":31,"wamps-jp":25,"-":350}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Documentation guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2020-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `Jobby` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2020-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**Diagrams:**","lastModifiedDate":"2020-06-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2020-06-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"wxwern":1,"-":28}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"**Jobby** is a **desktop app for managing job applications and contacts, optimized for use via a Command Line Interface (CLI)** while still having the benefits of a Graphical User Interface (GUI). Jobby can help you manage tracking your job applications and contacts in a more streamlined fashion. If you can type fast, Jobby can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"1. Download the latest `jobby.jar` from [here](https://github.com/AY2324S1-CS2103T-W08-3/tp/releases).","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Jobby Application.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar jobby.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"1. Type a command in the command box and press Enter to execute it - e.g., typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" e.g. if the command format is `add --name NAME`, `NAME` is a parameter which can be used like `add --name John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":"* Terms prefixed with `--` are used to assign a value to some action or property, or to choose an option out of a few settings.","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" e.g. the `--name` field (which requires a `NAME` supplied after it) may configure the name of a contact, while a switch like `--recursive` (which doesn\u0027t accept values) may explicitly activate a recursive mode for an action.","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" e.g `--name NAME [--tag TAG]` can be used as `--name John Doe --tag friend` or as `--name John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":"* Items in angled brackets describe what the content should be.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" e.g. `--date \u003cyyyymmdd formatted DATE\u003e` means the parameter `DATE`, which is supplied after the `--date` flag, should be formated as `yyyymmdd`.","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":"* Items with `...` after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" e.g. `[--tag TAG]...` can be used as ` ` (i.e. 0 times), `--tag friend`, `--tag friend --tag family` etc.","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"* Items separated by `/` means that only one of them can be used per command.\u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" e.g. `--org/--rec` means that either `--org` or `--rec` can be supplied as a flag but not both at the same time.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" e.g. if the command specifies `--name NAME --phone PHONE_NUMBER`, `--phone PHONE_NUMBER --name NAME` is also acceptable.","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"* Extraneous parameters and values for all commands will be ignored by default.\u003cbr\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" e.g. if `list` only accepts the `--org` or `--rec` options and no other value, supplying extras like `list 123 --other --org 456` will be interpreted as `list --org` (i.e., ignoring all other parameters).","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Viewing help: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":"### Adding a contact: `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":"Format: `add --org/--rec \u003cadditional parameters and values...\u003e`","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"Adds a contact to the address book of the given class type: Organization or Recruiter.","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":"Supplying `--org` adds an Organization while supplying `--rec` adds a Recruiter to the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"Details specifically on organization and recruiter level are specified in the next sections.","lastModifiedDate":"2023-10-03"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":"#### Adding an organization contact: `add --org`","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":"_{Work in progress...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":"Format: `add --org --name NAME [--id ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--stat STATUS] [--pos POSITION] [--tag TAG]... `","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":"Acceptable Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":"* `NAME` can accept any value, but must not be blank.","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":"* `ID` refers to a unique identifier which is used to uniquely identify the organization (alphanumeric and basic symbols, i.e. should only be `a-z`, `A-Z`, `0-9`, `-`, `_`).","lastModifiedDate":"2023-10-03"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" * Specifying this sets the ID, or one unique one will be derived and generated from the name if not provided.","lastModifiedDate":"2023-10-03"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":"* `NUMBER` should be a valid phone number.","lastModifiedDate":"2023-10-03"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":"* `EMAIL` should be a valid email.","lastModifiedDate":"2023-10-03"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":"* `URL` should be a valid url-like format.","lastModifiedDate":"2023-10-03"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":"* `ADDRESS` can accept any value. It designates the contact’s physical address.","lastModifiedDate":"2023-10-03"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":"* `STATUS` must be one of _interested, applied, pending, offered, rejected, current_ (case-insensitive, prefix-only match allowed).","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":"* `POSITION` may be any value. It designates the position you intend to apply to.","lastModifiedDate":"2023-10-03"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":"* `TAG` can accept any value and may have multiple inputs.","lastModifiedDate":"2023-10-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name J\u0026J`","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Google --id g-sg --phone 98765432 `","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Hoyoverse --email mihoyo@example.com --tag example1 --tag example2`","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":"* `add --org --name Example --url www.organization.org --tag freelance`","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Examinations NUS --phone 65166269 --email examinations@nus.edu.sg --url https://luminus.nus.edu.sg/ --stat pending`","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":"#### Adding a recruiter contact: `add --rec`","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":"_{Work in progress...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":"Format: `add --rec --name NAME [-id ID] [--oid ORG_ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--tag TAG]...`","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"Acceptable Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":"* `NAME` can accept any value, but must not be blank.","lastModifiedDate":"2023-10-03"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":"* `ID` refers to a unique identifier which is used to uniquely identify the recruiter (alphanumeric and basic symbols, i.e. should only be `a-z`, `A-Z`, `0-9`, `-`, `_`).","lastModifiedDate":"2023-10-03"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" * Specifying this sets the ID, or one unique one will be derived and generated from the name if not provided.","lastModifiedDate":"2023-10-03"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":"* `ORG_ID` refers to the unique identifier which is used to uniquely identify the organization the recruiter should be tied to. It is subject to the same validation as the ID field.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":"* `NUMBER` should be a valid phone number.","lastModifiedDate":"2023-10-03"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"* `EMAIL` should be a valid email.","lastModifiedDate":"2023-10-03"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":"* `ADDRESS` can accept any value. It designates the contact’s physical address.","lastModifiedDate":"2023-10-03"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":"* `TAG` can accept any value and may have multiple inputs.","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"tanshiyu1999"},"content":"* `add --rec --name John Doe --oid paypal-sg`","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"### Listing all contacts: `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":155,"author":{"gitId":"wamps-jp"},"content":"Format: `list [--org/--rec]`","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"Shows a list of all contacts in the address book.","lastModifiedDate":"2023-10-03"},{"lineNumber":158,"author":{"gitId":"wamps-jp"},"content":"Supplying `--org` lists only Organizations while supplying `--rec` lists only Recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"wamps-jp"},"content":"* `list`","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"wamps-jp"},"content":"* `list --org`","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"wamps-jp"},"content":"* `list --rec`","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"### Editing a contact: `edit`","lastModifiedDate":"2023-10-03"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2023-10-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"Current: Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2023-10-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":"### Deleting a contact: `delete`","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"CJ-Lee01"},"content":"Deletes the specified contact from the address book and its associated contacts if specified.","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"CJ-Lee01"},"content":"Format: `delete INDEX [--recursive]` or `delete --id ID [--recursive]`","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"CJ-Lee01"},"content":"* `INDEX` refers to the index number shown on the list and must be a positive integer.","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"CJ-Lee01"},"content":"* Deletes the person with id `ID` if specified, ignoring if the contact is shown in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"CJ-Lee01"},"content":"* Deletes other contacts associated under the selected contact if `--recursive` is used, ignoring if the contact is shown in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"CJ-Lee01"},"content":"* `delete 1` deletes the 1st contact in the list of contacts shown.","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"CJ-Lee01"},"content":"* `delete --id 045f` deletes the contact with id `045f` in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"CJ-Lee01"},"content":"* `delete 1 --recursive` deletes the 1st contact along with other contacts associated under it.","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"-"},"content":"### Clearing all entries: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":"Clears all data from the app.","lastModifiedDate":"2023-10-03"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":219,"author":{"gitId":"-"},"content":"### Exiting the program: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":226,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":"Jobby data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":"Jobby data are saved automatically as a JSON file `[JAR file location]/data/jobby.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":"If your changes to the data file makes its format invalid, Jobby will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Jobby home folder.","lastModifiedDate":"2023-10-19"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"tanshiyu1999"},"content":"**Add Organization** | `add --org --name \u003cNAME\u003e [--id ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--stat STATUS] [--pos POSITION] [--tag TAG]...`\u003cbr\u003e e.g., `add --org --name NUS --phone 0123456789 --email example@nus.edu.sg --url https://www.nus.edu.sg/ --stat pending --pos Research`","lastModifiedDate":"2023-10-19"},{"lineNumber":260,"author":{"gitId":"tanshiyu1999"},"content":"**Add Recruiter** | `add --rec --name \u003cNAME\u003e [--id ID] [--oid ORG_ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--tag TAG]...`\u003cbr\u003e e.g., `add --rec --name John Doe --oid paypal-sg`","lastModifiedDate":"2023-10-19"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"CJ-Lee01"},"content":"**Delete** | `delete INDEX [--recursive]` or \u003cbr\u003e `delete --id ID [--recursive]` \u003cbr\u003e e.g., `delete 3`, `delete --id 55tg`","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":"**Edit** | Coming soon...","lastModifiedDate":"2023-10-03"},{"lineNumber":264,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":8,"CJ-Lee01":9,"wxwern":91,"tanshiyu1999":9,"wamps-jp":5,"-":144}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" content: \"Jobby\";","lastModifiedDate":"2023-10-19"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"wxwern":1,"-":294}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteContact(p)","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"AddressBook *-right-\u003e \"1\" UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"UniqueTagList -[hidden]down- UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"UniqueTagList -[hidden]down- UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"UniqueContactList -right-\u003e Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Contact -up-\u003e \"*\" Tag","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Name","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Phone","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Email","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Address","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":9,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"DeleteCommand -\u003e Model : deleteContact(1)","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Class UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"Class Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"Class Id","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"Class Url","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"AddressBook *--\u003e \"1\" UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"UniqueContactList --\u003e \"~* all\" Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Name","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Id","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Phone","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Email","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Url","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Address","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e \"*\" Tag","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"Contact -[hidden]up--\u003e I","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"UniqueContactList -[hidden]right-\u003e I","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":"Name -[hidden]right-\u003e Id","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"Id -[hidden]right-\u003e Phone","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":"Email -[hidden]right-\u003e Url","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":"Url -[hidden]right-\u003e Address","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"ModelManager --\u003e \"~* filtered\" Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":21,"-":39}},{"path":"docs/diagrams/ParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2021-07-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package \"Parser classes\"{","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nParser\" as Parser","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBookParser","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class XYZCommandParser","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"Class Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e AddressBookParser","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser .down.\u003e XYZCommandParser: creates \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : creates \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser ..\u003e Command : returns \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"XYZCommandParser .up.|\u003e Parser","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"CliSyntax ..\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":"ParserUtil .down.\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"ArgumentTokenizer .down.\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"wxwern":4,"-":34}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"Class JsonAdaptedContact","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedContact","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"JsonAdaptedContact --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"Class ContactListPanel","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Class ContactCard","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"MainWindow *-down-\u003e \"1\" ContactListPanel","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":"ContactListPanel -down-\u003e \"*\" ContactCard","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"ContactListPanel --|\u003e UiPart","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"ContactCard --|\u003e UiPart","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"ContactCard ..\u003e Model","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"ContactListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"ecp -\u003e ec ++: index, editContactDescriptor","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"McNaBry":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"title: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W08-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W08-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-W08-3/tp)","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"**Jobby is a desktop application for managing your job application details, specifically organization and recruiter contacts, plus application info and status.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"* If you are interested in using Jobby, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"* If you are interested about developing Jobby, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wxwern":6,"-":13}},{"path":"docs/team/cj-lee01.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop address book and job application tracking tool. The user interacts with it using a CLI, and it has a GUI created in JavaFX. It is written in Java.","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" * What it does:","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" * Justification:","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * Highlights:","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dCJ-Lee01\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"* **Project management**:","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * User Guide:","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"* **Community**:","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" * PRs reviewed (with non-trivial review comments):","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" * Contributed to forum discussions (examples: )","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Reported bugs and suggestions for other teams in the class (examples: )","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":"* **Tools**:","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"CJ-Lee01":33,"wxwern":3}},{"path":"docs/team/mcnabry.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"layout: page","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"title: Bryan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop app for managing job applications and contacts,","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"Jobby can help you manage tracking your job applications and contacts in a more streamlined fashion.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" * What it does: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * Justification: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Highlights: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dMcNaBry\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"* **Project management**:","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" * User Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"* **Community**:","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"* **Tools**:","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"McNaBry":31,"wxwern":4}},{"path":"docs/team/tanshiyu1999.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop address book and job application tracking tool. The user interacts with it using a CLI, and it has a GUI created in JavaFX. It is written in Java.","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" * What it does:","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * Justification:","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * Highlights:","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dtanshiyu1999\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"* **Project management**:","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" * User Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"* **Community**:","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" * PRs reviewed (with non-trivial review comments):","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * Contributed to forum discussions (examples: )","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" * Reported bugs and suggestions for other teams in the class (examples: )","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"* **Tools**:","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"wxwern":3,"tanshiyu1999":33}},{"path":"docs/team/wamps-jp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"title: Juanpa\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop app for tracking job applications.","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"It saves organisations and recruiters as contacts in an addressbook.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":"* **New Feature**: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":" * What it does: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":" * Justification: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" * Highlights: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dwamps-jp\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"wamps-jp"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"wamps-jp"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"wamps-jp"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"wxwern":3,"wamps-jp":34}},{"path":"docs/team/wxwern.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"---","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"layout: page","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"title: Wern\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"---","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop application used for tracking job applications.","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"* **New Feature**: To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dwxwern\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"* **Project management**:","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" * User Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"* **Community**:","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"wxwern":29}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Changes the remark of an existing contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" + \": Edits the remark of the contact identified \"","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" + \"by the index number used in the last contact listing. \"","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" * @param index of the contact in the filtered contact list to edit the remark","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" * @param remark of the contact to be updated to","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" * object that maps flags to their respective argument values. Only the","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" * given flags will be recognized in the arguments string.","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" * {@code preamble \u003cflag\u003evalue \u003cflag\u003evalue ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" * @param flags Prefixes to tokenize the arguments string with","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flags to their","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new flag `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2023-10-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" * Returns the last value of {@code flag}.","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"public Optional\u003cString\u003e getValue(Prefix flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e values \u003d getAllValues(flag);","lastModifiedDate":"2023-10-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"CJ-Lee01"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of contact data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the contact’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"CJ-Lee01"},"content":"Create a new `Remark` in `seedu.address.model.contact`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2023-10-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"CJ-Lee01"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"CJ-Lee01"},"content":"Simply add the following to [`seedu.address.ui.ContactCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2023-10-06"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/jobby.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-10-19"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"CJ-Lee01"},"content":"public PersonCard(Person contact, int displayedIndex) {","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"CJ-Lee01"},"content":" remark.setText(contact.getRemark().value);","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"McNaBry"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"CJ-Lee01"},"content":" Person contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"CJ-Lee01"},"content":" Person editedContact \u003d new Person(","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"CJ-Lee01"},"content":" contactToEdit.getName(), contactToEdit.getPhone(), contactToEdit.getEmail(),","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"CJ-Lee01"},"content":" contactToEdit.getAddress(), remark, contactToEdit.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"CJ-Lee01"},"content":" model.setPerson(contactToEdit, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(generateSuccessMessage(editedContact));","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contactToEdit}.","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"CJ-Lee01"},"content":" private String generateSuccessMessage(Person contactToEdit) {","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(message, contactToEdit);","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":20,"wxwern":10,"-":367}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.contact.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" \"contacts\": [ {","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJ-Lee01":2,"-":110}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"CJ-Lee01"},"content":" Person contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":193,"author":{"gitId":"CJ-Lee01"},"content":" Person editedContact \u003d createEditedPerson(contactToEdit, editPersonDescriptor);","lastModifiedDate":"2023-10-05"},{"lineNumber":194,"author":{"gitId":"McNaBry"},"content":" if (!contactToEdit.isSamePerson(editedContact) \u0026\u0026 model.hasContact(editedContact)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"CJ-Lee01"},"content":" model.setPerson(contactToEdit, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":198,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedContact));","lastModifiedDate":"2023-10-05"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"CJ-Lee01"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the contact data.","lastModifiedDate":"2023-10-05"},{"lineNumber":205,"author":{"gitId":"CJ-Lee01"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ contacts.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":206,"author":{"gitId":"CJ-Lee01"},"content":" FYI, The \u0027filtered list\u0027 is the list of contacts resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the contacts so that the user can see the edited contact along with all other contacts. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":207,"author":{"gitId":"CJ-Lee01"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of contacts is being tracked.","lastModifiedDate":"2023-10-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"CJ-Lee01"},"content":" contacts.addAll(","lastModifiedDate":"2023-10-05"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":9,"-":290}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" private static final String LOG_FILE \u003d \"jobby.log\";","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":1,"-":105}},{"path":"src/main/java/seedu/address/commons/exceptions/IllegalOperationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Exception thrown when attempting to make illegal.","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class IllegalOperationException extends Exception {","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" * @param message that informs the user that it has attempted an illegal operation.","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" public IllegalOperationException(String message) {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" super(message);","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * @param message that informs the user that it has attempted an illegal operation.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * @param cause of the main exception.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public IllegalOperationException(String message, Throwable cause) {","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" super(message, cause);","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"CJ-Lee01":21}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" * Formats the given values with the format string, but return null if any of the given values are null or empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @param format The format string to use.","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" * @param values The values to insert into the format string.","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" * @return The formatted string, or null if any of the values are null.","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" public static String formatWithNullFallback(String format, Object... values) {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" if (format \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" for (Object v : values) {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" if (v \u003d\u003d null || v.toString().isBlank()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" return String.format(format, values);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":21,"-":68}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" /** Returns an unmodifiable view of the filtered list of contacts */","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" ObservableList\u003cContact\u003e getFilteredContactList();","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":1,"-":47}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" return model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.Flag;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX \u003d \"The contact index provided is invalid\";","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_NO_SUCH_CONTACT \u003d \"No such contact\";","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONTACTS_LISTED_OVERVIEW \u003d \"%1$d contacts listed!\";","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" \"Multiple values specified for the following single-valued option(s): \";","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_EXTRA_FIELDS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" \"Extra irrelevant options found in the command: \";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_UNEXPECTED_NON_EMPTY_FIELDS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" \"The following options may not have any value: \";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_INVALID_FIELD \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" \"The term \u0027%s\u0027 is not a valid option!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the duplicate flags.","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForDuplicateFlags(Flag... duplicateFlags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" assert duplicateFlags.length \u003e 0;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" Stream.of(duplicateFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the extraneous flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForExtraneousFlags(Flag... extraneousFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assert extraneousFlags.length \u003e 0;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" Set\u003cString\u003e extraneousFields \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" Stream.of(extraneousFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" return MESSAGE_EXTRA_FIELDS + String.join(\" \", extraneousFields);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForNonEmptyValuedFlags(Flag... nonEmptyValuedFlags) {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" assert nonEmptyValuedFlags.length \u003e 0;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" Set\u003cString\u003e nonEmptyValuedFields \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" Stream.of(nonEmptyValuedFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" return MESSAGE_UNEXPECTED_NON_EMPTY_FIELDS + String.join(\" \", nonEmptyValuedFields);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the invalid flag.","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForInvalidFlagString(String flagString) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" MESSAGE_INVALID_FIELD, flagString","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * Formats the {@code contact} for display to the user.","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public static String format(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" builder.append(contact.getName())","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" .append(\"; Id: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" .append(contact.getId())","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" .append(contact.getPhone().map(p -\u003e p.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" .append(contact.getEmail().map(e -\u003e e.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" .append(\"; Url: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" .append(contact.getUrl().map(u -\u003e u.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" .append(contact.getAddress().map(a -\u003e a.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().forEach(builder::append);","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":5,"wxwern":47,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION_ID;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_POSITION;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_STATUS;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_ORGANIZATION_USAGE \u003d \"Adds an organization. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" + FLAG_ORGANIZATION + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" + FLAG_NAME + \" NAME \"","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ID + \" ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_URL + \" URL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_STATUS + \" STATUS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_POSITION + \" POSITION] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" + FLAG_ORGANIZATION + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" JobsInc \"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" + FLAG_ID + \" id_12345-1 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" + FLAG_PHONE + \" 98765432 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" + FLAG_EMAIL + \" jobsInc@example.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" + FLAG_URL + \" www.jobsinc.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" + FLAG_ADDRESS + \" 311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" + FLAG_STATUS + \" applied \"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" + FLAG_POSITION + \" Junior Software Engineer \"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" softwareEngineering \"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" competitive \";","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_RECRUITER_USAGE \u003d \"Adds a recruiter. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" + FLAG_RECRUITER + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" NAME \"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ID + \" ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ORGANIZATION_ID + \" ORG_ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_URL + \" URL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" + FLAG_RECRUITER + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" Steve \"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" + FLAG_ID + \" id_98765-1 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" + FLAG_PHONE + \" 83452145 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" + FLAG_EMAIL + \" steveJobsInc@example.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" + FLAG_URL + \" www.linkedin.com/in/steve/ \"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" + FLAG_ADDRESS + \" 311 W Coast Walk, #02-30 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" friendly \";","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" + \": Adds a contact to the address book of the class type Organization or Recruiter.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" + \" The input format varies depending on the class:\\n\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" + MESSAGE_ORGANIZATION_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" + MESSAGE_RECRUITER_USAGE;","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New contact added: %1$s\";","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"This contact already exists in the address book\";","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddCommand.class);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" private final Contact toAdd;","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an AddCommand to add the specified {@code Contact}","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" public AddCommand(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" toAdd \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" logger.fine(String.format(\"Adding contact: %s\", toAdd));","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" if (model.hasContact(toAdd)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" model.addContact(toAdd);","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":54,"CJ-Lee01":7,"wxwern":15,"tanshiyu1999":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECURSIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.function.Function;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes a contact identified using its displayed index or its contact id from the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" + \": Deletes the contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" + \"INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" + FLAG_ID + \" ID \"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" + FLAG_RECURSIVE + \" RECURSIVE \"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 1: \" + COMMAND_WORD + \" 1\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 2: \" + COMMAND_WORD + \" --id 0d0h4\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 3: \" + COMMAND_WORD + \" 1 --recursive\\n\";","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_DELETE_CONTACT_SUCCESS \u003d \"Deleted Contact: %1$s\";","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" private final Object selector; // TODO: This is very sus but this will only be used for equals comparison","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" private final Function\u003cModel, Contact\u003e contactFunction;","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" private final CommandException commandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to be deleted","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" this.selector \u003d targetIndex;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" this.contactFunction \u003d (Model model) -\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" return null;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" return lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" };","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" this.commandException \u003d new CommandException(Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetId of the contact to be deleted","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteCommand(Id targetId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" this.selector \u003d targetId;","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" this.contactFunction \u003d (Model model) -\u003e model.getContactById(targetId);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" this.commandException \u003d new CommandException(Messages.MESSAGE_NO_SUCH_CONTACT);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an executable DeleteCommand based on whether to delete recursively.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to delete in the current list","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * @param shouldDeleteChildren specifies if child contacts should be deleted","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public static DeleteCommand selectIndex(Index targetIndex, boolean shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Add documentation to DG","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" if (shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteWithChildrenCommand(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an executable DeleteCommand based on whether to delete recursively.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * @param id of the contact to delete in the current list","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * @param shouldDeleteChildren specifies if child contacts should be deleted","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" public static DeleteCommand selectId(Id id, boolean shouldDeleteChildren) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Add documentation to DG","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" if (shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteWithChildrenCommand(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteCommand(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToDelete \u003d this.contactFunction.apply(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" if (contactToDelete \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" throw commandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" model.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_CONTACT_SUCCESS, Messages.format(contactToDelete)));","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" return selector.equals(otherDeleteCommand.selector);","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: replace this toString method with sth better than targetIndex","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"CJ-Lee01"},"content":" // To not replace yet until we do the tests","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"targetIndex\", selector)","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" * Gives the contact that the DeleteCommand is going to delete if a model is given.","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" * If such a contact does not exist, gives null.","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" protected Contact getContact(Model model) {","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"CJ-Lee01"},"content":" return contactFunction.apply(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":86,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/DeleteWithChildrenCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes a contact and also deletes its child contacts.","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"public class DeleteWithChildrenCommand extends DeleteCommand {","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DELETE_CONTACT_SUCCESS \u003d DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS + \" with\"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" + \":\\n%2$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to be deleted in the current contact list","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteWithChildrenCommand(Index targetIndex) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add documentation in DG","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" super(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteWithChildrenCommand(Id targetId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" super(targetId);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToDelete \u003d super.getContact(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" super.execute(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" // At this point if the contact is null, the superclass would have thrown exception.","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" // Superclass would have also deleted the contact from the list.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" assert contactToDelete !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Contact[] childContacts \u003d contactToDelete.getChildren();","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" Arrays.stream(childContacts).forEach(contact -\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" model.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete),","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" Arrays.stream(childContacts)","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" .map(c -\u003e Messages.format(c) + \"\\n\")","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" .reduce((c1, c2) -\u003e c1 + c2)","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" .orElse(\"No other contacts found\") // I can\u0027t find a better method.","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" ));","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":54}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" * Edits the details of an existing contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the contact identified \"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" + \"by the index number used in the displayed contact list. \"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_NAME + \" NAME] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" + FLAG_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" + FLAG_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_EDIT_CONTACT_SUCCESS \u003d \"Edited Contact: %1$s\";","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"This contact already exists in the address book.\";","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" private final EditContactDescriptor editContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * @param index of the contact in the filtered contact list to edit","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" * @param editContactDescriptor details to edit the contact with","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" public EditCommand(Index index, EditContactDescriptor editContactDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" this.editContactDescriptor \u003d new EditContactDescriptor(editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" List\u003cContact\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" Contact editedContact \u003d createEditedContact(contactToEdit, editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" if (!contactToEdit.isSameContact(editedContact) \u0026\u0026 model.hasContact(editedContact)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" model.setContact(contactToEdit, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_CONTACT_SUCCESS, Messages.format(editedContact)));","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" * Creates and returns a {@code Contact} with the details of {@code contactToEdit}","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" * edited with {@code editContactDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" private static Contact createEditedContact(Contact contactToEdit, EditContactDescriptor editContactDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" assert contactToEdit !\u003d null;","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" Name updatedName \u003d editContactDescriptor.getName()","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getName());","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" Id updatedId \u003d editContactDescriptor.getId()","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getId());","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" Phone updatedPhone \u003d editContactDescriptor.getPhone()","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getPhone().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" Email updatedEmail \u003d editContactDescriptor.getEmail()","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getEmail().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Url updatedUrl \u003d editContactDescriptor.getUrl()","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getUrl().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" Address updatedAddress \u003d editContactDescriptor.getAddress()","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getAddress().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e updatedTags \u003d editContactDescriptor.getTags()","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getTags());","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" return new Contact(updatedName, updatedId, updatedPhone, updatedEmail, updatedUrl, updatedAddress, updatedTags);","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 editContactDescriptor.equals(otherEditCommand.editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"editContactDescriptor\", editContactDescriptor)","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"CJ-Lee01"},"content":" * Stores the details to edit the contact with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" * corresponding field value of the contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" public static class EditContactDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" private Url url;","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor() {}","lastModifiedDate":"2023-10-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor(EditContactDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" setUrl(toCopy.url);","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cId\u003e getId() {","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"McNaBry"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"McNaBry"},"content":" public void setId(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cUrl\u003e getUrl() {","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"McNaBry"},"content":" return Optional.ofNullable(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":212,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":213,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":214,"author":{"gitId":"McNaBry"},"content":" public void setUrl(Url url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":215,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof EditContactDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor otherEditContactDescriptor \u003d (EditContactDescriptor) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"CJ-Lee01"},"content":" return Objects.equals(name, otherEditContactDescriptor.name)","lastModifiedDate":"2023-10-06"},{"lineNumber":256,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(phone, otherEditContactDescriptor.phone)","lastModifiedDate":"2023-10-06"},{"lineNumber":257,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(email, otherEditContactDescriptor.email)","lastModifiedDate":"2023-10-06"},{"lineNumber":258,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(address, otherEditContactDescriptor.address)","lastModifiedDate":"2023-10-06"},{"lineNumber":259,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(tags, otherEditContactDescriptor.tags);","lastModifiedDate":"2023-10-06"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"McNaBry":48,"CJ-Lee01":33,"wxwern":12,"-":180}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" * Finds and lists all contacts in address book whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all contacts whose names contain any of \"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" String.format(Messages.MESSAGE_CONTACTS_LISTED_OVERVIEW, model.getFilteredContactList().size()));","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"McNaBry":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * Lists all contacts in the address book to the user.","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_ALL_CONTACTS \u003d \"Listed all contacts\";","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_ORGANIZATIONS \u003d \"Listed all organizations\";","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_RECRUITERS \u003d \"Listed all recruiters\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"wamps-jp"},"content":" private final Predicate\u003cContact\u003e predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":" * Creates a ListCommand listing the {@code Contact} entries of the specified type.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"wamps-jp"},"content":" * @param predicate the predicate determining the type of {@code Contact} to be listed","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"wamps-jp"},"content":" public ListCommand(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" model.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"wamps-jp"},"content":" if (predicate.equals(PREDICATE_SHOW_ONLY_ORGANIZATIONS)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_ORGANIZATIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"wamps-jp"},"content":" } else if (predicate.equals(PREDICATE_SHOW_ONLY_RECRUITERS)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_RECRUITERS);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"wamps-jp"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"wamps-jp"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"wamps-jp"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"wamps-jp"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"wamps-jp"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":2,"wamps-jp":37,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"McNaBry":2,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION_ID;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_POSITION;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_STATUS;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand and returns an AddCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" * for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" FLAG_NAME, FLAG_PHONE, FLAG_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" FLAG_ADDRESS, FLAG_TAG, FLAG_URL,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" FLAG_ID, FLAG_STATUS, FLAG_POSITION,","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" FLAG_ORGANIZATION_ID,","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" FLAG_ORGANIZATION, FLAG_RECRUITER","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" if (!argMultimap.hasAllOfFlags(FLAG_NAME)","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_NAME, FLAG_ID, FLAG_PHONE, FLAG_EMAIL, FLAG_URL, FLAG_ADDRESS);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasFlag(FLAG_ORGANIZATION)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" Organization organization \u003d parseAsOrganization(argMultimap);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return new AddCommand(organization);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" } else if (argMultimap.hasFlag(FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d parseAsRecruiter(argMultimap);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" return new AddCommand(recruiter);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" // Deprecated contact format. Will be removed in future versions.","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new Contact(name, id, phone, email, url, address, tagList);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" return new AddCommand(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" private Recruiter parseAsRecruiter(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_ORGANIZATION_ID);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" Id oid \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ORGANIZATION_ID), ParserUtil::parseId);","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(name, id, phone, email, url, address, tagList, oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" private Organization parseAsOrganization(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_POSITION, FLAG_STATUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" Position position \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_POSITION), ParserUtil::parsePosition);","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" Status status \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_STATUS), ParserUtil::parseStatus);","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" Set\u003cId\u003e ridList \u003d Set.of(); // TODO: This should be dynamically determined from oid in Recruiter.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":140,"author":{"gitId":"tanshiyu1999"},"content":" return new Organization(name, id, phone, email, url, address, tagList, status, position, ridList);","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"McNaBry":86,"CJ-Lee01":1,"wxwern":11,"tanshiyu1999":9,"-":35}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"wamps-jp"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wamps-jp":1,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" * Stores mapping of flags to their respective arguments.","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * can be inserted multiple times for the same flag.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" /** Flags mapped to their respective arguments. **/","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" private final Map\u003cFlag, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" /** The preamble value (the text before the first valid flag). **/","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" private String preamble \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Associates the specified argument value with {@code flag} key in this map.","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Leading and trailing whitespaces are trimmed, and null values are treated as empty strings.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param flag Flag key with which the specified argument value is to be associated.","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @param argValue Argument value to be associated with the specified flag key.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" public void put(Flag flag, String argValue) {","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e argValues \u003d getAllValues(flag);","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" argValues.add(argValue \u003d\u003d null ? \"\" : argValue.trim());","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" argMultimap.put(flag, argValues);","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * Associates the specified value with the preamble of this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" * If the map previously contained a preamble, it will be replaced with this one.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * Leading and trailing whitespaces are trimmed, and null values are treated as empty strings.","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * @param preamble Argument value to be associated with the preamble.","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public void putPreamble(String preamble) {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" this.preamble \u003d preamble \u003d\u003d null ? \"\" : preamble.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of the given {@code flag} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * Invoking {@code .hasFlag(flag)} is equivalent to the result obtained via {@code .getValue(flag).isPresent()}.","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" public boolean hasFlag(Flag flag) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return !getAllValues(flag).isEmpty();","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of all of these {@code flags} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * Equivalent to the AND of booleans obtained via {@link #hasFlag} for all provided flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public boolean hasAllOfFlags(Flag... flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" if (!this.hasFlag(flag)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of at least one of these {@code flags} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" * Equivalent to the OR of booleans obtained via {@link #hasFlag} for all provided flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" public boolean hasAnyOfFlags(Flag... flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" if (this.hasFlag(flag)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" * Returns whether the given {@code flag} has a non-empty value assigned to it.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" * This returns true if the flag exists and is set to some non-empty string, and false otherwise.","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public boolean hasNonEmptyValue(Flag flag) {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" for (String value : getAllValues(flag)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" * Returns the last value of {@code flag}, if the flag exists.","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" * Note that an empty string or longer is guaranteed to be given if the flag exists.","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" public Optional\u003cString\u003e getValue(Flag flag) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e values \u003d getAllValues(flag);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" * Returns all values of {@code flag}.","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" * If the flag does not exist or has no values assigned (i.e., not even empty strings), this returns an empty list.","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" public List\u003cString\u003e getAllValues(Flag flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" if (!argMultimap.containsKey(flag)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(flag));","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * Returns the preamble (text before the first valid flag).","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" return preamble;","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if any of the flags given in {@code flags} appeared more than","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" Flag[] duplicatedFlags \u003d Stream.of(flags).distinct()","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" .filter(flag -\u003e argMultimap.containsKey(flag) \u0026\u0026 argMultimap.get(flag).size() \u003e 1)","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" if (duplicatedFlags.length \u003e 0) {","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicateFlags(duplicatedFlags));","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if there exists any more flags than the ones given in {@code flags}","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" * among the ones put in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" List\u003cFlag\u003e referenceFlagsList \u003d List.of(flags);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" Flag[] extraneousFlags \u003d argMultimap.keySet().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" .filter(f -\u003e !referenceFlagsList.contains(f))","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" if (extraneousFlags.length \u003e 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForExtraneousFlags(extraneousFlags));","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if any of the flags given in {@code flags} have a non-empty value","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * assigned to it.","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" Flag[] flagsWithUsefulValues \u003d Stream.of(flags).distinct()","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" .filter(argMultimap::containsKey)","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" .filter(f -\u003e argMultimap.get(f).stream().anyMatch(s -\u003e !s.isEmpty()))","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" if (flagsWithUsefulValues.length \u003e 0) {","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForNonEmptyValuedFlags(flagsWithUsefulValues));","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"wxwern":113,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}\u003cbr\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * e.g. {@code some preamble text t/ 11.00 t/ 12.00 k/ m/ July} where flag are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps flag to their","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * respective argument values. Only the given flag will be recognized in the arguments string.","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * @param flags Flags to prioritize tokenizing the arguments string with","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flag to their arguments","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public static ArgumentMultimap tokenize(String argsString, Flag... flags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" String[] words \u003d splitByWords(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" return extractArguments(words, flags);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Splits an arguments string into individual words, separated by space.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @return The terms formed after splitting the arguments string by the space character.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" private static String[] splitByWords(String argsString) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" return argsString.split(\" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" * Locate all the locations in the words list that represent flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * @param wordsArray An array of words.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" * @param targetedFlags An array of flags should be checked explicitly.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * @return The list of indices where a flag can be found.","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" private static List\u003cInteger\u003e findFlagIndices(String[] wordsArray, Flag[] targetedFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" List\u003cInteger\u003e flagIndices \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 0; i \u003c wordsArray.length; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" String word \u003d wordsArray[i];","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" if (Flag.isFlagSyntax(word) || Flag.findMatch(word, targetedFlags).isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" flagIndices.add(i);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return flagIndices;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * Extracts flag and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * extracted flag to their respective arguments. Flags are extracted based on their zero-based positions in","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" * @param words An array of words derived from the arguments string.","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" * @param targetedFlags An array of flags should be checked explicitly.","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flags to their arguments.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" private static ArgumentMultimap extractArguments(String[] words, Flag[] targetedFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e wordsList \u003d List.of(words);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" // Define an \"end of range\" to be the end of a value or preamble.","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" // We prepare a list that marks the end of ranges via *exclusive* indices (i.e., end index + 1).","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" // In other words, if the list has [3, 5], it means there are two ranges [0,3) and [3,5).","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" List\u003cInteger\u003e endOfRangeIndices \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" endOfRangeIndices.addAll(findFlagIndices(words, targetedFlags));","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" endOfRangeIndices.add(words.length);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" // Search through the ranges and map flag to their argument values (if any)","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 0; i \u003c endOfRangeIndices.size(); i++) {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" // Note that the bounds are [start, end), i.e., start \u003c\u003d x \u003c end.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" int start \u003d i \u003d\u003d 0 ? 0 : endOfRangeIndices.get(i - 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" int end \u003d endOfRangeIndices.get(i);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" if (start \u003e\u003d end) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" continue;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" // Case 1: Preamble (if we reach here in the first loop iteration).","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" String preamble \u003d String.join(\" \", wordsList.subList(start, end)).trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" argMultimap.putPreamble(preamble);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" continue;","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" // Case 2: Flag + Possible Argument Value (if we reach here in 2nd+ loop iterations).","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" String flagString \u003d words[start];","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" String valueString \u003d String.join(\" \", wordsList.subList(start + 1, end)).trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" Flag flag \u003d Flag.findMatch(flagString, targetedFlags)","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" .or(() -\u003e Flag.parseOptional(flagString))","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" .orElseThrow(); // We should never get here since the flags are validated in findFlagIndices.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" argMultimap.put(flag, valueString);","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" return argMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"wxwern":63,"-":52}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" /* Flag definitions */","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_NAME \u003d new Flag(\"name\");","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_PHONE \u003d new Flag(\"phone\");","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_EMAIL \u003d new Flag(\"email\");","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_ADDRESS \u003d new Flag(\"addr\");","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_TAG \u003d new Flag(\"tag\");","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ORGANIZATION \u003d new Flag(\"org\");","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_RECRUITER \u003d new Flag(\"rec\");","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_URL \u003d new Flag(\"url\");","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_STATUS \u003d new Flag(\"stat\");","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_POSITION \u003d new Flag(\"pos\");","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ID \u003d new Flag(\"id\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" public static final Flag FLAG_RECURSIVE \u003d new Flag(\"recursive\");","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ORGANIZATION_ID \u003d new Flag(\"oid\");","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_RECRUITER_ID \u003d new Flag(\"rid\");","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":1,"wxwern":7,"tanshiyu1999":5,"-":9}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECURSIVE;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" ArgumentMultimap argumentMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" FLAG_ID, FLAG_RECURSIVE);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" boolean hasIndex \u003d !argumentMultimap.getPreamble().isEmpty();","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" boolean hasId \u003d argumentMultimap.getValue(FLAG_ID).isPresent();","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" boolean isRecursive \u003d argumentMultimap.getValue(FLAG_RECURSIVE).isPresent();","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" if (hasIndex) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" return parseDeleteIndexCommand(argumentMultimap.getPreamble(), isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" if (hasId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" return parseDeleteIdCommand(argumentMultimap.getValue(FLAG_ID).get(), isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" private static DeleteCommand parseDeleteIdCommand(String idString, boolean isRecursive) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Id id;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" id \u003d ParserUtil.parseId(idString);","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" return DeleteCommand.selectId(id, isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" private static DeleteCommand parseDeleteIndexCommand(String indexStr, boolean isRecursive) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" Index index;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" index \u003d ParserUtil.parseIndex(indexStr);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" return DeleteCommand.selectIndex(index, isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":35,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" ArgumentTokenizer.tokenize(args, FLAG_NAME, FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS, FLAG_TAG);","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_NAME, FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_NAME).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_PHONE).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(FLAG_PHONE).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(FLAG_EMAIL).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(FLAG_ADDRESS).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" parseTagsForEdit(argMultimap.getAllValues(FLAG_TAG)).ifPresent(editContactDescriptor::setTags);","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" if (!editContactDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" return new EditCommand(index, editContactDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"CJ-Lee01":4,"wxwern":16,"-":65}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"McNaBry":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/Flag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * A flag is an argument in and of itself. It functions as a option specifier, or as a marker for the beginning of a","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" * command argument.","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * E.g. \u0027--t\u0027 in \u0027add James --t friend\u0027.","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"public class Flag {","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" public static final String DEFAULT_PREFIX \u003d \"--\";","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" public static final String DEFAULT_POSTFIX \u003d \"\";","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private final String name;","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private final String prefix;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" private final String postfix;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * Constructs a flag with the {@link #DEFAULT_PREFIX} and {@link #DEFAULT_POSTFIX} surrounding the name.","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" * If the name has any leading or trailing whitespace, it\u0027ll be trimmed.","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" * @param name The name of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" public Flag(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" this(name, DEFAULT_PREFIX, DEFAULT_POSTFIX);","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * Constructs a flag with a custom prefix and custom postfix.","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" * Any fields with leading or trailing whitespace are trimmed.","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" * @param name The name of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" * @param prefix The prefix of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" * @param postfix The postfix of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" public Flag(String name, String prefix, String postfix) {","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" this.name \u003d name \u003d\u003d null ? \"\" : name.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" this.prefix \u003d prefix \u003d\u003d null ? \"\" : prefix.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" this.postfix \u003d postfix \u003d\u003d null ? \"\" : postfix.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" * Parses the given string using the default prefix and postfix format into a {@link Flag}.","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" * @return The corresponding {@link Flag} instance.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" * @throws ParseException if the flag is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static Flag parse(String string) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" if (!isFlagSyntax(string)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForInvalidFlagString(string)","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" return new Flag(string.substring(","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" DEFAULT_PREFIX.length(),","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" string.length() - DEFAULT_POSTFIX.length()","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" * Parses the given string using the default prefix and postfix format into an optional {@link Flag},","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" * which will return an empty optional if it\u0027s invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @return An optional containing the flag if it is a valid flag format.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" public static Optional\u003cFlag\u003e parseOptional(String string) {","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" return Optional.of(parse(string));","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" * Finds a {@link Flag} from the given {@code flags} that matches the given string representation.","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for a corresponding matching flag or flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" * @param flags The array of flags to check from.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" * @return An optional instance with the result if there is a successful match.","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" * @throws IllegalArgumentException if the flag is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public static Optional\u003cFlag\u003e findMatch(String string, Flag[] flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" if (string !\u003d null \u0026\u0026 string.equals(flag.getFlagString())) {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" return Optional.of(flag);","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" public String getName() {","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" return name;","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" public String getPrefix() {","lastModifiedDate":"2023-10-07"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" return prefix;","lastModifiedDate":"2023-10-07"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" public String getPostfix() {","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" return postfix;","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" * Returns the full string that would be used by the user to input a flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" * Equivalent to calling {@link #toString()}.","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" public String getFlagString() {","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" return this.toString();","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * Checks whether the given string representation resembles a flag.","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" * If this is true, then it resembles the default prefix-name-postfix format specified in {@link Flag},","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" * and is a plausible output from {@link Flag#getFlagString()}.","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" * @return true if the string resembles a flag, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" public static boolean isFlagSyntax(String string) {","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" if (string \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" return string.startsWith(DEFAULT_PREFIX) \u0026\u0026 string.endsWith(DEFAULT_POSTFIX);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" * Returns a string representation of this flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" * This is the full string that would be used by a user to input a flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" * This means it\u0027s the concatenated result of prefix, name, postfix together.","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" * @return The string representation of this flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-07"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" return this.getPrefix() + this.getName() + this.getPostfix();","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" return name \u003d\u003d null ? 0 : name.hashCode();","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-07"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-07"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" if (!(other instanceof Flag)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" Flag otherFlag \u003d (Flag) other;","lastModifiedDate":"2023-10-07"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" return Objects.equals(name, otherFlag.name)","lastModifiedDate":"2023-10-07"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 Objects.equals(prefix, otherFlag.prefix)","lastModifiedDate":"2023-10-07"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 Objects.equals(postfix, otherFlag.postfix);","lastModifiedDate":"2023-10-07"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wxwern":172}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" * Parses the given {@code String} of arguments in the context of the ListCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":" * and returns a ListCommand object for execution.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":" public ListCommand parse(String args) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, FLAG_ORGANIZATION, FLAG_RECRUITER);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasAllOfFlags(FLAG_ORGANIZATION, FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasFlag(FLAG_ORGANIZATION)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ONLY_ORGANIZATIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" } else if (argMultimap.hasFlag(FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ONLY_RECRUITERS);","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"wxwern":3,"wamps-jp":33}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String id} into a {@code Status}.","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public static Id parseId(String id) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" if (!Id.isValidId(id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" return new Id(trimmedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String status} into a {@code Status}.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(status);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" return new Status(trimmedStatus);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String position} into a {@code Position}.","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code position} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" public static Position parsePosition(String position) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(position);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" String trimmedPosition \u003d position.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" if (!Position.isValidPosition(position)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Position.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" return new Position(trimmedPosition);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String url} into an {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code url} is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" public static Url parseUrl(String url) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" requireNonNull(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" String trimmedUrl \u003d url.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" if (!Url.isValidUrl(trimmedUrl)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" return new Url(trimmedUrl);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":190,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"tanshiyu1999"},"content":" * Parses {@code Collection\u003cString\u003e ids} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"tanshiyu1999"},"content":" public static Set\u003cId\u003e parseIds(Collection\u003cString\u003e ids) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(ids);","lastModifiedDate":"2023-10-19"},{"lineNumber":196,"author":{"gitId":"tanshiyu1999"},"content":" final Set\u003cId\u003e idSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":197,"author":{"gitId":"tanshiyu1999"},"content":" for (String idName : ids) {","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"tanshiyu1999"},"content":" idSet.add(parseId(idName));","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"tanshiyu1999"},"content":" return idSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":202,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":203,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"McNaBry"},"content":" * References a function that parses a string into an expected output within the {@link ParserUtil} utility class.","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"McNaBry"},"content":" * @param \u003cR\u003e The return result.","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"McNaBry"},"content":" @FunctionalInterface","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"McNaBry"},"content":" public interface StringParserFunction\u003cR\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"McNaBry"},"content":" R parse(String value) throws ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"McNaBry"},"content":" * Returns an object of type R that is given by passing the given string into {@code parseFunction} if","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"McNaBry"},"content":" * {@code optionalString} is non-empty, otherwise returns null.","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"McNaBry"},"content":" * @param \u003cR\u003e The type of object returned by parsing the optionalString.","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code optionalString} is invalid as determined by {@code parseFunction}","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"McNaBry"},"content":" public static \u003cR\u003e R parseOptionally(Optional\u003cString\u003e optionalString, StringParserFunction\u003cR\u003e parseFunction)","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"McNaBry"},"content":" throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"McNaBry"},"content":" if (optionalString.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"McNaBry"},"content":" return parseFunction.parse(optionalString.get());","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"McNaBry":74,"tanshiyu1999":37,"-":118}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.UniqueContactList;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * Duplicates are not allowed (by .isSameContact comparison)","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" private final UniqueContactList contacts;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" contacts \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an AddressBook using the Contacts in the {@code toBeCopied}","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contents of the contact list with {@code contacts}.","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contacts} must not contain duplicate contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" public void setContacts(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" this.contacts.setContacts(contacts);","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" setContacts(newData.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" //// contact-level operations","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if a contact with the same identity as {@code contact} exists in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.contains(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must not already exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" public void addContact(Contact p) {","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" contacts.add(p);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the given contact {@code target} in the list with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing one in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" contacts.setContact(target, editedContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" public void removeContact(Contact key) {","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" contacts.remove(key);","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a contact which id matches the given id.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" * Gives null if a contact with such id does not exist.","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" * Given id must not be null.","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" for (Contact c: contacts) {","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" if (id.equals(c.getId())) {","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" return c;","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"contacts\", contacts)","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e getContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.equals(otherAddressBook.contacts);","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.hashCode();","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":41,"-":100}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Type;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ALL_CONTACTS \u003d contact -\u003e true;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ONLY_ORGANIZATIONS \u003d contact -\u003e contact.getType() \u003d\u003d Type.ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ONLY_RECRUITERS \u003d contact -\u003e contact.getType() \u003d\u003d Type.RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if a contact with the same identity as {@code contact} exists in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" boolean hasContact(Contact contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes the given contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" void deleteContact(Contact target);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Adds the given contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contact} must not already exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" void addContact(Contact contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the given contact {@code target} with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing one in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" void setContact(Contact target, Contact editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a contact which matches the given id.","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" * Gives null if no such contact is found.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" * Given id must not be null.","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" Contact getContactById(Id id);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" /** Returns an unmodifiable view of the filtered contact list */","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" ObservableList\u003cContact\u003e getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" * Updates the filter of the filtered contact list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" void updateFilteredContactList(Predicate\u003cContact\u003e predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":14,"wamps-jp":4,"-":72}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" private final FilteredList\u003cContact\u003e filteredContacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" filteredContacts \u003d new FilteredList\u003c\u003e(this.addressBook.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" return addressBook.hasContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" public void deleteContact(Contact target) {","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.removeContact(target);","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(target, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.setContact(target, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":" return addressBook.getContactById(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Contact List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an unmodifiable view of the list of {@code Contact} backed by the internal list of","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" return filteredContacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" public void updateFilteredContactList(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":" filteredContacts.setPredicate(predicate);","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 filteredContacts.equals(otherModelManager.filteredContacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":18,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an unmodifiable view of the contacts list.","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" * This list will not contain any duplicate contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" ObservableList\u003cContact\u003e getContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":3,"-":13}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"jobby.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":1,"-":87}},{"path":"src/main/java/seedu/address/model/contact/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s address in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":63}},{"path":"src/main/java/seedu/address/model/contact/Contact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.commons.exceptions.IllegalOperationException;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Guarantees: name and id are present and not null, field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"public class Contact {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" private static final String ILLEGAL_OPERATION_MESSAGE \u003d \"Contact cannot have child contacts\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" private final Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cEmail\u003e email;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cUrl\u003e url;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cAddress\u003e address;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public Contact(Name name, Id id, Phone phone, Email email, Url url, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" requireAllNonNull(name, id, tags);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" this.phone \u003d Optional.ofNullable(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" this.email \u003d Optional.ofNullable(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" this.url \u003d Optional.ofNullable(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" this.address \u003d Optional.ofNullable(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public Type getType() {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" // TODO: This should be an abstract method.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" return Type.UNKNOWN;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" public Id getId() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" return id;","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cUrl\u003e getUrl() {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" return url;","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if both contacts have the same name.","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * This defines a weaker notion of equality between two contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public boolean isSameContact(Contact otherContact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" if (otherContact \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" return otherContact !\u003d null","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 otherContact.getName().equals(getName());","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" * Gives the array of contacts that are linked under this contact.","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public Contact[] getChildren() {","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" // default return value","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add to DG","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" return new Contact[]{};","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a child contact under this contact.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" * @throws IllegalOperationException if this contact cannot accept child contacts","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" public void addChild(Contact childContact) throws IllegalOperationException {","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" // Should throw exception if the type of contact cannot have child contacts.","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add to DG, do JavaDocs","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" throw new IllegalOperationException(ILLEGAL_OPERATION_MESSAGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if both contacts have the same identity and data fields.","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"CJ-Lee01"},"content":" * This defines a stronger notion of equality between two contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" // TODO: This should be an abstract method.","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof Contact)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" Contact otherContact \u003d (Contact) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" if (this.getType() !\u003d otherContact.getType()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" if (this.getType() \u003d\u003d Type.UNKNOWN) {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" return id.equals(otherContact.id)","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 name.equals(otherContact.name)","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 phone.equals(otherContact.phone)","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 email.equals(otherContact.email)","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 address.equals(otherContact.address)","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 url.equals(otherContact.url)","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 tags.equals(otherContact.tags);","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" throw new IllegalStateException(\"The equality comparison should be overriden by a subclass.\");","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" return Objects.hash(id, getType(), name, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * Returns a builder for the {@link #toString} method of this class using {@code ToStringBuilder}.","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" * This can be overriden by subclasses to add properties to the builder.","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" * @return An instance of {@code ToStringBuilder} capable of crafting a string representation of this instance.","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" protected ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" .add(\"type\", getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" .add(\"url\", url)","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" .add(\"tags\", tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" return toStringBuilder().toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":32,"CJ-Lee01":37,"wxwern":32,"tanshiyu1999":2,"-":79}},{"path":"src/main/java/seedu/address/model/contact/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s email in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":77}},{"path":"src/main/java/seedu/address/model/contact/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.util.UUID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" * Represents a Contact\u0027s unique Id in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidId(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"public class Id {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" \"Id should only contain alphanumeric characters, underscores and dashes, and it should not be blank\";","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * The first character of the id must not be a whitespace,","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-zA-Z0-9]([_\\\\-]?[a-zA-Z0-9])*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public final String value;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Id}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * @param id A valid id.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public Id(String id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" value \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" * Constructs an autogenerated {@code Id}.","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public Id() {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" value \u003d UUID.randomUUID().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidId(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" return value;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" Id otherId \u003d (Id) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return value.equals(otherId.value);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":75}},{"path":"src/main/java/seedu/address/model/contact/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s name in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":1,"-":63}},{"path":"src/main/java/seedu/address/model/contact/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * Tests that a {@code Contact}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cContact\u003e {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" public boolean test(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(contact.getName().fullName, keyword));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":4,"-":39}},{"path":"src/main/java/seedu/address/model/contact/Organization.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" * Guarantees: Guarantees: name and id are present and not null,","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" * field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"public class Organization extends Contact {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Override the getChildren method","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cStatus\u003e status;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cPosition\u003e position;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" private final Set\u003cId\u003e rids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" public Organization(","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" Name name, Id id, Phone phone, Email email, Url url,","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" Address address, Set\u003cTag\u003e tags, Status status, Position position,","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" Set\u003cId\u003e rids","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" ) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" super(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" this.status \u003d Optional.ofNullable(status);","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" this.position \u003d Optional.ofNullable(position);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" this.rids.addAll(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" public Type getType() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" return Type.ORGANIZATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" return status;","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cPosition\u003e getPosition() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" return position;","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" public Set\u003cId\u003e getRecruiterIds() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" return Collections.unmodifiableSet(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" if (!(other instanceof Organization)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" Organization otherContact \u003d (Organization) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" return getId().equals(otherContact.getId())","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getType().equals(otherContact.getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getName().equals(otherContact.getName())","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getPhone().equals(otherContact.getPhone())","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getEmail().equals(otherContact.getEmail())","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getAddress().equals(otherContact.getAddress())","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getUrl().equals(otherContact.getUrl())","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getTags().equals(otherContact.getTags())","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 status.equals(otherContact.status)","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 position.equals(otherContact.position);","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" return Objects.hash(","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" getId(), getType(), getName(), getPhone(), getEmail(), getAddress(), getTags(), status, position","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" public ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" return super.toStringBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" .add(\"status\", status)","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" .add(\"position\", position);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":20,"CJ-Lee01":1,"wxwern":35,"tanshiyu1999":44}},{"path":"src/main/java/seedu/address/model/contact/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s phone number in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":59}},{"path":"src/main/java/seedu/address/model/contact/Position.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation\u0027s position (that the user is applying to) in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class Position {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" \"Positions should only contain alphanumeric characters and spaces\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" /*","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public final String jobPosition;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code Position}.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * @param position A valid position.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public Position(String position) {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(position);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" checkArgument(isValidPosition(position), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" jobPosition \u003d position;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Position}.","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" public Position() {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" jobPosition \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" public static boolean isValidPosition(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" if (!(other instanceof Position)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" Position otherPosition \u003d (Position) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition.equals(otherPosition.jobPosition);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":9,"wxwern":2,"tanshiyu1999":61}},{"path":"src/main/java/seedu/address/model/contact/Recruiter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" * Represents a Recruiter in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" * Guarantees: Guarantees: name and id are present and not null,","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"public class Recruiter extends Contact {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cId\u003e oid;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public Recruiter(Name name, Id id, Phone phone, Email email, Url url, Address address, Set\u003cTag\u003e tags, Id oid) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" super(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d Optional.ofNullable(oid);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cId\u003e getOrganizationId() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" return oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public Type getType() {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return Type.RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Recruiter)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" Recruiter otherContact \u003d (Recruiter) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" return getId().equals(otherContact.getId())","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getType().equals(otherContact.getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getName().equals(otherContact.getName())","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getPhone().equals(otherContact.getPhone())","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getEmail().equals(otherContact.getEmail())","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getAddress().equals(otherContact.getAddress())","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getUrl().equals(otherContact.getUrl())","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getTags().equals(otherContact.getTags())","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 oid.equals(otherContact.oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" return Objects.hash(","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" getId(), getType(), getName(), getPhone(), getEmail(), getAddress(), getTags(), oid","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" public ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" return super.toStringBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" .add(\"oid\", oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":73}},{"path":"src/main/java/seedu/address/model/contact/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation\u0027s status in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class Status {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" \"Status should only contain alphanumeric characters and spaces\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public final String applicationStatus;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Status}.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" * @param status A valid status.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" public Status(String status) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(status);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" applicationStatus \u003d status;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Status}.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" public Status() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" applicationStatus \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid status.","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidStatus(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" if (!(other instanceof Position)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" Position otherPosition \u003d (Position) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus.equals(otherPosition.jobPosition);","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":13,"wxwern":2,"tanshiyu1999":54}},{"path":"src/main/java/seedu/address/model/contact/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.InvalidContactTypeStringException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" * Represents the type of {@code Contact} instances.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"public enum Type {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" ORGANIZATION(\"organization\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" RECRUITER(\"recruiter\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" UNKNOWN(\"unknown\");","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" private final String textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" Type(String textRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" this.textRepresentation \u003d textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * Returns the {@code ContactType} enum as a string representation. This is reversible, i.e., the string","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * representation here can be used to re-obtain the {@code ContactType} enum by using {@link #fromString}.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * @return A string representation of the contact type.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" return this.textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * Returns a corresponding {@code ContactType} enum value matching the given string representation of it.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @param textRepresentation The text representation of the {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" * @return The corresponding {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" * @throws InvalidContactTypeStringException if the given input does not represent any known {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" public static Type fromString(String textRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" for (Type type : Type.values()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" if (type.textRepresentation.equalsIgnoreCase(textRepresentation)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" return type;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" return UNKNOWN;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" // TODO: We should throw an exception instead like the below. We are using UNKNOWN for now for compatibility.","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" // throw new InvalidContactTypeStringException(textRepresentation);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":3,"wxwern":46}},{"path":"src/main/java/seedu/address/model/contact/UniqueContactList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * A list of contacts that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * A contact is considered unique by comparing using {@code Contact#isSameContact(Contact)}. As such, adding and","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * updating of contacts uses Contact#isSameContact(Contact) for equality so as to ensure that the contact being added or","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" * updated is unique in terms of identity in the UniqueContactList. However, the removal of a contact uses","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Contact#equals(Object) so as to ensure that the contact with exactly the same fields will be removed.","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" * @see Contact#isSameContact(Contact)","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":"public class UniqueContactList implements Iterable\u003cContact\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if the list contains an equivalent contact as the given argument.","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" public boolean contains(Contact toCheck) {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" return internalList.stream().anyMatch(toCheck::isSameContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must not already exist in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" public void add(Contact toAdd) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contact {@code target} in the list with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing contact in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(target, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" if (!target.isSameContact(editedContact) \u0026\u0026 contains(editedContact)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" internalList.set(index, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Removes the equivalent contact from the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must exist in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" public void remove(Contact toRemove) {","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" public void setContacts(UniqueContactList replacement) {","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contents of this list with {@code contacts}.","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contacts} must not contain duplicate contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public void setContacts(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" if (!contactsAreUnique(contacts)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" internalList.setAll(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" public Iterator\u003cContact\u003e iterator() {","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof UniqueContactList)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList otherUniqueContactList \u003d (UniqueContactList) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" return internalList.equals(otherUniqueContactList.internalList);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if {@code contacts} contains only unique contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" private boolean contactsAreUnique(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c contacts.size() - 1; i++) {","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"CJ-Lee01"},"content":" for (int j \u003d i + 1; j \u003c contacts.size(); j++) {","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" if (contacts.get(i).isSameContact(contacts.get(j))) {","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":12,"CJ-Lee01":32,"-":106}},{"path":"src/main/java/seedu/address/model/contact/Url.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents a Contact\u0027s url in the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidUrl(String)}","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class Url {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" \"Url should minimally contain a dot surrounded by text, like example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public static final String VALIDATION_REGEX \u003d \".+\\\\..+\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public final String value;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" * @param url A valid url.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public Url(String url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" requireNonNull(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidUrl(url), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" value \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public Url() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" value \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid url.","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidUrl(String test) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return value;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Url)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" Url otherName \u003d (Url) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" return value.equals(otherName.value);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"McNaBry":69,"wxwern":1}},{"path":"src/main/java/seedu/address/model/contact/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Signals that the operation will result in duplicate Contacts (Contacts are considered duplicates if they have the","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" * same identity).","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" super(\"Operation would result in duplicate contacts\");","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":3,"-":7}},{"path":"src/main/java/seedu/address/model/contact/exceptions/InvalidContactTypeStringException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" * Signals that the given string representation of a {@code ContactType} enum is invalid, i.e., there are no","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * enum values with the given string representation.","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class InvalidContactTypeStringException extends RuntimeException {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * Constructs an exception for invalid contact type string representations.","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * @param incorrectRepresentation The incorrect string representation used.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" public InvalidContactTypeStringException(String incorrectRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" super(String.format(\"\u0027%s\u0027 is not a valid contact type\", incorrectRepresentation));","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":1,"wxwern":16}},{"path":"src/main/java/seedu/address/model/contact/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Signals that the operation is unable to find the specified contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":4}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public static Contact[] getSampleContacts() {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" return new Contact[] {","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Alex Yeoh Inc\"), new Id(\"alex_yeoh_inc\"), new Phone(\"87438807\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" new Email(\"contact@alexyeoh.example.com\"), new Url(\"alexyeoh.example.com\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" null, getTagSet(\"parttime\"), new Status(\"interested\"), null, Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Google\"), new Id(\"google\"), new Phone(\"65218000\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" new Url(\"careers.google.com\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" new Address(\"70 Pasir Panjang Road, #03-71, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" + \"Mapletree Business City, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" + \"Singapore 117371\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" getTagSet(\"bigtech\", \"internship\", \"competitive\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" new Status(\"applied\"), new Position(\"Software Engineer\"), Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Job Seeker Plus\"), new Id(\"job_seeker_plus\"), new Phone(\"93210283\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" new Email(\"jobseekerplus@example.com\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" new Address(\"Blk 16 Real Street 128, #08-04\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" getTagSet(\"startup\", \"internship\"), null, null, Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" new Recruiter(new Name(\"David Li\"), new Id(\"david_li\"), new Phone(\"91031282\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" new Email(\"davidli@alexyeoh.example.com\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" getTagSet(\"direct\", \"network\"), new Id(\"alex_yeoh_inc\")),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" new Recruiter(new Name(\"Roy Balakrishnan\"), new Id(\"roy_balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" new Email(\"royb@example.com\"), new Url(\"www.nus.edu.sg\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" null, getTagSet(\"friendly\"), null)","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" for (Contact sampleContact : getSampleContacts()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" sampleAb.addContact(sampleContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" * Returns a id set containing the list of strings given.","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" public static Set\u003cId\u003e getIdSet(String... strings) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" .map(Id::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"McNaBry":12,"CJ-Lee01":4,"wxwern":20,"tanshiyu1999":9,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Type;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" * Jackson-friendly version of {@link Contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":"class JsonAdaptedContact {","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Contact\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" private final String type;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" private String status;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" private String position;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" private final String id;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" private final String url;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" private String oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code JsonAdaptedContact} with the given contact details.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public JsonAdaptedContact(@JsonProperty(\"type\") String type,","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"id\") String id,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"url\") String url, @JsonProperty(\"address\") String address,","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" @JsonProperty(\"status\") String status, @JsonProperty(\"position\") String position,","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" @JsonProperty(\"oid\") String oid, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" this.status \u003d status;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" this.position \u003d position;","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * Converts a given {@code Contact} into this class for Jackson use.","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public JsonAdaptedContact(Contact source) {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" if (source.getType() \u003d\u003d Type.ORGANIZATION) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Organization organization \u003d (Organization) source;","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" status \u003d organization.getStatus()","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" .map(status -\u003e status.applicationStatus)","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" position \u003d organization.getPosition()","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" .map(position -\u003e position.jobPosition)","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" oid \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" } else if (source.getType() \u003d\u003d Type.RECRUITER) {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d (Recruiter) source;","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" status \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" position \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" oid \u003d recruiter.getOrganizationId()","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" .map(oid -\u003e oid.value)","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" type \u003d source.getType().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" id \u003d source.getId().value;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" phone \u003d source.getPhone().map(phone -\u003e phone.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" email \u003d source.getEmail().map(email -\u003e email.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" url \u003d source.getUrl().map(url -\u003e url.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" address \u003d source.getAddress().map(address -\u003e address.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" * Converts this Jackson-friendly adapted contact object into the model\u0027s {@code Contact} object.","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" public Contact toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" final List\u003cTag\u003e contactTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" contactTags.add(tag.toModelType());","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" // Type#fromString implicitly returns UNKNOWN if type is null. May change if UNKNOWN is removed in the future.","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" final Type modelType \u003d Type.fromString(type);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" if (id \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Id.class.getSimpleName()));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" if (!Id.isValidId(id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" final Id modelId \u003d new Id(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" if (phone !\u003d null \u0026\u0026 !Phone.isValidPhone(phone)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" final Phone modelPhone \u003d phone \u003d\u003d null ? null : new Phone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" if (email !\u003d null \u0026\u0026 !Email.isValidEmail(email)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" final Email modelEmail \u003d email \u003d\u003d null ? null : new Email(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" if (url !\u003d null \u0026\u0026 !Url.isValidUrl(url)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" final Url modelUrl \u003d url \u003d\u003d null ? null : new Url(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" if (address !\u003d null \u0026\u0026 !Address.isValidAddress(address)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" final Address modelAddress \u003d address \u003d\u003d null ? null : new Address(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"CJ-Lee01"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(contactTags);","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" switch (modelType) {","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" case ORGANIZATION: {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" final Set\u003cId\u003e modelRids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" if (status !\u003d null \u0026\u0026 !Status.isValidStatus(status)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" final Status modelStatus \u003d status \u003d\u003d null ? new Status() : new Status(status);","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" if (position !\u003d null \u0026\u0026 !Position.isValidPosition(position)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Position.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" final Position modelPosition \u003d position \u003d\u003d null ? new Position() : new Position(position);","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" return new Organization(","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress,","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"tanshiyu1999"},"content":" modelTags, modelStatus, modelPosition, modelRids","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"McNaBry"},"content":" case RECRUITER: {","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" if (oid !\u003d null \u0026\u0026 !Id.isValidId(oid)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"McNaBry"},"content":" final Id modelOid \u003d oid \u003d\u003d null ? null : new Id(oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"McNaBry"},"content":" modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress,","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"McNaBry"},"content":" modelTags, modelOid","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"McNaBry"},"content":" return new Contact(modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress, modelTags);","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":79,"CJ-Lee01":11,"wxwern":24,"tanshiyu1999":23,"-":58}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * Jackson-friendly version of {@link Id}.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"class JsonAdaptedId {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" private final String idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code JsonAdaptedId} with the given {@code idName}.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" @JsonCreator","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public JsonAdaptedId(String idName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" this.idName \u003d idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Converts a given {@code Id} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public JsonAdaptedId(Id source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" idName \u003d source.value;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" @JsonValue","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" public String getIdName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" return idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Id} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" public Id toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" if (!Id.isValidId(idName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" return new Id(idName);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":1,"tanshiyu1999":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"Contacts list contains duplicate contact(s).\";","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private final List\u003cJsonAdaptedContact\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedContact\u003e persons) {","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" persons.addAll(source.getContactList().stream().map(JsonAdaptedContact::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" for (JsonAdaptedContact jsonAdaptedContact : persons) {","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" Contact contact \u003d jsonAdaptedContact.toModelType();","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" if (addressBook.hasContact(contact)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":9,"-":50}},{"path":"src/main/java/seedu/address/ui/ContactCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.function.Supplier;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * An UI component that displays information of a {@code Contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FXML \u003d \"ContactListCard.fxml\";","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX. As a consequence, UI","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * elements\u0027 variable names cannot be set to such keywords or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" public final Contact contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" private VBox cardPaneInnerVbox;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" private Label index;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" private Label linkedParentOrganization;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" private Label status;","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" private Label position;","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" private Label url;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a {@code PersonCode} with the given {@code Contact} and index to display.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" public ContactCard(Contact contact, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" this.contact \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" index.setText(String.format(\"%d. \", displayedIndex));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" id.setText(contact.getId().value);","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" name.setText(contact.getName().fullName);","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" final Label typeLabel \u003d new Label(contact.getType().toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" typeLabel.setId(\"type\");","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" tags.getChildren().add(typeLabel); // add it to the front of tags","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" phone, () -\u003e contact.getPhone().map(phone -\u003e phone.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" address, () -\u003e contact.getAddress().map(address -\u003e address.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" email, () -\u003e contact.getEmail().map(email -\u003e email.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" url, () -\u003e contact.getUrl().map(url -\u003e url.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" switch (contact.getType()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" case ORGANIZATION: {","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" Organization organization \u003d (Organization) contact;","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" final String statusString \u003d organization.getStatus()","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" .map(status -\u003e status.applicationStatus).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" final String positionString \u003d organization.getPosition()","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" .map(position -\u003e position.jobPosition).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" status, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" StringUtil.formatWithNullFallback(\"Application Status: %s\", statusString));","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" position, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" StringUtil.formatWithNullFallback(\"Job Position: %s\", positionString));","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().remove(linkedParentOrganization);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" case RECRUITER: {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" Recruiter recruiter \u003d (Recruiter) contact;","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" final Optional\u003cId\u003e linkedOrgId \u003d recruiter.getOrganizationId();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" linkedParentOrganization, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" linkedOrgId.map(oid -\u003e String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" \"from %s (%s)\", \"organization\" /* TODO: Use org name instead */, oid.value))","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" .orElse(null)","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().removeAll(status, position);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().removeAll(status, position, linkedParentOrganization);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().stream()","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" * Configures the inner label contained within the vbox container to show the given string, or remove the label","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" * entirely if the string is empty or null.","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" * @param label The label to set the text to.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" * @param valueSupplier The string value supplier. This may be expressed as a lambda function.","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" private void setVboxInnerLabelText(Label label, Supplier\u003cString\u003e valueSupplier) {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" if (label \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" String value \u003d valueSupplier.get();","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" if (value \u003d\u003d null || value.isBlank()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" label.setText(null);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().remove(label);","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" label.setText(value);","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":29,"CJ-Lee01":9,"wxwern":67,"-":42}},{"path":"src/main/java/seedu/address/ui/ContactListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * Panel containing the list of contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FXML \u003d \"ContactListPanel.fxml\";","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ContactListPanel.class);","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" private ListView\u003cContact\u003e contactListView;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a {@code ContactListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public ContactListPanel(ObservableList\u003cContact\u003e contactList) {","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" contactListView.setItems(contactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" contactListView.setCellFactory(listView -\u003e new ContactListViewCell());","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Contact} using a {@code ContactCard}.","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" class ContactListViewCell extends ListCell\u003cContact\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" protected void updateItem(Contact contact, boolean empty) {","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" super.updateItem(contact, empty);","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" if (empty || contact \u003d\u003d null) {","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" setGraphic(new ContactCard(contact, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":15,"-":33}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" public static final String USERGUIDE_URL \u003d \"https://AY2324S1-CS2103T-W08-3.github.io/tp/UserGuide\"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" + \".html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"wxwern":2,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" private ContactListPanel contactListPanel;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" private StackPane contactListPanelPlaceholder;","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" contactListPanel \u003d new ContactListPanel(logic.getFilteredContactList());","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" contactListPanelPlaceholder.getChildren().add(contactListPanel.getRoot());","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"CJ-Lee01"},"content":" public ContactListPanel getContactListPanel() {","lastModifiedDate":"2023-10-07"},{"lineNumber":167,"author":{"gitId":"CJ-Lee01"},"content":" return contactListPanel;","lastModifiedDate":"2023-10-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":5,"-":190}},{"path":"src/main/resources/view/ContactListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" \u003cVBox fx:id\u003d\"cardPaneInnerVbox\" alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"linkedParentOrganization\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$linkedOrganization\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"url\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$url\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"position\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$position\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":8,"-":33}},{"path":"src/main/resources/view/ContactListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" \u003cListView fx:id\u003d\"contactListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":".label#id {","lastModifiedDate":"2023-10-17"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" -fx-text-fill: #d0d0d088;","lastModifiedDate":"2023-10-17"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" -fx-font-size: 10px;","lastModifiedDate":"2023-10-17"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-17"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":360,"author":{"gitId":"wxwern"},"content":"#tags .label#type {","lastModifiedDate":"2023-10-17"},{"lineNumber":361,"author":{"gitId":"wxwern"},"content":" -fx-background-color: #3f917e;","lastModifiedDate":"2023-10-17"},{"lineNumber":362,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"McNaBry":1,"wxwern":10,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" title\u003d\"Jobby\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" minHeight\u003d\"150\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" \u003cVBox fx:id\u003d\"contactList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \u003cStackPane fx:id\u003d\"contactListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":1,"wxwern":1,"-":56}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" wrapText\u003d\"true\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"McNaBry":1,"-":8}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" final Index fifthContactIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(fifthContactIndex));","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(null));","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(5.0f));","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"McNaBry":7,"-":60}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.URL_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.AMY;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"jobby.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, model);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" public void getFilteredContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredContactList().remove(0));","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + ID_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + URL_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" expectedModel.addContact(expectedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":11,"wxwern":3,"wamps-jp":1,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" public void execute_newContact_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" expectedModel.addContact(validContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandSuccess(new AddCommand(validContact), model,","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validContact)),","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContact_throwsCommandException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactInList \u003d model.getAddressBook().getContactList().get(0);","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(new AddCommand(contactInList), model,","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" AddCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"McNaBry":8,"CJ-Lee01":4,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void constructor_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public void execute_contactAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" ModelStubAcceptingContactAdded modelStub \u003d new ModelStubAcceptingContactAdded();","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" CommandResult commandResult \u003d new AddCommand(validContact).execute(modelStub);","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validContact)),","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" assertEquals(Arrays.asList(validContact), modelStub.contactsAdded);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicatecontact_throwsCommandException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" AddCommand addCommand \u003d new AddCommand(validContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" ModelStub modelStub \u003d new ModelStubWithContact(validContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_CONTACT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" Contact alice \u003d new ContactBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" Contact bob \u003d new ContactBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" public void deleteContact(Contact target) {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" public void updateFilteredContactList(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"CJ-Lee01"},"content":" * A Model stub that contains a single contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" private class ModelStubWithContact extends ModelStub {","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"CJ-Lee01"},"content":" private final Contact contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" ModelStubWithContact(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":175,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":176,"author":{"gitId":"CJ-Lee01"},"content":" this.contact \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":181,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" return this.contact.isSameContact(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"CJ-Lee01"},"content":" * A Model stub that always accept the contact being added.","lastModifiedDate":"2023-10-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" private class ModelStubAcceptingContactAdded extends ModelStub {","lastModifiedDate":"2023-10-07"},{"lineNumber":190,"author":{"gitId":"McNaBry"},"content":" final ArrayList\u003cContact\u003e contactsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":195,"author":{"gitId":"McNaBry"},"content":" return contactsAdded.stream().anyMatch(contact::isSameContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":200,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":201,"author":{"gitId":"McNaBry"},"content":" contactsAdded.add(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"McNaBry":31,"CJ-Lee01":13,"-":166}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"McNaBry":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_ID_AMY \u003d \"3a6e0af8-5092-47c0-baf7-18d6dc535823\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_ID_BOB \u003d \"18dfa74c-2229-4f4f-99a5-336c25e6783e\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" public static final String VALID_URL_AMY \u003d \"amy.example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" public static final String VALID_URL_BOB \u003d \"https://bob.example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + FLAG_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + FLAG_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" public static final String ID_DESC_AMY \u003d \" \" + FLAG_ID + \" \" + VALID_ID_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public static final String ID_DESC_BOB \u003d \" \" + FLAG_ID + \" \" + VALID_ID_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + FLAG_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + FLAG_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + FLAG_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + FLAG_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + FLAG_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + FLAG_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" public static final String URL_DESC_AMY \u003d \" \" + FLAG_URL + \" \" + VALID_URL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" public static final String URL_DESC_BOB \u003d \" \" + FLAG_URL + \" \" + VALID_URL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + FLAG_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + FLAG_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + FLAG_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_ID_DESC \u003d \" \" + FLAG_ID + \" \" + \"e91724\u0026_18273\"; // \u0027\u0026\u0027 not allowed in ids","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + FLAG_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + FLAG_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + FLAG_ADDRESS + \" \"; // address cannot be empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_URL_DESC \u003d \" \" + FLAG_URL + \" \" + \"asdfjkl\";","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + FLAG_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" public static final EditCommand.EditContactDescriptor DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" public static final EditCommand.EditContactDescriptor DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" DESC_AMY \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" DESC_BOB \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" * - the address book, filtered contact list and selected contact in {@code actualModel} remain unchanged","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" List\u003cContact\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" * Updates {@code model}\u0027s filtered list to show only the contact at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" public static void showContactAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d model.getFilteredContactList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-06"},{"lineNumber":135,"author":{"gitId":"CJ-Lee01"},"content":" final String[] splitName \u003d contact.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-05"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" assertEquals(1, model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"McNaBry":16,"CJ-Lee01":5,"wxwern":30,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" Contact contactToDelete \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete));","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" expectedModel.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredContactList().size() + 1);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" Contact contactToDelete \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete));","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" expectedModel.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" showNoContact(expectedModel);","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" private void showNoContact(Model model) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(p -\u003e false);","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" assertTrue(model.getFilteredContactList().isEmpty());","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"McNaBry":26,"CJ-Lee01":4,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(editedContact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" .format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS, Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(model.getFilteredContactList().get(0), editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" Index indexLastContact \u003d Index.fromOneBased(model.getFilteredContactList().size());","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" Contact lastContact \u003d model.getFilteredContactList().get(indexLastContact.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" ContactBuilder contactInList \u003d new ContactBuilder(lastContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d contactInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastContact, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(lastContact, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, new EditContactDescriptor());","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" Contact contactInFilteredList \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d new ContactBuilder(contactInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(model.getFilteredContactList().get(0), editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContactUnfilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Contact firstContact \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(firstContact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_CONTACT, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContactFilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" // edit contact in filtered list into a duplicate in address book","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" Contact contactInList \u003d model.getAddressBook().getContactList().get(INDEX_SECOND_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder(contactInList).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" public void execute_invalidContactIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredContactList().size() + 1);","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" public void execute_invalidContactIndexFilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, DESC_AMY);","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor copyDescriptor \u003d new EditContactDescriptor(DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_CONTACT, copyDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_CONTACT, DESC_AMY)));","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_CONTACT, DESC_BOB)));","lastModifiedDate":"2023-10-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(index, editContactDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":183,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editContactDescriptor\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor + \"}\";","lastModifiedDate":"2023-10-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"McNaBry":51,"CJ-Lee01":15,"-":122}},{"path":"src/test/java/seedu/address/logic/commands/EditContactDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"public class EditContactDescriptorTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor descriptorWithSameValues \u003d new EditContactDescriptor(DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d EditContactDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, editContactDescriptor.toString());","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"McNaBry":13,"CJ-Lee01":4,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONTACTS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.CARL;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ELLE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.FIONA;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public void execute_zeroKeywords_noContactFound() {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(MESSAGE_CONTACTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" expectedModel.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" assertEquals(Collections.emptyList(), model.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" public void execute_multipleKeywords_multipleContactsFound() {","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(MESSAGE_CONTACTS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" expectedModel.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":14,"CJ-Lee01":1,"-":76}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(new ListCommand(PREDICATE_SHOW_ALL_CONTACTS), model,","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(new ListCommand(PREDICATE_SHOW_ALL_CONTACTS),","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wamps-jp"},"content":" model, ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"wamps-jp"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":" ListCommand showAllListCommand \u003d new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":" ListCommand organizationListCommand \u003d new ListCommand(PREDICATE_SHOW_ONLY_ORGANIZATIONS);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":" ListCommand recruiterListCommand \u003d new ListCommand(PREDICATE_SHOW_ONLY_RECRUITERS);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"wamps-jp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"wamps-jp"},"content":" assertTrue(showAllListCommand.equals(showAllListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"wamps-jp"},"content":" assertTrue(organizationListCommand.equals(organizationListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"wamps-jp"},"content":" assertTrue(recruiterListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"wamps-jp"},"content":" // same predicate -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"wamps-jp"},"content":" ListCommand showAllListCommandCopy \u003d new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"wamps-jp"},"content":" assertTrue(showAllListCommand.equals(showAllListCommandCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"wamps-jp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"wamps-jp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"wamps-jp"},"content":" // different predicate -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(organizationListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"wamps-jp"},"content":" assertFalse(organizationListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":4,"wamps-jp":35,"-":34}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_URL_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.URL_DESC_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.AMY;","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" + ADDRESS_DESC_BOB + URL_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedContact));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" Contact expectedContactMultipleTags \u003d new ContactBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" + URL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" new AddCommand(expectedContactMultipleTags));","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" String validExpectedContactString \u003d NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" // multiple ids","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, ID_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ID));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" validExpectedContactString + ID_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + ADDRESS_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME, FLAG_ID, FLAG_ADDRESS, FLAG_EMAIL, FLAG_PHONE));","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" // invalid id","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_ID_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ID));","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" // zero tags, no url","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(AMY).withUrl(null).withTags().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" assertParseSuccess(","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" NAME_DESC_AMY + ID_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" new AddCommand(expectedContact)","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" // missing name flag","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, VALID_NAME_BOB, expectedMessage);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" // invalid id","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_ID_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" // invalid url","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" + INVALID_URL_DESC, Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"McNaBry"},"content":" + INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"McNaBry":53,"CJ-Lee01":1,"wxwern":33,"-":118}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactUtil;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(ContactUtil.getAddCommand(contact));","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(new AddCommand(contact), command);","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_CONTACT.getOneBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_CONTACT), command);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(contact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" + INDEX_FIRST_CONTACT.getOneBased() + \" \" + ContactUtil.getEditContactDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" assertEquals(new EditCommand(INDEX_FIRST_CONTACT, descriptor), command);","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"McNaBry":14,"CJ-Lee01":2,"-":85}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentMultimapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"public class ArgumentMultimapTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_A \u003d new Flag(\"aaa\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_B \u003d new Flag(\"bbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_C \u003d new Flag(\"ccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_D \u003d new Flag(\"ddd\");","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" public void hasFlag_existingFlagsSet_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" // Will return true if value is set","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" // Adding more inputs don\u0027t impact the result","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"blah\");","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" zzzzz \");","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" test\");","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"contact \");","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public void hasFlag_missingFlag_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" // Empty map trivially doesn\u0027t have the value","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" // Nonempty map but target value not present","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbbbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" // Subsequent additions without adding target value will not change result","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"ccccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public void hasAllOfFlags_completeMatch_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"aaa\");","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"ccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags()); // Trivially, any map will contain every element in an empty list [].","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_C, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags()); // Similar to above, it has all elements in [].","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public void hasAllOfFlags_partialOrNoMatch_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A\");","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" public void hasAnyOfFlags_partialOrCompleteMatch_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"123\");","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"456\");","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"789\");","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" // - An empty map will never have a partial or complete match.","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" public void hasAnyOfFlags_noMatch_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"000\");","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags()); // Trivially, any map will not contain any elements from empty list [].","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags()); // Similar to above, it will not have any elements in [].","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_C, FLAG_B, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" public void hasNonEmptyValue_nonEmpty_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"AAA\");","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"CC1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"CC2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasNonEmptyValue(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasNonEmptyValue(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" public void hasNonEmptyValue_noFlagOrEmpty_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"AAA\");","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" public void getValue_notPresent_emptyOptionalReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" // Empty map trivially doesn\u0027t have the value","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" // Nonempty map but target value not present","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"some data\");","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" // Subsequent additions without adding target value will not change result","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"some more data\");","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" public void getValue_existingValuesSet_lastValueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" // Will return a value if that is set","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" assertEquals(\"a value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" // More than one inputs cause it to return the last one.","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2nd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3rd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" assertEquals(\"3rd value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags and whitespace checks","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\\t testing A \");","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 123 \\n\");","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 456\\r\\n \");","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \" CC \");","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_C).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" assertEquals(\"testing A\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" assertEquals(\"testing B 456\", multimap.getValue(FLAG_B).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" assertEquals(\"CC\", multimap.getValue(FLAG_C).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" A2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B2 value \");","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" \"); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"wxwern"},"content":" assertEquals(\"A2 value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getValue(FLAG_B).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"wxwern"},"content":" public void getAllValues_existingValuesSet_allValuesReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"wxwern"},"content":" // Will return a value if that is set","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"a value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":248,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":249,"author":{"gitId":"wxwern"},"content":" // More than one inputs cause it to return the last one.","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2nd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3rd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"a value\", \"2nd value\", \"3rd value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags and whitespace checks","lastModifiedDate":"2023-10-18"},{"lineNumber":255,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\\t testing A \");","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 123 \\n\");","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 456\\r\\n \");","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \" CC \");","lastModifiedDate":"2023-10-18"},{"lineNumber":260,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":261,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"testing A\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"testing B 123\", \"testing B 456\"), multimap.getAllValues(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"CC\"), multimap.getAllValues(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":264,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" A2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B2 value \");","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" \"); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":271,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":273,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"A1 value\", \"A2 value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"B1 value\", \"B2 value\", \"\"), multimap.getAllValues(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":275,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":276,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":278,"author":{"gitId":"wxwern"},"content":" public void getPreamble_noPreambleSet_returnsEmptyString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":279,"author":{"gitId":"wxwern"},"content":" // Empty map has no preamble.","lastModifiedDate":"2023-10-18"},{"lineNumber":280,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":" // Setting a preamble, then removing it, will remove the preamble.","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"testing\");","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"wxwern"},"content":" // Similarly for setting to an empty string. Whitespace is trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":" public void getPreamble_preambleSet_returnsPreamble() {","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":" // Setting a preamble will give you that one.","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"preamble val\");","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"wxwern"},"content":" assertEquals(\"preamble val\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"wxwern"},"content":" // Setting a new preamble will replace the old one.","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"preamble val 2.0\");","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"wxwern"},"content":" assertEquals(\"preamble val 2.0\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"wxwern"},"content":" // Removing the reamble, then setting it again, will have the new one.","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"who\u0027s this\");","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"wxwern"},"content":" assertEquals(\"who\u0027s this\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":319,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":320,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor_noDuplicates_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":321,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":322,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"wxwern"},"content":" // If we don\u0027t check C, it doesn\u0027t matter","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor_hasDuplicates_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"wxwern"},"content":" // If we do check C, we must throw an exception","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf_noExtras_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":351,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_B)); // exact match is ok","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_B, FLAG_C)); // superset is ok","lastModifiedDate":"2023-10-18"},{"lineNumber":356,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":357,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":358,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":359,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf_hasExtras_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":360,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":361,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":362,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":363,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":364,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":365,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A)); // extra B","lastModifiedDate":"2023-10-18"},{"lineNumber":366,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_B)); // extra A","lastModifiedDate":"2023-10-18"},{"lineNumber":367,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_C)); // extra A, B","lastModifiedDate":"2023-10-18"},{"lineNumber":368,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_C)); // extra B","lastModifiedDate":"2023-10-18"},{"lineNumber":369,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_B, FLAG_C)); // extra A","lastModifiedDate":"2023-10-18"},{"lineNumber":370,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":371,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":372,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":373,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":374,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor_allEmpty_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":375,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":376,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":377,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":378,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":379,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":380,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":381,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":382,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":383,"author":{"gitId":"wxwern"},"content":" // A, C, D are empty","lastModifiedDate":"2023-10-18"},{"lineNumber":384,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":385,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":386,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":387,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":388,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":389,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":390,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C, FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":391,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":392,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":393,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":394,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor_someNonEmpty_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":395,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":396,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":397,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A\");","lastModifiedDate":"2023-10-18"},{"lineNumber":398,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":399,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":400,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":401,"author":{"gitId":"wxwern"},"content":" // A and B aren\u0027t empty","lastModifiedDate":"2023-10-18"},{"lineNumber":402,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":403,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":404,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":405,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":406,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D, FLAG_C, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":407,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_C, FLAG_B, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":408,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":409,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":410,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":411,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"wxwern":411}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault1 \u003d new Flag(\"abc\");","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault2 \u003d new Flag(\"def\");","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault3 \u003d new Flag(\"ghi\");","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagNonDefault \u003d new Flag(\"u\", \"**\", null);","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private final Flag defaultFlag \u003d new Flag(\"flag\");","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" private final Flag pSlash \u003d new Flag(\"p\", null, \"/\");","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private final Flag dashT \u003d new Flag(\"t\", \"-\", null);","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private final Flag hatQ \u003d new Flag(\"Q\", \"^\", null);","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code flag} match the {@code expectedValues}","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Flag flag, String... expectedValues) {","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(flag).get());","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(flag).size());","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(flag).get(i));","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Flag flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" assertFalse(argMultimap.getValue(flag).isPresent());","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" public void tokenize_noFlags_allTakenAsPreamble() {","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/ pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q 111 -t dashT-Value p/ pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" // Any flags not surrounded by spaces must not be present, and if surrounded must be.","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined\"","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" + \" -t \" + \"not joined^Qjoined\"","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" + \" ^Q \" + \"p/prefixed postfixed-t\";","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, hatQ, \"p/prefixed postfixed-t\");","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" public void tokenize_flagsNotExplicitlyGiven_defaultSyntaxFlagsAreAutoTokenized() {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" /* Covers: Standard syntax flags (--flag) */","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" // Flags matching the standard syntax should be auto-tokenized.","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" String argsString \u003d unknownFlagMatchingDefault1 + \" some value 0\";","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault1, \"some value 0\");","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagMatchingDefault2 + \" some value blah\";","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault2, \"some value blah\");","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagMatchingDefault3 + \" yet another value\";","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault3, \"yet another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" // Other flags being specified or not will have no influence on","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" // whether the standard-syntax-flag is correctly tokenized.","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" argsString \u003d defaultFlag + \" another value\";","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ, defaultFlag); // All provided.","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ); // Omitted the target default.","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString); // Not specified at all.","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" /* Covers: Non-standard syntax flags */","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" // Non-standard flags not given to the tokenizer should not return any values","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagNonDefault + \" some value 1\";","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" assertArgumentAbsent(argMultimap, unknownFlagNonDefault);","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown flag is taken as part of preamble","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" // Also works if some flags already given but the non-standard flag is not one of them.","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" assertArgumentAbsent(argMultimap, unknownFlagNonDefault);","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown flag is taken as part of preamble","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" Flag aaa \u003d new Flag(\"aaa\", \"-\", \"\");","lastModifiedDate":"2023-10-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" assertEquals(aaa, new Flag(\"aaa\", \"-\", null));","lastModifiedDate":"2023-10-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, \"-aaa\");","lastModifiedDate":"2023-10-07"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, new Flag(\"aab\", \"-\", null));","lastModifiedDate":"2023-10-07"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, new Flag(\"aaa\", null, \"/\"));","lastModifiedDate":"2023-10-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"wxwern":71,"-":126}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_CONTACT));","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"McNaBry":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" private static final String TAG_EMPTY \u003d \" \" + FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" // invalid flag being parsed as preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Contact} being edited,","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withTags().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"McNaBry":21,"CJ-Lee01":2,"wxwern":10,"-":175}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"McNaBry":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":" public void parse_validArgs_returnsListCommand() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" assertParseSuccess(parser, \"\", new ListCommand(PREDICATE_SHOW_ALL_CONTACTS));","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"wamps-jp":18}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertEquals(INDEX_FIRST_CONTACT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" assertEquals(INDEX_FIRST_CONTACT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"McNaBry":7,"-":189}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(Collections.emptyList(), addressBook.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public void resetData_withDuplicateContacts_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" // Two contacts with the same identity fields","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e newContacts \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" AddressBookStub newData \u003d new AddressBookStub(newContacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public void hasContact_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasContact(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactNotInAddressBook_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" assertFalse(addressBook.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(addressBook.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(addressBook.hasContact(editedAlice));","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" public void getContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getContactList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{contacts\u003d\" + addressBook.getContactList() + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" * A stub ReadOnlyAddressBook whose contacts list can violate interface constraints.","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e contacts \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" AddressBookStub(Collection\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" this.contacts.setAll(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e getContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" return contacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"McNaBry":13,"CJ-Lee01":18,"-":77}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BENSON;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" public void hasContact_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasContact(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" public void hasContact_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" assertFalse(modelManager.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" modelManager.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" assertTrue(modelManager.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void getFilteredContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredContactList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withContact(ALICE).withContact(BENSON).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" modelManager.updateFilteredContactList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" modelManager.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"McNaBry":16,"-":116}},{"path":"src/test/java/seedu/address/model/contact/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":55}},{"path":"src/test/java/seedu/address/model/contact/ContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e contact.getTags().remove(0));","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" public void isSameContact() {","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(null));","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Contact editedBob \u003d new ContactBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" editedBob \u003d new ContactBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" Contact aliceCopy \u003d new ContactBuilder(ALICE).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" String expected \u003d Contact.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" + \", type\u003d\" + ALICE.getType()","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" + \", id\u003d\" + ALICE.getId()","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" + \", url\u003d\" + ALICE.getUrl()","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"McNaBry":30,"CJ-Lee01":3,"wxwern":1,"-":72}},{"path":"src/test/java/seedu/address/model/contact/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":87}},{"path":"src/test/java/seedu/address/model/contact/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":1,"-":75}},{"path":"src/test/java/seedu/address/model/contact/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":59}},{"path":"src/test/java/seedu/address/model/contact/OrganizationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"public class OrganizationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e contact.getTags().remove(0));","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" public void isSameContact() {","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" assertTrue(ALICE.isSameContact(ALICE));","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.isSameContact(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" assertTrue(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" Contact editedBob \u003d new ContactBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" editedBob \u003d new ContactBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" Contact aliceCopy \u003d new ContactBuilder(ALICE).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" // different address -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" String expected \u003d Contact.class.getCanonicalName()","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" + \", type\u003d\" + ALICE.getType()","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" + \", id\u003d\" + ALICE.getId()","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" + \", url\u003d\" + ALICE.getUrl()","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":1,"tanshiyu1999":105}},{"path":"src/test/java/seedu/address/model/contact/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":59}},{"path":"src/test/java/seedu/address/model/contact/RecruiterTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.RecruiterBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"class RecruiterTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d new RecruiterBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e recruiter.getTags().remove(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" public void isSameRecruiter() {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(ALICE));","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Contact editedBob \u003d new ContactBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" editedBob \u003d new ContactBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" Contact aliceCopy \u003d new ContactBuilder(ALICE).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" // different address -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" String expected \u003d Contact.class.getCanonicalName()","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" + \", type\u003d\" + ALICE.getType()","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" + \", id\u003d\" + ALICE.getId()","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" + \", url\u003d\" + ALICE.getUrl()","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":106}},{"path":"src/test/java/seedu/address/model/contact/UniqueContactListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"public class UniqueContactListTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private final UniqueContactList uniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public void contains_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.contains(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void contains_contactNotInList_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" assertFalse(uniqueContactList.contains(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public void contains_contactInList_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(uniqueContactList.contains(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" public void contains_contactWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(uniqueContactList.contains(editedAlice));","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public void add_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.add(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public void add_duplicateContact_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.add(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" public void setContact_nullTargetContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContact(null, ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" public void setContact_nullEditedContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContact(ALICE, null));","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" public void setContact_targetContactNotInList_throwsContactNotFoundException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueContactList.setContact(ALICE, ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactIsSameContact_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, ALICE);","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasSameIdentity_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, editedAlice);","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(editedAlice);","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, BOB);","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasNonUniqueIdentity_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.setContact(ALICE, BOB));","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" public void remove_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.remove(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" public void remove_contactDoesNotExist_throwsContactNotFoundException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueContactList.remove(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" public void remove_existingContact_removesContact() {","lastModifiedDate":"2023-10-07"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.remove(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" public void setContacts_nullUniqueContactList_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContacts((UniqueContactList) null));","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" public void setContacts_uniqueContactList_replacesOwnListWithProvidedUniqueContactList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContacts(expectedUniqueContactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" public void setContacts_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContacts((List\u003cContact\u003e) null));","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" public void setContacts_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":152,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e contactList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2023-10-05"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContacts(contactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":155,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":156,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" public void setContacts_listWithDuplicateContacts_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e listWithDuplicateContacts \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.setContacts(listWithDuplicateContacts));","lastModifiedDate":"2023-10-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"CJ-Lee01"},"content":" -\u003e uniqueContactList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(uniqueContactList.asUnmodifiableObservableList().toString(), uniqueContactList.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"McNaBry":41,"CJ-Lee01":43,"-":91}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.storage.JsonAdaptedContact.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BENSON;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.TypicalContacts.JESUS;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"public class JsonAdaptedContactTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" private static final String INVALID_TYPE \u003d \"asdf\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_ID \u003d \"_12@-abc\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_URL \u003d \" \";","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" private static final String INVALID_STATUS \u003d \"C@O\";","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_OID \u003d \"_12@-abc\";","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" private static final String VALID_TYPE_ORG \u003d \"organization\";","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_STATUS \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" private static final String VALID_POSITION \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" private static final String VALID_ID \u003d \"78a36caf-6d42-4fd2-a017-7f6a92fa3155\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_URL \u003d BENSON.getUrl().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_OID \u003d \"78a36caf-6d42-4fd2-a017-7f6a92fa3155\";","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" private static final List\u003cJsonAdaptedId\u003e VALID_RIDS \u003d JESUS.getRecruiterIds().stream()","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" .map(JsonAdaptedId::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" public void toModelType_validContactDetails_returnsContact() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(BENSON);","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, INVALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, null, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" INVALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullPhone_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" null, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, INVALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullEmail_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, null, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, INVALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullAddress_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, null, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" VALID_OID, invalidTags);","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":41,"CJ-Lee01":3,"wxwern":11,"tanshiyu1999":11,"-":73}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.HOON;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.IDA;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" public void readAddressBook_invalidContactAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" public void readAddressBook_invalidAndValidContactAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" original.addContact(HOON);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" original.removeContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" original.addContact(IDA);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":3,"-":101}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.TypicalContacts;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void toModelType_typicalContactsFile_success() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" AddressBook typicalContactssAddressBook \u003d TypicalContacts.getTypicalAddressBook();","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" assertEquals(addressBookFromFile, typicalContactssAddressBook);","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public void toModelType_invalidContactFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public void toModelType_duplicateContacts_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":1,"-":40}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"jobby.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"wxwern":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withContact(\"John\", \"Doe\").build();}","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a new {@code Contact} to the {@code AddressBook} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public AddressBookBuilder withContact(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":2,"-":29}},{"path":"src/test/java/seedu/address/testutil/ContactBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class to help with building Contact objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"public class ContactBuilder {","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_ID \u003d \"test_1-123\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_URL \u003d \"www.google.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" private Url url;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" * Creates a {@code ContactBuilder} with the default details.","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder() {","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" id \u003d new Id(DEFAULT_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" url \u003d new Url(DEFAULT_URL);","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" * Initializes the ContactBuilder with the data of {@code contactToCopy}.","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder(Contact contactToCopy) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" name \u003d contactToCopy.getName();","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" id \u003d contactToCopy.getId();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" phone \u003d contactToCopy.getPhone().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" email \u003d contactToCopy.getEmail().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" url \u003d contactToCopy.getUrl().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" address \u003d contactToCopy.getAddress().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" tags \u003d new HashSet\u003c\u003e(contactToCopy.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Name} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withName(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Id} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withId(String id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" this.id \u003d new Id(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Url} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withUrl(String url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url \u003d\u003d null ? null : new Url(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Address} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withAddress(String address) {","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" this.address \u003d address \u003d\u003d null ? null : new Address(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Phone} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" this.phone \u003d phone \u003d\u003d null ? null : new Phone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Email} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withEmail(String email) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" this.email \u003d email \u003d\u003d null ? null : new Email(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" public Contact build() {","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" return new Contact(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"McNaBry":48,"CJ-Lee01":9,"tanshiyu1999":3,"-":64}},{"path":"src/test/java/seedu/address/testutil/ContactUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class for Contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"public class ContactUtil {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an add command string for adding the {@code contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public static String getAddCommand(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" return AddCommand.COMMAND_WORD + \" \" + getContactDetails(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the part of command string for the given {@code contact}\u0027s details.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static String getContactDetails(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_NAME + \" \" + contact.getName().fullName + \" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_ID + \" \" + contact.getId().value + \" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_PHONE + \" \" + contact.getPhone().map(phone -\u003e phone.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_EMAIL + \" \" + contact.getEmail().map(email -\u003e email.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_ADDRESS + \" \" + contact.getAddress().map(address -\u003e address.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_URL + \" \" + contact.getUrl().map(url -\u003e url.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().stream().forEach(","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" s -\u003e sb.append(FLAG_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" * Returns the part of command string for the given {@code EditContactDescriptor}\u0027s details.","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public static String getEditContactDescriptorDetails(EditContactDescriptor descriptor) {","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(FLAG_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" descriptor.getId().ifPresent(id -\u003e sb.append(FLAG_ID).append(\" \").append(id.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(FLAG_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(FLAG_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" descriptor.getAddress().ifPresent(address -\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_ADDRESS).append(\" \").append(address.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_TAG);","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" tags.forEach(s -\u003e sb.append(FLAG_TAG).append(\" \").append(s.tagName).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"McNaBry":11,"CJ-Lee01":6,"wxwern":17,"-":34}},{"path":"src/test/java/seedu/address/testutil/EditContactDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building EditContactDescriptor objects.","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class EditContactDescriptorBuilder {","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" private EditContactDescriptor descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder() {","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" descriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder(EditContactDescriptor descriptor) {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" this.descriptor \u003d new EditContactDescriptor(descriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Returns an {@code EditContactDescriptor} with fields containing {@code contact}\u0027s details","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" descriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" descriptor.setName(contact.getName());","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" descriptor.setPhone(contact.getPhone().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" descriptor.setEmail(contact.getEmail().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" descriptor.setAddress(contact.getAddress().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" descriptor.setTags(contact.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Name} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Phone} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Email} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Address} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditContactDescriptor}","lastModifiedDate":"2023-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"McNaBry":24,"CJ-Lee01":8,"-":55}},{"path":"src/test/java/seedu/address/testutil/OrganizationBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building Organization objects.","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"public class OrganizationBuilder extends ContactBuilder {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public static final String DEFAULT_STATUS \u003d \"Applied\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public static final String DEFAULT_POSITION \u003d \"Manager\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" private Position position;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" private Set\u003cId\u003e rids;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" private Status status;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Creates a {@code OrganizationBuilder} with the default details.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" super();","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" position \u003d new Position(DEFAULT_POSITION);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" rids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" * Initializes the OrganizationBuilder with the data of {@code organizationToCopy}.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder(Organization organizationToCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" super(organizationToCopy);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withId(String id) {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withId(id);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withAddress(String address) {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withAddress(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withEmail(String email) {","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withEmail(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withName(String name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withName(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withPhone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withTags(String... tags) {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withTags(tags);","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withUrl(String url) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withUrl(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Contact} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withRids(String ... rids) {","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" this.rids \u003d SampleDataUtil.getIdSet(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" * Sets the {@code Status} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withStatus(String status) {","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" this.status \u003d new Status(status);","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" * Sets the {@code Status} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withPosition(String position) {","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" this.status \u003d new Status(position);","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" public Organization build() {","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":" Contact contact \u003d super.build();","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" return new Organization(","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" contact.getName(),","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" contact.getId(),","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" contact.getPhone().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" contact.getEmail().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" contact.getUrl().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" contact.getAddress().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"tanshiyu1999"},"content":" contact.getTags(),","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"tanshiyu1999"},"content":" status,","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"tanshiyu1999"},"content":" position,","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":" rids","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"tanshiyu1999"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":8,"wxwern":4,"tanshiyu1999":106}},{"path":"src/test/java/seedu/address/testutil/RecruiterBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building Recruiter objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class RecruiterBuilder extends ContactBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_OID \u003d \"111111\";","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private Id oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Creates a {@code RecruiterBuilder} with the default details.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" super();","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d new Id(DEFAULT_OID);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" * Initializes the RecruiterBuilder with the data of {@code recruiterToCopy}.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder(Recruiter recruiterToCopy) {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" super(recruiterToCopy);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" * Sets the organization {@code Id} of the {@code Recruiter} that we are building.","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withOid(String oid) {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d new Id(oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public Recruiter build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d super.build();","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" contact.getName(),","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" contact.getId(),","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" contact.getPhone().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" contact.getEmail().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" contact.getUrl().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" contact.getAddress().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" contact.getTags(),","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" oid","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":54}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the middle index of the contact in the {@code model}\u0027s contact list.","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return Index.fromOneBased(model.getFilteredContactList().size() / 2);","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the last index of the contact in the {@code model}\u0027s contact list.","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return Index.fromOneBased(model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the contact in the {@code model}\u0027s contact list at {@code index}.","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" public static Contact getContact(Model model, Index index) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return model.getFilteredContactList().get(index.getZeroBased());","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":3,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalContacts.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class containing a list of {@code Contact} objects to be used in tests.","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"public class TypicalContacts {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" public static final Contact ALICE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_1-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public static final Contact BENSON \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_2-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" .withUrl(\"www.google.com\")","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public static final Contact CARL \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" .withName(\"Carl Kurz\")","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_3-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" public static final Contact DANIEL \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" .withName(\"Daniel Meier\")","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_4-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"10th street\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" public static final Contact ELLE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" .withName(\"Elle Meyer\")","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_5-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public static final Contact FIONA \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" .withName(\"Fiona Kunz\")","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_6-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" public static final Contact GEORGE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" .withName(\"George Best\")","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_7-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" public static final Organization JESUS \u003d new OrganizationBuilder()","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" .withName(\"Jesus Christ\")","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" .withId(\"test_7-123\")","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" .withAddress(\"4th street\")","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" .withRids(\"cat\")","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" public static final Contact HOON \u003d new ContactBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" public static final Contact IDA \u003d new ContactBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" // Manually added - Contact\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" public static final Contact AMY \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" .withId(VALID_ID_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withUrl(VALID_URL_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" public static final Contact BOB \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" .withId(VALID_ID_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withUrl(VALID_URL_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" private TypicalContacts() {} // prevents instantiation","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" * Returns an {@code AddressBook} with all the typical contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" for (Contact contact : getTypicalContacts()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" ab.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" public static List\u003cContact\u003e getTypicalContacts() {","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"McNaBry":49,"CJ-Lee01":3,"wxwern":16,"tanshiyu1999":9,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_FIRST_CONTACT \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_SECOND_CONTACT \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_THIRD_CONTACT \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"McNaBry":3,"-":9}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"## Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W08-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop application that helps you manage your job applications by easily recording organization and recruiter contacts, plus note down information about your applications. It is optimized for CLI use, so you can operate the application with only your keyboard.","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"* The project simulates an ongoing software project for a desktop application used for managing contact details regarding organizations and recruiters and job application status info.","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * It is an extension built on top of **[Address Book Level 3 by se-education.org](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"* For detailed documentation of this project, see the **[Jobby Product Website](https://ay2324s1-cs2103t-w08-3.github.io/tp/)**.","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"wxwern":8,"-":5}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" archiveFileName \u003d \u0027jobby.jar\u0027","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wxwern":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"### Wern","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"\u003cimg src\u003d\"images/wxwern.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"[[homepage](https://wern.cc/)]","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"[[github](https://github.com/wxwern)]","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"[[portfolio](team/wxwern.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"* Role: Member","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"### Chun Jie","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"\u003cimg src\u003d\"images/cj-lee01.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":"[[github](https://github.com/CJ-Lee01)]","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"* Role: Member","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"### Bryan Lee","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"\u003cimg src\u003d\"images/mcnabry.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"[[github](http://github.com/mcnabry)]","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"[[portfolio](team/mcnabry.md)]","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"* Role: Member","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":"### Shi Yu","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":"\u003cimg src\u003d\"images/tanshiyu1999.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":"[[github](https://github.com/tanshiyu1999)] [[portfolio](team/tanshiyu1999.md)]","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"* Role: Member","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":"### Juanpa Abola","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":"\u003cimg src\u003d\"images/wamps-jp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":"[[github](https://github.com/wamps-jp)] [[portfolio](team/wamps-jp.md)]","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":"* Role: Member","lastModifiedDate":"2023-10-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":4,"CJ-Lee01":4,"wxwern":7,"tanshiyu1999":4,"wamps-jp":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a contact).","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":"How arguments from a raw command input may be obtained by parsers:","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":"* When arguments are needed for a command, `ArgumentTokenizer` is used to prepare and tokenize the raw input string, which can then convert it to an `ArgumentMultimap` for easy access.","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":"* An `ArgumentMultimap` represents the command data (which has the format `name preamble text --flag1 value 1 --flag2 value 2`) in their distinct fields: **preamble**, **flags** and their mapped **values**. Note that as a multimap, multiple values can be mapped to the same flag.","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":"* All parsers can use the `ArgumentMultimap` (obtained from using the raw input on `ArgumentTokenizer`) to access the required arguments to create and execute a `Command`.","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"CJ-Lee01"},"content":"Step 2. The user executes `delete 5` command to delete the 5th contact in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2023-10-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"CJ-Lee01"},"content":"Step 3. The user executes `add n/David …​` to add a new contact. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2023-10-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"CJ-Lee01"},"content":"Step 4. The user now decides that adding the contact was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2023-10-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"CJ-Lee01"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the contact being deleted).","lastModifiedDate":"2023-10-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":"* students looking to apply for jobs","lastModifiedDate":"2023-10-03"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":"* have a need to manage a significant number of organization and recruiter contacts and application statuses","lastModifiedDate":"2023-10-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":"* is reasonably comfortable and familiar with using CLI apps","lastModifiedDate":"2023-10-03"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":"**Value proposition**:","lastModifiedDate":"2023-10-03"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":"Allows for comprehensive tracking of job applications and the information of companies and recruiters the user may be interested in, and manage them faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-10-03"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":"| Priority | As a(n) ... | I want to ... | So that I can ... |","lastModifiedDate":"2023-10-03"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":"| -------- | ------------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------------- |","lastModifiedDate":"2023-10-03"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the app |","lastModifiedDate":"2023-10-03"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":"| `* * *` | user | add a new contact | keep track of organizations and recruiters I\u0027m interested in |","lastModifiedDate":"2023-10-03"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":"| `* * *` | user | delete contacts | remove organizations and recruiters that I no longer need |","lastModifiedDate":"2023-10-03"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":"| `* *` | user | edit my contacts | be up to date with changes in organization and recruiter details |","lastModifiedDate":"2023-10-03"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":"| `* *` | user | find contacts by saved details | locate a contact without going through the entire list |","lastModifiedDate":"2023-10-03"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":"| `* *` | user | filter organizations by job application status | get a summary of the statuses of what I\u0027ve applied to |","lastModifiedDate":"2023-10-03"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":"| `* *` | user | tag contacts | organize my contact list for more efficient access of different categories |","lastModifiedDate":"2023-10-03"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":"| `* *` | efficient user | type shorter arguments and known values with auto-completion | type my command even more quickly |","lastModifiedDate":"2023-10-03"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":"| `*` | user | import and export contacts | share my list of contacts with my peers |","lastModifiedDate":"2023-10-03"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":"(For all use cases below, the **System** is `Jobby` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-10-19"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2023-10-03"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":"1. User requests to list organizations","lastModifiedDate":"2023-10-03"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":"2. Jobby shows a list of organizations","lastModifiedDate":"2023-10-19"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":"3. User requests to delete a specific organization in the list","lastModifiedDate":"2023-10-03"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":"4. Jobby deletes the organization","lastModifiedDate":"2023-10-19"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" * 3a1. Jobby shows an error message.","lastModifiedDate":"2023-10-19"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"CJ-Lee01"},"content":"* 3b. The given ID does not match to any organization.","lastModifiedDate":"2023-10-20"},{"lineNumber":321,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":322,"author":{"gitId":"CJ-Lee01"},"content":" * 3b1. Jobby shows an error message.","lastModifiedDate":"2023-10-20"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-10-20"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":326,"author":{"gitId":"CJ-Lee01"},"content":"* 4a. The user has specified to delete recursively.","lastModifiedDate":"2023-10-20"},{"lineNumber":327,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":328,"author":{"gitId":"CJ-Lee01"},"content":" * 4a1. Jobby deletes all recruiter contacts associated with the recruiter (WIP)","lastModifiedDate":"2023-10-20"},{"lineNumber":329,"author":{"gitId":"CJ-Lee01"},"content":" ","lastModifiedDate":"2023-10-20"},{"lineNumber":330,"author":{"gitId":"CJ-Lee01"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":331,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":332,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":333,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":334,"author":{"gitId":"wamps-jp"},"content":"**Use case: List contacts**","lastModifiedDate":"2023-10-20"},{"lineNumber":335,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":336,"author":{"gitId":"wamps-jp"},"content":"**MSS**","lastModifiedDate":"2023-10-20"},{"lineNumber":337,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":338,"author":{"gitId":"wamps-jp"},"content":"1. User requests to list contacts","lastModifiedDate":"2023-10-20"},{"lineNumber":339,"author":{"gitId":"wamps-jp"},"content":"2. Jobby shows a list of contacts","lastModifiedDate":"2023-10-20"},{"lineNumber":340,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":341,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":342,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":343,"author":{"gitId":"wamps-jp"},"content":"**Extensions**","lastModifiedDate":"2023-10-20"},{"lineNumber":344,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":345,"author":{"gitId":"wamps-jp"},"content":"* 1a. User requests to list organizations.","lastModifiedDate":"2023-10-20"},{"lineNumber":346,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":347,"author":{"gitId":"wamps-jp"},"content":" * 1a1. Jobby shows a list of organizations.","lastModifiedDate":"2023-10-20"},{"lineNumber":348,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":349,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":350,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":351,"author":{"gitId":"wamps-jp"},"content":"* 1b. User requests to list recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":352,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":353,"author":{"gitId":"wamps-jp"},"content":" * 1b1. Jobby shows a list of recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"wamps-jp"},"content":" Use case ends.","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":358,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"CJ-Lee01"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2023-10-05"},{"lineNumber":364,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"wxwern"},"content":"4. A user with familiarity with common Unix/Linux shell command syntax should find the syntax of Jobby to match their habits and easy to pick up.","lastModifiedDate":"2023-10-19"},{"lineNumber":366,"author":{"gitId":"wxwern"},"content":"5. The command syntax should not conflict with something that a user could plausibly use as legitimate data input.","lastModifiedDate":"2023-10-03"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"wxwern"},"content":"* **Mainstream OS**: Windows, macOS, Linux, Unix","lastModifiedDate":"2023-10-03"},{"lineNumber":374,"author":{"gitId":"CJ-Lee01"},"content":"* **Commands**: A set of keywords that defines the operations the user wishes to execute.","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"CJ-Lee01"},"content":"* **Arguments**: A set of keywords that defines the type of data the user wishes to pass into the command line.","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"CJ-Lee01"},"content":"### Deleting a contact","lastModifiedDate":"2023-10-05"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"CJ-Lee01"},"content":"1. Deleting a contact while all contacts are being shown","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"CJ-Lee01"},"content":" 1. Prerequisites: List all contacts using the `list` command. Multiple contacts in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"CJ-Lee01"},"content":" Expected: No contact is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2023-10-05"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJ-Lee01":22,"wxwern":31,"wamps-jp":25,"-":350}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Documentation guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2020-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `Jobby` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2020-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**Diagrams:**","lastModifiedDate":"2020-06-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2020-06-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"wxwern":1,"-":28}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"**Jobby** is a **desktop app for managing job applications and contacts, optimized for use via a Command Line Interface (CLI)** while still having the benefits of a Graphical User Interface (GUI). Jobby can help you manage tracking your job applications and contacts in a more streamlined fashion. If you can type fast, Jobby can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"1. Download the latest `jobby.jar` from [here](https://github.com/AY2324S1-CS2103T-W08-3/tp/releases).","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Jobby Application.","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar jobby.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"1. Type a command in the command box and press Enter to execute it - e.g., typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" e.g. if the command format is `add --name NAME`, `NAME` is a parameter which can be used like `add --name John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":"* Terms prefixed with `--` are used to assign a value to some action or property, or to choose an option out of a few settings.","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" e.g. the `--name` field (which requires a `NAME` supplied after it) may configure the name of a contact, while a switch like `--recursive` (which doesn\u0027t accept values) may explicitly activate a recursive mode for an action.","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" e.g `--name NAME [--tag TAG]` can be used as `--name John Doe --tag friend` or as `--name John Doe`.","lastModifiedDate":"2023-10-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":"* Items in angled brackets describe what the content should be.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" e.g. `--date \u003cyyyymmdd formatted DATE\u003e` means the parameter `DATE`, which is supplied after the `--date` flag, should be formated as `yyyymmdd`.","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":"* Items with `...` after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2023-10-03"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" e.g. `[--tag TAG]...` can be used as ` ` (i.e. 0 times), `--tag friend`, `--tag friend --tag family` etc.","lastModifiedDate":"2023-10-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"* Items separated by `/` means that only one of them can be used per command.\u003cbr\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" e.g. `--org/--rec` means that either `--org` or `--rec` can be supplied as a flag but not both at the same time.","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" e.g. if the command specifies `--name NAME --phone PHONE_NUMBER`, `--phone PHONE_NUMBER --name NAME` is also acceptable.","lastModifiedDate":"2023-10-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"* Extraneous parameters and values for all commands will be ignored by default.\u003cbr\u003e","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" e.g. if `list` only accepts the `--org` or `--rec` options and no other value, supplying extras like `list 123 --other --org 456` will be interpreted as `list --org` (i.e., ignoring all other parameters).","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Viewing help: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":"### Adding a contact: `add`","lastModifiedDate":"2023-10-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":"Format: `add --org/--rec \u003cadditional parameters and values...\u003e`","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"Adds a contact to the address book of the given class type: Organization or Recruiter.","lastModifiedDate":"2023-10-03"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":"Supplying `--org` adds an Organization while supplying `--rec` adds a Recruiter to the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"Details specifically on organization and recruiter level are specified in the next sections.","lastModifiedDate":"2023-10-03"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":"#### Adding an organization contact: `add --org`","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":"_{Work in progress...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":"Format: `add --org --name NAME [--id ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--stat STATUS] [--pos POSITION] [--tag TAG]... `","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":"Acceptable Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":"* `NAME` can accept any value, but must not be blank.","lastModifiedDate":"2023-10-03"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":"* `ID` refers to a unique identifier which is used to uniquely identify the organization (alphanumeric and basic symbols, i.e. should only be `a-z`, `A-Z`, `0-9`, `-`, `_`).","lastModifiedDate":"2023-10-03"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" * Specifying this sets the ID, or one unique one will be derived and generated from the name if not provided.","lastModifiedDate":"2023-10-03"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":"* `NUMBER` should be a valid phone number.","lastModifiedDate":"2023-10-03"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":"* `EMAIL` should be a valid email.","lastModifiedDate":"2023-10-03"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":"* `URL` should be a valid url-like format.","lastModifiedDate":"2023-10-03"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":"* `ADDRESS` can accept any value. It designates the contact’s physical address.","lastModifiedDate":"2023-10-03"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":"* `STATUS` must be one of _interested, applied, pending, offered, rejected, current_ (case-insensitive, prefix-only match allowed).","lastModifiedDate":"2023-10-03"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":"* `POSITION` may be any value. It designates the position you intend to apply to.","lastModifiedDate":"2023-10-03"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":"* `TAG` can accept any value and may have multiple inputs.","lastModifiedDate":"2023-10-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name J\u0026J`","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Google --id g-sg --phone 98765432 `","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Hoyoverse --email mihoyo@example.com --tag example1 --tag example2`","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":"* `add --org --name Example --url www.organization.org --tag freelance`","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":"* `add --org --name Examinations NUS --phone 65166269 --email examinations@nus.edu.sg --url https://luminus.nus.edu.sg/ --stat pending`","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":"#### Adding a recruiter contact: `add --rec`","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":"_{Work in progress...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":"Format: `add --rec --name NAME [-id ID] [--oid ORG_ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--tag TAG]...`","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"Acceptable Parameters:","lastModifiedDate":"2023-10-03"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":"* `NAME` can accept any value, but must not be blank.","lastModifiedDate":"2023-10-03"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":"* `ID` refers to a unique identifier which is used to uniquely identify the recruiter (alphanumeric and basic symbols, i.e. should only be `a-z`, `A-Z`, `0-9`, `-`, `_`).","lastModifiedDate":"2023-10-03"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" * Specifying this sets the ID, or one unique one will be derived and generated from the name if not provided.","lastModifiedDate":"2023-10-03"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":"* `ORG_ID` refers to the unique identifier which is used to uniquely identify the organization the recruiter should be tied to. It is subject to the same validation as the ID field.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":"* `NUMBER` should be a valid phone number.","lastModifiedDate":"2023-10-03"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"* `EMAIL` should be a valid email.","lastModifiedDate":"2023-10-03"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":"* `ADDRESS` can accept any value. It designates the contact’s physical address.","lastModifiedDate":"2023-10-03"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":"* `TAG` can accept any value and may have multiple inputs.","lastModifiedDate":"2023-10-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"tanshiyu1999"},"content":"* `add --rec --name John Doe --oid paypal-sg`","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"### Listing all contacts: `list`","lastModifiedDate":"2023-10-03"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":155,"author":{"gitId":"wamps-jp"},"content":"Format: `list [--org/--rec]`","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"Shows a list of all contacts in the address book.","lastModifiedDate":"2023-10-03"},{"lineNumber":158,"author":{"gitId":"wamps-jp"},"content":"Supplying `--org` lists only Organizations while supplying `--rec` lists only Recruiters.","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"wamps-jp"},"content":"* `list`","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"wamps-jp"},"content":"* `list --org`","lastModifiedDate":"2023-10-20"},{"lineNumber":163,"author":{"gitId":"wamps-jp"},"content":"* `list --rec`","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"### Editing a contact: `edit`","lastModifiedDate":"2023-10-03"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2023-10-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"Current: Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2023-10-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":"### Deleting a contact: `delete`","lastModifiedDate":"2023-10-03"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":"_{To be updated...}_","lastModifiedDate":"2023-10-03"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":197,"author":{"gitId":"CJ-Lee01"},"content":"Deletes the specified contact from the address book and its associated contacts if specified.","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"CJ-Lee01"},"content":"Format: `delete INDEX [--recursive]` or `delete --id ID [--recursive]`","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"CJ-Lee01"},"content":"* `INDEX` refers to the index number shown on the list and must be a positive integer.","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"CJ-Lee01"},"content":"* Deletes the person with id `ID` if specified, ignoring if the contact is shown in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"CJ-Lee01"},"content":"* Deletes other contacts associated under the selected contact if `--recursive` is used, ignoring if the contact is shown in the list.","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"CJ-Lee01"},"content":"* `delete 1` deletes the 1st contact in the list of contacts shown.","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"CJ-Lee01"},"content":"* `delete --id 045f` deletes the contact with id `045f` in the address book.","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"CJ-Lee01"},"content":"* `delete 1 --recursive` deletes the 1st contact along with other contacts associated under it.","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":212,"author":{"gitId":"-"},"content":"### Clearing all entries: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":"Clears all data from the app.","lastModifiedDate":"2023-10-03"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":219,"author":{"gitId":"-"},"content":"### Exiting the program: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":226,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":"Jobby data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":"Jobby data are saved automatically as a JSON file `[JAR file location]/data/jobby.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-10-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":"If your changes to the data file makes its format invalid, Jobby will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-10-19"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Jobby home folder.","lastModifiedDate":"2023-10-19"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"tanshiyu1999"},"content":"**Add Organization** | `add --org --name \u003cNAME\u003e [--id ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--stat STATUS] [--pos POSITION] [--tag TAG]...`\u003cbr\u003e e.g., `add --org --name NUS --phone 0123456789 --email example@nus.edu.sg --url https://www.nus.edu.sg/ --stat pending --pos Research`","lastModifiedDate":"2023-10-19"},{"lineNumber":260,"author":{"gitId":"tanshiyu1999"},"content":"**Add Recruiter** | `add --rec --name \u003cNAME\u003e [--id ID] [--oid ORG_ID] [--phone NUMBER] [--email EMAIL] [--url URL] [--addr ADDRESS] [--tag TAG]...`\u003cbr\u003e e.g., `add --rec --name John Doe --oid paypal-sg`","lastModifiedDate":"2023-10-19"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"CJ-Lee01"},"content":"**Delete** | `delete INDEX [--recursive]` or \u003cbr\u003e `delete --id ID [--recursive]` \u003cbr\u003e e.g., `delete 3`, `delete --id 55tg`","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":"**Edit** | Coming soon...","lastModifiedDate":"2023-10-03"},{"lineNumber":264,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":8,"CJ-Lee01":9,"wxwern":91,"tanshiyu1999":9,"wamps-jp":5,"-":144}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" content: \"Jobby\";","lastModifiedDate":"2023-10-19"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"wxwern":1,"-":294}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteContact(p)","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"AddressBook *-right-\u003e \"1\" UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"UniqueTagList -[hidden]down- UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"UniqueTagList -[hidden]down- UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"UniqueContactList -right-\u003e Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Contact -up-\u003e \"*\" Tag","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Name","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Phone","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Email","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Address","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":9,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"DeleteCommand -\u003e Model : deleteContact(1)","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Class UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"Class Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"Class Id","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"Class Url","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"AddressBook *--\u003e \"1\" UniqueContactList","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"UniqueContactList --\u003e \"~* all\" Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Name","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Id","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Phone","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Email","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Url","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e Address","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"Contact *--\u003e \"*\" Tag","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"Contact -[hidden]up--\u003e I","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"UniqueContactList -[hidden]right-\u003e I","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":"Name -[hidden]right-\u003e Id","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"Id -[hidden]right-\u003e Phone","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":"Email -[hidden]right-\u003e Url","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":"Url -[hidden]right-\u003e Address","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"ModelManager --\u003e \"~* filtered\" Contact","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":21,"-":39}},{"path":"docs/diagrams/ParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2021-07-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package \"Parser classes\"{","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nParser\" as Parser","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBookParser","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class XYZCommandParser","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"Class Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e AddressBookParser","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser .down.\u003e XYZCommandParser: creates \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : creates \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser ..\u003e Command : returns \u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"XYZCommandParser .up.|\u003e Parser","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"CliSyntax ..\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":"ParserUtil .down.\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"ArgumentTokenizer .down.\u003e Flag","lastModifiedDate":"2023-10-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"wxwern":4,"-":34}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"Class JsonAdaptedContact","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedContact","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"JsonAdaptedContact --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"Class ContactListPanel","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"Class ContactCard","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"MainWindow *-down-\u003e \"1\" ContactListPanel","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":"ContactListPanel -down-\u003e \"*\" ContactCard","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"ContactListPanel --|\u003e UiPart","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"ContactCard --|\u003e UiPart","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"ContactCard ..\u003e Model","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"ContactListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"McNaBry":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"ecp -\u003e ec ++: index, editContactDescriptor","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"McNaBry":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"title: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W08-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W08-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-W08-3/tp)","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"**Jobby is a desktop application for managing your job application details, specifically organization and recruiter contacts, plus application info and status.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"* If you are interested in using Jobby, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"* If you are interested about developing Jobby, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wxwern":6,"-":13}},{"path":"docs/team/cj-lee01.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop address book and job application tracking tool. The user interacts with it using a CLI, and it has a GUI created in JavaFX. It is written in Java.","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-28"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-28"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" * What it does:","lastModifiedDate":"2023-09-28"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" * Justification:","lastModifiedDate":"2023-09-28"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * Highlights:","lastModifiedDate":"2023-09-28"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-28"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-28"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dCJ-Lee01\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"* **Project management**:","lastModifiedDate":"2023-09-28"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-28"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-28"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * User Guide:","lastModifiedDate":"2023-09-28"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-28"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"* **Community**:","lastModifiedDate":"2023-09-28"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" * PRs reviewed (with non-trivial review comments):","lastModifiedDate":"2023-09-28"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" * Contributed to forum discussions (examples: )","lastModifiedDate":"2023-09-28"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Reported bugs and suggestions for other teams in the class (examples: )","lastModifiedDate":"2023-09-28"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":"* **Tools**:","lastModifiedDate":"2023-09-28"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-28"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-28"}],"authorContributionMap":{"CJ-Lee01":33,"wxwern":3}},{"path":"docs/team/mcnabry.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"layout: page","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"title: Bryan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop app for managing job applications and contacts,","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"Jobby can help you manage tracking your job applications and contacts in a more streamlined fashion.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" * What it does: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * Justification: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Highlights: To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dMcNaBry\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"* **Project management**:","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" * User Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"* **Community**:","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"* **Tools**:","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" * To be added soon.","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"McNaBry":31,"wxwern":4}},{"path":"docs/team/tanshiyu1999.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop address book and job application tracking tool. The user interacts with it using a CLI, and it has a GUI created in JavaFX. It is written in Java.","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" * What it does:","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * Justification:","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * Highlights:","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"* **New Feature**:","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dtanshiyu1999\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"* **Project management**:","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" * User Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"* **Community**:","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" * PRs reviewed (with non-trivial review comments):","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * Contributed to forum discussions (examples: )","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" * Reported bugs and suggestions for other teams in the class (examples: )","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"* **Tools**:","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"wxwern":3,"tanshiyu1999":33}},{"path":"docs/team/wamps-jp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"layout: page","lastModifiedDate":"2023-10-03"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"title: Juanpa\u0027s Project Portfolio Page","lastModifiedDate":"2023-10-03"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"---","lastModifiedDate":"2023-10-03"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop app for tracking job applications.","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"It saves organisations and recruiters as contacts in an addressbook.","lastModifiedDate":"2023-10-03"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-10-03"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":"* **New Feature**: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":" * What it does: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":" * Justification: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" * Highlights: To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-10-03"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dwamps-jp\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":"* **Project management**:","lastModifiedDate":"2023-10-03"},{"lineNumber":22,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":23,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":24,"author":{"gitId":"wamps-jp"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-10-03"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":27,"author":{"gitId":"wamps-jp"},"content":"* **Documentation**:","lastModifiedDate":"2023-10-03"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" * User Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":29,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" * Developer Guide:","lastModifiedDate":"2023-10-03"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":33,"author":{"gitId":"wamps-jp"},"content":"* **Community**:","lastModifiedDate":"2023-10-03"},{"lineNumber":34,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"},{"lineNumber":35,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-03"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":"* **Tools**:","lastModifiedDate":"2023-10-03"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" * To be added soon","lastModifiedDate":"2023-10-03"}],"authorContributionMap":{"wxwern":3,"wamps-jp":34}},{"path":"docs/team/wxwern.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"---","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"layout: page","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"title: Wern\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"---","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"### Project: Jobby","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"Jobby is a desktop application used for tracking job applications.","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"* **New Feature**: To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dAY2324S1-CS2103T-W08-3\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dwxwern\u0026tabRepo\u003dAY2324S1-CS2103T-W08-3%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~other~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse)","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"* **Project management**:","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" * User Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"* **Community**:","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * To be added...","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"wxwern":29}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Changes the remark of an existing contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" + \": Edits the remark of the contact identified \"","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" + \"by the index number used in the last contact listing. \"","lastModifiedDate":"2023-10-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" * @param index of the contact in the filtered contact list to edit the remark","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" * @param remark of the contact to be updated to","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" * object that maps flags to their respective argument values. Only the","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" * given flags will be recognized in the arguments string.","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" * {@code preamble \u003cflag\u003evalue \u003cflag\u003evalue ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" * @param flags Prefixes to tokenize the arguments string with","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flags to their","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new flag `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2023-10-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" * Returns the last value of {@code flag}.","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"public Optional\u003cString\u003e getValue(Prefix flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e values \u003d getAllValues(flag);","lastModifiedDate":"2023-10-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"CJ-Lee01"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of contact data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the contact’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"CJ-Lee01"},"content":"Create a new `Remark` in `seedu.address.model.contact`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2023-10-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"CJ-Lee01"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"CJ-Lee01"},"content":"Simply add the following to [`seedu.address.ui.ContactCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2023-10-06"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/jobby.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-10-19"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"CJ-Lee01"},"content":"public PersonCard(Person contact, int displayedIndex) {","lastModifiedDate":"2023-10-05"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"CJ-Lee01"},"content":" remark.setText(contact.getRemark().value);","lastModifiedDate":"2023-10-05"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"McNaBry"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"CJ-Lee01"},"content":" Person contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":345,"author":{"gitId":"CJ-Lee01"},"content":" Person editedContact \u003d new Person(","lastModifiedDate":"2023-10-05"},{"lineNumber":346,"author":{"gitId":"CJ-Lee01"},"content":" contactToEdit.getName(), contactToEdit.getPhone(), contactToEdit.getEmail(),","lastModifiedDate":"2023-10-05"},{"lineNumber":347,"author":{"gitId":"CJ-Lee01"},"content":" contactToEdit.getAddress(), remark, contactToEdit.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"CJ-Lee01"},"content":" model.setPerson(contactToEdit, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":350,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(generateSuccessMessage(editedContact));","lastModifiedDate":"2023-10-05"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contactToEdit}.","lastModifiedDate":"2023-10-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"CJ-Lee01"},"content":" private String generateSuccessMessage(Person contactToEdit) {","lastModifiedDate":"2023-10-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(message, contactToEdit);","lastModifiedDate":"2023-10-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":20,"wxwern":10,"-":367}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.contact.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" \"contacts\": [ {","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"CJ-Lee01":2,"-":110}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"CJ-Lee01"},"content":" Person contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":193,"author":{"gitId":"CJ-Lee01"},"content":" Person editedContact \u003d createEditedPerson(contactToEdit, editPersonDescriptor);","lastModifiedDate":"2023-10-05"},{"lineNumber":194,"author":{"gitId":"McNaBry"},"content":" if (!contactToEdit.isSamePerson(editedContact) \u0026\u0026 model.hasContact(editedContact)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"CJ-Lee01"},"content":" model.setPerson(contactToEdit, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":198,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedContact));","lastModifiedDate":"2023-10-05"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"CJ-Lee01"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the contact data.","lastModifiedDate":"2023-10-05"},{"lineNumber":205,"author":{"gitId":"CJ-Lee01"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ contacts.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":206,"author":{"gitId":"CJ-Lee01"},"content":" FYI, The \u0027filtered list\u0027 is the list of contacts resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the contacts so that the user can see the edited contact along with all other contacts. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":207,"author":{"gitId":"CJ-Lee01"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of contacts is being tracked.","lastModifiedDate":"2023-10-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"CJ-Lee01"},"content":" contacts.addAll(","lastModifiedDate":"2023-10-05"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":9,"-":290}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" private static final String LOG_FILE \u003d \"jobby.log\";","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":1,"-":105}},{"path":"src/main/java/seedu/address/commons/exceptions/IllegalOperationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Exception thrown when attempting to make illegal.","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class IllegalOperationException extends Exception {","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" * @param message that informs the user that it has attempted an illegal operation.","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" public IllegalOperationException(String message) {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" super(message);","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * @param message that informs the user that it has attempted an illegal operation.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * @param cause of the main exception.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public IllegalOperationException(String message, Throwable cause) {","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" super(message, cause);","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"CJ-Lee01":21}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" * Formats the given values with the format string, but return null if any of the given values are null or empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @param format The format string to use.","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" * @param values The values to insert into the format string.","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" * @return The formatted string, or null if any of the values are null.","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" public static String formatWithNullFallback(String format, Object... values) {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" if (format \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" for (Object v : values) {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" if (v \u003d\u003d null || v.toString().isBlank()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" return String.format(format, values);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":21,"-":68}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" /** Returns an unmodifiable view of the filtered list of contacts */","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" ObservableList\u003cContact\u003e getFilteredContactList();","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":1,"-":47}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" return model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.Flag;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX \u003d \"The contact index provided is invalid\";","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_NO_SUCH_CONTACT \u003d \"No such contact\";","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONTACTS_LISTED_OVERVIEW \u003d \"%1$d contacts listed!\";","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" \"Multiple values specified for the following single-valued option(s): \";","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_EXTRA_FIELDS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" \"Extra irrelevant options found in the command: \";","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_UNEXPECTED_NON_EMPTY_FIELDS \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" \"The following options may not have any value: \";","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" public static final String MESSAGE_INVALID_FIELD \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" \"The term \u0027%s\u0027 is not a valid option!\";","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the duplicate flags.","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForDuplicateFlags(Flag... duplicateFlags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" assert duplicateFlags.length \u003e 0;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" Stream.of(duplicateFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the extraneous flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForExtraneousFlags(Flag... extraneousFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assert extraneousFlags.length \u003e 0;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" Set\u003cString\u003e extraneousFields \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" Stream.of(extraneousFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" return MESSAGE_EXTRA_FIELDS + String.join(\" \", extraneousFields);","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForNonEmptyValuedFlags(Flag... nonEmptyValuedFlags) {","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" assert nonEmptyValuedFlags.length \u003e 0;","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" Set\u003cString\u003e nonEmptyValuedFields \u003d","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" Stream.of(nonEmptyValuedFlags).map(Flag::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" return MESSAGE_UNEXPECTED_NON_EMPTY_FIELDS + String.join(\" \", nonEmptyValuedFields);","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" * Returns an error message indicating the invalid flag.","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" public static String getErrorMessageForInvalidFlagString(String flagString) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" MESSAGE_INVALID_FIELD, flagString","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * Formats the {@code contact} for display to the user.","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public static String format(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" builder.append(contact.getName())","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" .append(\"; Id: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" .append(contact.getId())","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" .append(contact.getPhone().map(p -\u003e p.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" .append(contact.getEmail().map(e -\u003e e.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" .append(\"; Url: \")","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" .append(contact.getUrl().map(u -\u003e u.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" .append(contact.getAddress().map(a -\u003e a.value).orElse(\"(none)\"))","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().forEach(builder::append);","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":5,"wxwern":47,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION_ID;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_POSITION;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_STATUS;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_ORGANIZATION_USAGE \u003d \"Adds an organization. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" + FLAG_ORGANIZATION + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" + FLAG_NAME + \" NAME \"","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ID + \" ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_URL + \" URL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_STATUS + \" STATUS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_POSITION + \" POSITION] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" + FLAG_ORGANIZATION + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" JobsInc \"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" + FLAG_ID + \" id_12345-1 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" + FLAG_PHONE + \" 98765432 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" + FLAG_EMAIL + \" jobsInc@example.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" + FLAG_URL + \" www.jobsinc.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" + FLAG_ADDRESS + \" 311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" + FLAG_STATUS + \" applied \"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" + FLAG_POSITION + \" Junior Software Engineer \"","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" softwareEngineering \"","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" competitive \";","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_RECRUITER_USAGE \u003d \"Adds a recruiter. \"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" + FLAG_RECRUITER + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" NAME \"","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ID + \" ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ORGANIZATION_ID + \" ORG_ID] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_URL + \" URL] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" + FLAG_RECRUITER + \" \"","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" + FLAG_NAME + \" Steve \"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" + FLAG_ID + \" id_98765-1 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" + FLAG_PHONE + \" 83452145 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" + FLAG_EMAIL + \" steveJobsInc@example.com \"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" + FLAG_URL + \" www.linkedin.com/in/steve/ \"","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" + FLAG_ADDRESS + \" 311 W Coast Walk, #02-30 \"","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" + FLAG_TAG + \" friendly \";","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" + \": Adds a contact to the address book of the class type Organization or Recruiter.\"","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" + \" The input format varies depending on the class:\\n\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" + MESSAGE_ORGANIZATION_USAGE + \"\\n\\n\"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" + MESSAGE_RECRUITER_USAGE;","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New contact added: %1$s\";","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"This contact already exists in the address book\";","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddCommand.class);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" private final Contact toAdd;","lastModifiedDate":"2023-10-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an AddCommand to add the specified {@code Contact}","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" public AddCommand(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" toAdd \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" logger.fine(String.format(\"Adding contact: %s\", toAdd));","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" if (model.hasContact(toAdd)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" model.addContact(toAdd);","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":54,"CJ-Lee01":7,"wxwern":15,"tanshiyu1999":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECURSIVE;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.function.Function;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes a contact identified using its displayed index or its contact id from the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" + \": Deletes the contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" + \"INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" + FLAG_ID + \" ID \"","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" + FLAG_RECURSIVE + \" RECURSIVE \"","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" + \"\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 1: \" + COMMAND_WORD + \" 1\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 2: \" + COMMAND_WORD + \" --id 0d0h4\\n\"","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" + \"Example 3: \" + COMMAND_WORD + \" 1 --recursive\\n\";","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_DELETE_CONTACT_SUCCESS \u003d \"Deleted Contact: %1$s\";","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" private final Object selector; // TODO: This is very sus but this will only be used for equals comparison","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" private final Function\u003cModel, Contact\u003e contactFunction;","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" private final CommandException commandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to be deleted","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" this.selector \u003d targetIndex;","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" this.contactFunction \u003d (Model model) -\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" return null;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" return lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" };","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" this.commandException \u003d new CommandException(Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetId of the contact to be deleted","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteCommand(Id targetId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" this.selector \u003d targetId;","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" this.contactFunction \u003d (Model model) -\u003e model.getContactById(targetId);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" this.commandException \u003d new CommandException(Messages.MESSAGE_NO_SUCH_CONTACT);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an executable DeleteCommand based on whether to delete recursively.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to delete in the current list","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * @param shouldDeleteChildren specifies if child contacts should be deleted","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public static DeleteCommand selectIndex(Index targetIndex, boolean shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Add documentation to DG","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" if (shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteWithChildrenCommand(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an executable DeleteCommand based on whether to delete recursively.","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * @param id of the contact to delete in the current list","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * @param shouldDeleteChildren specifies if child contacts should be deleted","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" public static DeleteCommand selectId(Id id, boolean shouldDeleteChildren) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Add documentation to DG","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" if (shouldDeleteChildren) {","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteWithChildrenCommand(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" return new DeleteCommand(id);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToDelete \u003d this.contactFunction.apply(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" if (contactToDelete \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" throw commandException;","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" model.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_CONTACT_SUCCESS, Messages.format(contactToDelete)));","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" return selector.equals(otherDeleteCommand.selector);","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: replace this toString method with sth better than targetIndex","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"CJ-Lee01"},"content":" // To not replace yet until we do the tests","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"targetIndex\", selector)","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" * Gives the contact that the DeleteCommand is going to delete if a model is given.","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" * If such a contact does not exist, gives null.","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" protected Contact getContact(Model model) {","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"CJ-Lee01"},"content":" return contactFunction.apply(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":86,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/DeleteWithChildrenCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes a contact and also deletes its child contacts.","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"public class DeleteWithChildrenCommand extends DeleteCommand {","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DELETE_CONTACT_SUCCESS \u003d DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS + \" with\"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" + \":\\n%2$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * @param targetIndex of the contact to be deleted in the current contact list","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteWithChildrenCommand(Index targetIndex) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add documentation in DG","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" super(targetIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" public DeleteWithChildrenCommand(Id targetId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" super(targetId);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(model);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToDelete \u003d super.getContact(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" super.execute(model);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" // At this point if the contact is null, the superclass would have thrown exception.","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" // Superclass would have also deleted the contact from the list.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" assert contactToDelete !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Contact[] childContacts \u003d contactToDelete.getChildren();","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" Arrays.stream(childContacts).forEach(contact -\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" model.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete),","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" Arrays.stream(childContacts)","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" .map(c -\u003e Messages.format(c) + \"\\n\")","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" .reduce((c1, c2) -\u003e c1 + c2)","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" .orElse(\"No other contacts found\") // I can\u0027t find a better method.","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" ));","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":54}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" * Edits the details of an existing contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the contact identified \"","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" + \"by the index number used in the displayed contact list. \"","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_NAME + \" NAME] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" + \"[\" + FLAG_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" + FLAG_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" + FLAG_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_EDIT_CONTACT_SUCCESS \u003d \"Edited Contact: %1$s\";","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"This contact already exists in the address book.\";","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" private final EditContactDescriptor editContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * @param index of the contact in the filtered contact list to edit","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" * @param editContactDescriptor details to edit the contact with","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" public EditCommand(Index index, EditContactDescriptor editContactDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" this.editContactDescriptor \u003d new EditContactDescriptor(editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" List\u003cContact\u003e lastShownList \u003d model.getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" Contact editedContact \u003d createEditedContact(contactToEdit, editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" if (!contactToEdit.isSameContact(editedContact) \u0026\u0026 model.hasContact(editedContact)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" model.setContact(contactToEdit, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_CONTACT_SUCCESS, Messages.format(editedContact)));","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" * Creates and returns a {@code Contact} with the details of {@code contactToEdit}","lastModifiedDate":"2023-10-05"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" * edited with {@code editContactDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" private static Contact createEditedContact(Contact contactToEdit, EditContactDescriptor editContactDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" assert contactToEdit !\u003d null;","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" Name updatedName \u003d editContactDescriptor.getName()","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getName());","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" Id updatedId \u003d editContactDescriptor.getId()","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getId());","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" Phone updatedPhone \u003d editContactDescriptor.getPhone()","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getPhone().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" Email updatedEmail \u003d editContactDescriptor.getEmail()","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getEmail().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Url updatedUrl \u003d editContactDescriptor.getUrl()","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getUrl().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" Address updatedAddress \u003d editContactDescriptor.getAddress()","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getAddress().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e updatedTags \u003d editContactDescriptor.getTags()","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" .orElse(contactToEdit.getTags());","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" return new Contact(updatedName, updatedId, updatedPhone, updatedEmail, updatedUrl, updatedAddress, updatedTags);","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 editContactDescriptor.equals(otherEditCommand.editContactDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"editContactDescriptor\", editContactDescriptor)","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"CJ-Lee01"},"content":" * Stores the details to edit the contact with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-05"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" * corresponding field value of the contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" public static class EditContactDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" private Url url;","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor() {}","lastModifiedDate":"2023-10-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor(EditContactDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" setUrl(toCopy.url);","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cId\u003e getId() {","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"McNaBry"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"McNaBry"},"content":" public void setId(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cUrl\u003e getUrl() {","lastModifiedDate":"2023-10-17"},{"lineNumber":211,"author":{"gitId":"McNaBry"},"content":" return Optional.ofNullable(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":212,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":213,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":214,"author":{"gitId":"McNaBry"},"content":" public void setUrl(Url url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":215,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof EditContactDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor otherEditContactDescriptor \u003d (EditContactDescriptor) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"CJ-Lee01"},"content":" return Objects.equals(name, otherEditContactDescriptor.name)","lastModifiedDate":"2023-10-06"},{"lineNumber":256,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(phone, otherEditContactDescriptor.phone)","lastModifiedDate":"2023-10-06"},{"lineNumber":257,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(email, otherEditContactDescriptor.email)","lastModifiedDate":"2023-10-06"},{"lineNumber":258,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(address, otherEditContactDescriptor.address)","lastModifiedDate":"2023-10-06"},{"lineNumber":259,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 Objects.equals(tags, otherEditContactDescriptor.tags);","lastModifiedDate":"2023-10-06"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"McNaBry":48,"CJ-Lee01":33,"wxwern":12,"-":180}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" * Finds and lists all contacts in address book whose name contains any of the argument keywords.","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all contacts whose names contain any of \"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" String.format(Messages.MESSAGE_CONTACTS_LISTED_OVERVIEW, model.getFilteredContactList().size()));","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"McNaBry":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * Lists all contacts in the address book to the user.","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_ALL_CONTACTS \u003d \"Listed all contacts\";","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_ORGANIZATIONS \u003d \"Listed all organizations\";","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":" public static final String MESSAGE_SUCCESS_RECRUITERS \u003d \"Listed all recruiters\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"wamps-jp"},"content":" private final Predicate\u003cContact\u003e predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":" * Creates a ListCommand listing the {@code Contact} entries of the specified type.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"wamps-jp"},"content":" * @param predicate the predicate determining the type of {@code Contact} to be listed","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"wamps-jp"},"content":" public ListCommand(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" requireNonNull(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" model.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"wamps-jp"},"content":" if (predicate.equals(PREDICATE_SHOW_ONLY_ORGANIZATIONS)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_ORGANIZATIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"wamps-jp"},"content":" } else if (predicate.equals(PREDICATE_SHOW_ONLY_RECRUITERS)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_RECRUITERS);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wamps-jp"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"wamps-jp"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":" return true;","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"wamps-jp"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"wamps-jp"},"content":" return false;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"wamps-jp"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"wamps-jp"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":2,"wamps-jp":37,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"McNaBry":2,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION_ID;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_POSITION;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_STATUS;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand and returns an AddCommand object","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" * for execution.","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" FLAG_NAME, FLAG_PHONE, FLAG_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" FLAG_ADDRESS, FLAG_TAG, FLAG_URL,","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" FLAG_ID, FLAG_STATUS, FLAG_POSITION,","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" FLAG_ORGANIZATION_ID,","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" FLAG_ORGANIZATION, FLAG_RECRUITER","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" if (!argMultimap.hasAllOfFlags(FLAG_NAME)","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_NAME, FLAG_ID, FLAG_PHONE, FLAG_EMAIL, FLAG_URL, FLAG_ADDRESS);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasFlag(FLAG_ORGANIZATION)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" Organization organization \u003d parseAsOrganization(argMultimap);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return new AddCommand(organization);","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" } else if (argMultimap.hasFlag(FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d parseAsRecruiter(argMultimap);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" return new AddCommand(recruiter);","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" // Deprecated contact format. Will be removed in future versions.","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new Contact(name, id, phone, email, url, address, tagList);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" return new AddCommand(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" private Recruiter parseAsRecruiter(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_ORGANIZATION_ID);","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" Id oid \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ORGANIZATION_ID), ParserUtil::parseId);","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(name, id, phone, email, url, address, tagList, oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" private Organization parseAsOrganization(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_POSITION, FLAG_STATUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get());","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" Optional\u003cString\u003e idString \u003d argMultimap.getValue(FLAG_ID);","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" Id id \u003d idString.isPresent()","lastModifiedDate":"2023-10-19"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" ? ParserUtil.parseId(idString.get())","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" : new Id();","lastModifiedDate":"2023-10-19"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" Phone phone \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_PHONE), ParserUtil::parsePhone);","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" Email email \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_EMAIL), ParserUtil::parseEmail);","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" Address address \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_ADDRESS), ParserUtil::parseAddress);","lastModifiedDate":"2023-10-19"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" Url url \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_URL), ParserUtil::parseUrl);","lastModifiedDate":"2023-10-19"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" Position position \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_POSITION), ParserUtil::parsePosition);","lastModifiedDate":"2023-10-19"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" Status status \u003d ParserUtil.parseOptionally(","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" argMultimap.getValue(FLAG_STATUS), ParserUtil::parseStatus);","lastModifiedDate":"2023-10-19"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(FLAG_TAG));","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" Set\u003cId\u003e ridList \u003d Set.of(); // TODO: This should be dynamically determined from oid in Recruiter.","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":140,"author":{"gitId":"tanshiyu1999"},"content":" return new Organization(name, id, phone, email, url, address, tagList, status, position, ridList);","lastModifiedDate":"2023-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"McNaBry":86,"CJ-Lee01":1,"wxwern":11,"tanshiyu1999":9,"-":35}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"wamps-jp"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"wamps-jp":1,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" * Stores mapping of flags to their respective arguments.","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * can be inserted multiple times for the same flag.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" /** Flags mapped to their respective arguments. **/","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" private final Map\u003cFlag, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" /** The preamble value (the text before the first valid flag). **/","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" private String preamble \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Associates the specified argument value with {@code flag} key in this map.","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Leading and trailing whitespaces are trimmed, and null values are treated as empty strings.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param flag Flag key with which the specified argument value is to be associated.","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @param argValue Argument value to be associated with the specified flag key.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" public void put(Flag flag, String argValue) {","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e argValues \u003d getAllValues(flag);","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" argValues.add(argValue \u003d\u003d null ? \"\" : argValue.trim());","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" argMultimap.put(flag, argValues);","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * Associates the specified value with the preamble of this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" * If the map previously contained a preamble, it will be replaced with this one.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * Leading and trailing whitespaces are trimmed, and null values are treated as empty strings.","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * @param preamble Argument value to be associated with the preamble.","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public void putPreamble(String preamble) {","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" this.preamble \u003d preamble \u003d\u003d null ? \"\" : preamble.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of the given {@code flag} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * Invoking {@code .hasFlag(flag)} is equivalent to the result obtained via {@code .getValue(flag).isPresent()}.","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" public boolean hasFlag(Flag flag) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return !getAllValues(flag).isEmpty();","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of all of these {@code flags} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * Equivalent to the AND of booleans obtained via {@link #hasFlag} for all provided flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public boolean hasAllOfFlags(Flag... flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" if (!this.hasFlag(flag)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" * Returns whether there exists at least one occurrence of at least one of these {@code flags} in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" * Equivalent to the OR of booleans obtained via {@link #hasFlag} for all provided flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" public boolean hasAnyOfFlags(Flag... flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" if (this.hasFlag(flag)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" * Returns whether the given {@code flag} has a non-empty value assigned to it.","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" * This returns true if the flag exists and is set to some non-empty string, and false otherwise.","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public boolean hasNonEmptyValue(Flag flag) {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" for (String value : getAllValues(flag)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" * Returns the last value of {@code flag}, if the flag exists.","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" * Note that an empty string or longer is guaranteed to be given if the flag exists.","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" public Optional\u003cString\u003e getValue(Flag flag) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e values \u003d getAllValues(flag);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" * Returns all values of {@code flag}.","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" * If the flag does not exist or has no values assigned (i.e., not even empty strings), this returns an empty list.","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" public List\u003cString\u003e getAllValues(Flag flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" if (!argMultimap.containsKey(flag)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(flag));","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * Returns the preamble (text before the first valid flag).","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" return preamble;","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if any of the flags given in {@code flags} appeared more than","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" Flag[] duplicatedFlags \u003d Stream.of(flags).distinct()","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" .filter(flag -\u003e argMultimap.containsKey(flag) \u0026\u0026 argMultimap.get(flag).size() \u003e 1)","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" if (duplicatedFlags.length \u003e 0) {","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicateFlags(duplicatedFlags));","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if there exists any more flags than the ones given in {@code flags}","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" * among the ones put in this map.","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" List\u003cFlag\u003e referenceFlagsList \u003d List.of(flags);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" Flag[] extraneousFlags \u003d argMultimap.keySet().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" .filter(f -\u003e !referenceFlagsList.contains(f))","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" if (extraneousFlags.length \u003e 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForExtraneousFlags(extraneousFlags));","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" * Throws a {@code ParseException} if any of the flags given in {@code flags} have a non-empty value","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * assigned to it.","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor(Flag... flags) throws ParseException {","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" Flag[] flagsWithUsefulValues \u003d Stream.of(flags).distinct()","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" .filter(argMultimap::containsKey)","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" .filter(f -\u003e argMultimap.get(f).stream().anyMatch(s -\u003e !s.isEmpty()))","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" .toArray(Flag[]::new);","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" if (flagsWithUsefulValues.length \u003e 0) {","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" throw new ParseException(Messages.getErrorMessageForNonEmptyValuedFlags(flagsWithUsefulValues));","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"wxwern":113,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}\u003cbr\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * e.g. {@code some preamble text t/ 11.00 t/ 12.00 k/ m/ July} where flag are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps flag to their","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * respective argument values. Only the given flag will be recognized in the arguments string.","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * @param flags Flags to prioritize tokenizing the arguments string with","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flag to their arguments","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public static ArgumentMultimap tokenize(String argsString, Flag... flags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" String[] words \u003d splitByWords(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" return extractArguments(words, flags);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Splits an arguments string into individual words, separated by space.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cflag\u003e value \u003cflag\u003e value ...}","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @return The terms formed after splitting the arguments string by the space character.","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" private static String[] splitByWords(String argsString) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" return argsString.split(\" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" * Locate all the locations in the words list that represent flags.","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" * @param wordsArray An array of words.","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" * @param targetedFlags An array of flags should be checked explicitly.","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * @return The list of indices where a flag can be found.","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" private static List\u003cInteger\u003e findFlagIndices(String[] wordsArray, Flag[] targetedFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" List\u003cInteger\u003e flagIndices \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 0; i \u003c wordsArray.length; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" String word \u003d wordsArray[i];","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" if (Flag.isFlagSyntax(word) || Flag.findMatch(word, targetedFlags).isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" flagIndices.add(i);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return flagIndices;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * Extracts flag and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * extracted flag to their respective arguments. Flags are extracted based on their zero-based positions in","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" * @param words An array of words derived from the arguments string.","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" * @param targetedFlags An array of flags should be checked explicitly.","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" * @return ArgumentMultimap object that maps flags to their arguments.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" private static ArgumentMultimap extractArguments(String[] words, Flag[] targetedFlags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" List\u003cString\u003e wordsList \u003d List.of(words);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" // Define an \"end of range\" to be the end of a value or preamble.","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" // We prepare a list that marks the end of ranges via *exclusive* indices (i.e., end index + 1).","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" // In other words, if the list has [3, 5], it means there are two ranges [0,3) and [3,5).","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" List\u003cInteger\u003e endOfRangeIndices \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" endOfRangeIndices.addAll(findFlagIndices(words, targetedFlags));","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" endOfRangeIndices.add(words.length);","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" // Search through the ranges and map flag to their argument values (if any)","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 0; i \u003c endOfRangeIndices.size(); i++) {","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" // Note that the bounds are [start, end), i.e., start \u003c\u003d x \u003c end.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" int start \u003d i \u003d\u003d 0 ? 0 : endOfRangeIndices.get(i - 1);","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" int end \u003d endOfRangeIndices.get(i);","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" if (start \u003e\u003d end) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" continue;","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" // Case 1: Preamble (if we reach here in the first loop iteration).","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" String preamble \u003d String.join(\" \", wordsList.subList(start, end)).trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" argMultimap.putPreamble(preamble);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" continue;","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" // Case 2: Flag + Possible Argument Value (if we reach here in 2nd+ loop iterations).","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" String flagString \u003d words[start];","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" String valueString \u003d String.join(\" \", wordsList.subList(start + 1, end)).trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" Flag flag \u003d Flag.findMatch(flagString, targetedFlags)","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" .or(() -\u003e Flag.parseOptional(flagString))","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" .orElseThrow(); // We should never get here since the flags are validated in findFlagIndices.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" argMultimap.put(flag, valueString);","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" return argMultimap;","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"wxwern":63,"-":52}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" /* Flag definitions */","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_NAME \u003d new Flag(\"name\");","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_PHONE \u003d new Flag(\"phone\");","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_EMAIL \u003d new Flag(\"email\");","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_ADDRESS \u003d new Flag(\"addr\");","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_TAG \u003d new Flag(\"tag\");","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ORGANIZATION \u003d new Flag(\"org\");","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_RECRUITER \u003d new Flag(\"rec\");","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_URL \u003d new Flag(\"url\");","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_STATUS \u003d new Flag(\"stat\");","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public static final Flag FLAG_POSITION \u003d new Flag(\"pos\");","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ID \u003d new Flag(\"id\");","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" public static final Flag FLAG_RECURSIVE \u003d new Flag(\"recursive\");","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public static final Flag FLAG_ORGANIZATION_ID \u003d new Flag(\"oid\");","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" public static final Flag FLAG_RECRUITER_ID \u003d new Flag(\"rid\");","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":1,"wxwern":7,"tanshiyu1999":5,"-":9}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECURSIVE;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" ArgumentMultimap argumentMultimap \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" FLAG_ID, FLAG_RECURSIVE);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" boolean hasIndex \u003d !argumentMultimap.getPreamble().isEmpty();","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" boolean hasId \u003d argumentMultimap.getValue(FLAG_ID).isPresent();","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" boolean isRecursive \u003d argumentMultimap.getValue(FLAG_RECURSIVE).isPresent();","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" if (hasIndex) {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" return parseDeleteIndexCommand(argumentMultimap.getPreamble(), isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" if (hasId) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" return parseDeleteIdCommand(argumentMultimap.getValue(FLAG_ID).get(), isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" private static DeleteCommand parseDeleteIdCommand(String idString, boolean isRecursive) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Id id;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" id \u003d ParserUtil.parseId(idString);","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" return DeleteCommand.selectId(id, isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" private static DeleteCommand parseDeleteIndexCommand(String indexStr, boolean isRecursive) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" Index index;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" index \u003d ParserUtil.parseIndex(indexStr);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" return DeleteCommand.selectIndex(index, isRecursive);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":35,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" ArgumentTokenizer.tokenize(args, FLAG_NAME, FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS, FLAG_TAG);","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" argMultimap.verifyNoDuplicateFlagsFor(FLAG_NAME, FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_NAME).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(FLAG_NAME).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_PHONE).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(FLAG_PHONE).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(FLAG_EMAIL).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" if (argMultimap.getValue(FLAG_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" editContactDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(FLAG_ADDRESS).get()));","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" parseTagsForEdit(argMultimap.getAllValues(FLAG_TAG)).ifPresent(editContactDescriptor::setTags);","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" if (!editContactDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" return new EditCommand(index, editContactDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"CJ-Lee01":4,"wxwern":16,"-":65}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"McNaBry":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/Flag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * A flag is an argument in and of itself. It functions as a option specifier, or as a marker for the beginning of a","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" * command argument.","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * E.g. \u0027--t\u0027 in \u0027add James --t friend\u0027.","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"public class Flag {","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" public static final String DEFAULT_PREFIX \u003d \"--\";","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" public static final String DEFAULT_POSTFIX \u003d \"\";","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private final String name;","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private final String prefix;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" private final String postfix;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * Constructs a flag with the {@link #DEFAULT_PREFIX} and {@link #DEFAULT_POSTFIX} surrounding the name.","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" * If the name has any leading or trailing whitespace, it\u0027ll be trimmed.","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" * @param name The name of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" public Flag(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" this(name, DEFAULT_PREFIX, DEFAULT_POSTFIX);","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * Constructs a flag with a custom prefix and custom postfix.","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" * Any fields with leading or trailing whitespace are trimmed.","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" * @param name The name of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" * @param prefix The prefix of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" * @param postfix The postfix of the flag. May be null, which will set it to an empty string.","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" public Flag(String name, String prefix, String postfix) {","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" this.name \u003d name \u003d\u003d null ? \"\" : name.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" this.prefix \u003d prefix \u003d\u003d null ? \"\" : prefix.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" this.postfix \u003d postfix \u003d\u003d null ? \"\" : postfix.trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" * Parses the given string using the default prefix and postfix format into a {@link Flag}.","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" * @return The corresponding {@link Flag} instance.","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" * @throws ParseException if the flag is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static Flag parse(String string) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" if (!isFlagSyntax(string)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForInvalidFlagString(string)","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" return new Flag(string.substring(","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" DEFAULT_PREFIX.length(),","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" string.length() - DEFAULT_POSTFIX.length()","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" * Parses the given string using the default prefix and postfix format into an optional {@link Flag},","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" * which will return an empty optional if it\u0027s invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @return An optional containing the flag if it is a valid flag format.","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" public static Optional\u003cFlag\u003e parseOptional(String string) {","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" return Optional.of(parse(string));","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" * Finds a {@link Flag} from the given {@code flags} that matches the given string representation.","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for a corresponding matching flag or flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" * @param flags The array of flags to check from.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" * @return An optional instance with the result if there is a successful match.","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" * @throws IllegalArgumentException if the flag is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public static Optional\u003cFlag\u003e findMatch(String string, Flag[] flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" for (Flag flag : flags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" if (string !\u003d null \u0026\u0026 string.equals(flag.getFlagString())) {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" return Optional.of(flag);","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" public String getName() {","lastModifiedDate":"2023-10-07"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" return name;","lastModifiedDate":"2023-10-07"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" public String getPrefix() {","lastModifiedDate":"2023-10-07"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" return prefix;","lastModifiedDate":"2023-10-07"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" public String getPostfix() {","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" return postfix;","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" * Returns the full string that would be used by the user to input a flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" * Equivalent to calling {@link #toString()}.","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" public String getFlagString() {","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" return this.toString();","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * Checks whether the given string representation resembles a flag.","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" * If this is true, then it resembles the default prefix-name-postfix format specified in {@link Flag},","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" * and is a plausible output from {@link Flag#getFlagString()}.","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" * @param string The string to check for flag-like formats.","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" * @return true if the string resembles a flag, false otherwise.","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" public static boolean isFlagSyntax(String string) {","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" if (string \u003d\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" return string.startsWith(DEFAULT_PREFIX) \u0026\u0026 string.endsWith(DEFAULT_POSTFIX);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" * Returns a string representation of this flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" * This is the full string that would be used by a user to input a flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" * This means it\u0027s the concatenated result of prefix, name, postfix together.","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" * @return The string representation of this flag.","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-07"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" return this.getPrefix() + this.getName() + this.getPostfix();","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" return name \u003d\u003d null ? 0 : name.hashCode();","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-07"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-07"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" if (!(other instanceof Flag)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" Flag otherFlag \u003d (Flag) other;","lastModifiedDate":"2023-10-07"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" return Objects.equals(name, otherFlag.name)","lastModifiedDate":"2023-10-07"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 Objects.equals(prefix, otherFlag.prefix)","lastModifiedDate":"2023-10-07"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 Objects.equals(postfix, otherFlag.postfix);","lastModifiedDate":"2023-10-07"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wxwern":172}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" * Parses the given {@code String} of arguments in the context of the ListCommand","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":" * and returns a ListCommand object for execution.","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":" public ListCommand parse(String args) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"wamps-jp"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, FLAG_ORGANIZATION, FLAG_RECRUITER);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasAllOfFlags(FLAG_ORGANIZATION, FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" if (argMultimap.hasFlag(FLAG_ORGANIZATION)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ONLY_ORGANIZATIONS);","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" } else if (argMultimap.hasFlag(FLAG_RECRUITER)) {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ONLY_RECRUITERS);","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"wamps-jp"},"content":" return new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"wxwern":3,"wamps-jp":33}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it.","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String id} into a {@code Status}.","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public static Id parseId(String id) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" if (!Id.isValidId(id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" return new Id(trimmedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String status} into a {@code Status}.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(status);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" return new Status(trimmedStatus);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String position} into a {@code Position}.","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code position} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" public static Position parsePosition(String position) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(position);","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" String trimmedPosition \u003d position.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" if (!Position.isValidPosition(position)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Position.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" return new Position(trimmedPosition);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" * Parses a {@code String url} into an {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code url} is invalid.","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" public static Url parseUrl(String url) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" requireNonNull(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" String trimmedUrl \u003d url.trim();","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" if (!Url.isValidUrl(trimmedUrl)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" throw new ParseException(Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" return new Url(trimmedUrl);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":190,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":191,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":192,"author":{"gitId":"tanshiyu1999"},"content":" * Parses {@code Collection\u003cString\u003e ids} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2023-10-19"},{"lineNumber":193,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":194,"author":{"gitId":"tanshiyu1999"},"content":" public static Set\u003cId\u003e parseIds(Collection\u003cString\u003e ids) throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":195,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(ids);","lastModifiedDate":"2023-10-19"},{"lineNumber":196,"author":{"gitId":"tanshiyu1999"},"content":" final Set\u003cId\u003e idSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":197,"author":{"gitId":"tanshiyu1999"},"content":" for (String idName : ids) {","lastModifiedDate":"2023-10-19"},{"lineNumber":198,"author":{"gitId":"tanshiyu1999"},"content":" idSet.add(parseId(idName));","lastModifiedDate":"2023-10-19"},{"lineNumber":199,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":200,"author":{"gitId":"tanshiyu1999"},"content":" return idSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":201,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":202,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":203,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":204,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":205,"author":{"gitId":"McNaBry"},"content":" * References a function that parses a string into an expected output within the {@link ParserUtil} utility class.","lastModifiedDate":"2023-10-19"},{"lineNumber":206,"author":{"gitId":"McNaBry"},"content":" * @param \u003cR\u003e The return result.","lastModifiedDate":"2023-10-19"},{"lineNumber":207,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":208,"author":{"gitId":"McNaBry"},"content":" @FunctionalInterface","lastModifiedDate":"2023-10-19"},{"lineNumber":209,"author":{"gitId":"McNaBry"},"content":" public interface StringParserFunction\u003cR\u003e {","lastModifiedDate":"2023-10-19"},{"lineNumber":210,"author":{"gitId":"McNaBry"},"content":" R parse(String value) throws ParseException;","lastModifiedDate":"2023-10-19"},{"lineNumber":211,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":212,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":213,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":214,"author":{"gitId":"McNaBry"},"content":" * Returns an object of type R that is given by passing the given string into {@code parseFunction} if","lastModifiedDate":"2023-10-19"},{"lineNumber":215,"author":{"gitId":"McNaBry"},"content":" * {@code optionalString} is non-empty, otherwise returns null.","lastModifiedDate":"2023-10-19"},{"lineNumber":216,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":217,"author":{"gitId":"McNaBry"},"content":" * @param \u003cR\u003e The type of object returned by parsing the optionalString.","lastModifiedDate":"2023-10-19"},{"lineNumber":218,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":219,"author":{"gitId":"McNaBry"},"content":" * @throws ParseException if the given {@code optionalString} is invalid as determined by {@code parseFunction}","lastModifiedDate":"2023-10-19"},{"lineNumber":220,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":221,"author":{"gitId":"McNaBry"},"content":" public static \u003cR\u003e R parseOptionally(Optional\u003cString\u003e optionalString, StringParserFunction\u003cR\u003e parseFunction)","lastModifiedDate":"2023-10-19"},{"lineNumber":222,"author":{"gitId":"McNaBry"},"content":" throws ParseException {","lastModifiedDate":"2023-10-19"},{"lineNumber":223,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":224,"author":{"gitId":"McNaBry"},"content":" if (optionalString.isPresent()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":225,"author":{"gitId":"McNaBry"},"content":" return parseFunction.parse(optionalString.get());","lastModifiedDate":"2023-10-19"},{"lineNumber":226,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":227,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-10-19"},{"lineNumber":228,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"McNaBry":74,"tanshiyu1999":37,"-":118}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.UniqueContactList;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * Duplicates are not allowed (by .isSameContact comparison)","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" private final UniqueContactList contacts;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" contacts \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an AddressBook using the Contacts in the {@code toBeCopied}","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contents of the contact list with {@code contacts}.","lastModifiedDate":"2023-10-05"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contacts} must not contain duplicate contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" public void setContacts(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" this.contacts.setContacts(contacts);","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" setContacts(newData.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" //// contact-level operations","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if a contact with the same identity as {@code contact} exists in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.contains(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must not already exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" public void addContact(Contact p) {","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" contacts.add(p);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the given contact {@code target} in the list with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing one in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" contacts.setContact(target, editedContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" public void removeContact(Contact key) {","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" contacts.remove(key);","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a contact which id matches the given id.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" * Gives null if a contact with such id does not exist.","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" * Given id must not be null.","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" for (Contact c: contacts) {","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" if (id.equals(c.getId())) {","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" return c;","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" .add(\"contacts\", contacts)","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e getContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.asUnmodifiableObservableList();","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.equals(otherAddressBook.contacts);","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" return contacts.hashCode();","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":41,"-":100}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Type;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ALL_CONTACTS \u003d contact -\u003e true;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ONLY_ORGANIZATIONS \u003d contact -\u003e contact.getType() \u003d\u003d Type.ORGANIZATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"wamps-jp"},"content":" Predicate\u003cContact\u003e PREDICATE_SHOW_ONLY_RECRUITERS \u003d contact -\u003e contact.getType() \u003d\u003d Type.RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if a contact with the same identity as {@code contact} exists in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" boolean hasContact(Contact contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes the given contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" void deleteContact(Contact target);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Adds the given contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contact} must not already exist in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" void addContact(Contact contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the given contact {@code target} with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing one in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" void setContact(Contact target, Contact editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a contact which matches the given id.","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" * Gives null if no such contact is found.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" * Given id must not be null.","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" Contact getContactById(Id id);","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" /** Returns an unmodifiable view of the filtered contact list */","lastModifiedDate":"2023-10-05"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" ObservableList\u003cContact\u003e getFilteredContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" * Updates the filter of the filtered contact list to filter by the given {@code predicate}.","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" void updateFilteredContactList(Predicate\u003cContact\u003e predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":14,"wamps-jp":4,"-":72}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" private final FilteredList\u003cContact\u003e filteredContacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" filteredContacts \u003d new FilteredList\u003c\u003e(this.addressBook.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" return addressBook.hasContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" public void deleteContact(Contact target) {","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.removeContact(target);","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(target, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.setContact(target, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":" return addressBook.getContactById(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Contact List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an unmodifiable view of the list of {@code Contact} backed by the internal list of","lastModifiedDate":"2023-10-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" return filteredContacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" public void updateFilteredContactList(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":" filteredContacts.setPredicate(predicate);","lastModifiedDate":"2023-10-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 filteredContacts.equals(otherModelManager.filteredContacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":18,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an unmodifiable view of the contacts list.","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" * This list will not contain any duplicate contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" ObservableList\u003cContact\u003e getContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":3,"-":13}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"jobby.json\");","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":1,"-":87}},{"path":"src/main/java/seedu/address/model/contact/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s address in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":63}},{"path":"src/main/java/seedu/address/model/contact/Contact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.commons.exceptions.IllegalOperationException;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Guarantees: name and id are present and not null, field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"public class Contact {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" private static final String ILLEGAL_OPERATION_MESSAGE \u003d \"Contact cannot have child contacts\";","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" private final Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cEmail\u003e email;","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cUrl\u003e url;","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cAddress\u003e address;","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public Contact(Name name, Id id, Phone phone, Email email, Url url, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" requireAllNonNull(name, id, tags);","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" this.phone \u003d Optional.ofNullable(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" this.email \u003d Optional.ofNullable(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" this.url \u003d Optional.ofNullable(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" this.address \u003d Optional.ofNullable(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public Type getType() {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" // TODO: This should be an abstract method.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" return Type.UNKNOWN;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" public Id getId() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" return id;","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cUrl\u003e getUrl() {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" return url;","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" * Returns true if both contacts have the same id.","lastModifiedDate":"2023-10-23"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * This defines a weaker notion of equality between two contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public boolean isSameContact(Contact otherContact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" if (otherContact \u003d\u003d this) {","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" return otherContact !\u003d null","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 otherContact.getId().equals(getId());","lastModifiedDate":"2023-10-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" * Gives the array of contacts that are linked under this contact.","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public Contact[] getChildren() {","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" // default return value","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add to DG","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" return new Contact[]{};","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a child contact under this contact.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" * @throws IllegalOperationException if this contact cannot accept child contacts","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" public void addChild(Contact childContact) throws IllegalOperationException {","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" // Should throw exception if the type of contact cannot have child contacts.","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" // TODO add to DG, do JavaDocs","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" throw new IllegalOperationException(ILLEGAL_OPERATION_MESSAGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if both contacts have the same identity and data fields.","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"CJ-Lee01"},"content":" * This defines a stronger notion of equality between two contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" // TODO: This should be an abstract method.","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof Contact)) {","lastModifiedDate":"2023-10-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" Contact otherContact \u003d (Contact) other;","lastModifiedDate":"2023-10-05"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" if (this.getType() !\u003d otherContact.getType()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" if (this.getType() \u003d\u003d Type.UNKNOWN) {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" return id.equals(otherContact.id)","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 name.equals(otherContact.name)","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 phone.equals(otherContact.phone)","lastModifiedDate":"2023-10-05"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 email.equals(otherContact.email)","lastModifiedDate":"2023-10-05"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 address.equals(otherContact.address)","lastModifiedDate":"2023-10-05"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 url.equals(otherContact.url)","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"CJ-Lee01"},"content":" \u0026\u0026 tags.equals(otherContact.tags);","lastModifiedDate":"2023-10-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" throw new IllegalStateException(\"The equality comparison should be overriden by a subclass.\");","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" return Objects.hash(id, getType(), name, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" * Returns a builder for the {@link #toString} method of this class using {@code ToStringBuilder}.","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" * This can be overriden by subclasses to add properties to the builder.","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" * @return An instance of {@code ToStringBuilder} capable of crafting a string representation of this instance.","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" protected ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" .add(\"type\", getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" .add(\"url\", url)","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" .add(\"tags\", tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" return toStringBuilder().toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":34,"CJ-Lee01":35,"wxwern":32,"tanshiyu1999":2,"-":79}},{"path":"src/main/java/seedu/address/model/contact/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s email in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":77}},{"path":"src/main/java/seedu/address/model/contact/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.util.UUID;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" * Represents a Contact\u0027s unique Id in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidId(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"public class Id {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" \"Id should only contain alphanumeric characters, underscores and dashes, and it should not be blank\";","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * The first character of the id must not be a whitespace,","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-zA-Z0-9]([_\\\\-]?[a-zA-Z0-9])*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public final String value;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Id}.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * @param id A valid id.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public Id(String id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" value \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" * Constructs an autogenerated {@code Id}.","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public Id() {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" value \u003d UUID.randomUUID().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidId(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" return value;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" Id otherId \u003d (Id) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return value.equals(otherId.value);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":75}},{"path":"src/main/java/seedu/address/model/contact/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s name in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":1,"-":63}},{"path":"src/main/java/seedu/address/model/contact/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * Tests that a {@code Contact}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2023-10-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cContact\u003e {","lastModifiedDate":"2023-10-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" public boolean test(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(contact.getName().fullName, keyword));","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":4,"-":39}},{"path":"src/main/java/seedu/address/model/contact/Organization.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation in the address book.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" * Guarantees: Guarantees: name and id are present and not null,","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" * field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"public class Organization extends Contact {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" // TODO: Override the getChildren method","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cStatus\u003e status;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cPosition\u003e position;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" private final Set\u003cId\u003e rids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" public Organization(","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" Name name, Id id, Phone phone, Email email, Url url,","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" Address address, Set\u003cTag\u003e tags, Status status, Position position,","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" Set\u003cId\u003e rids","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" ) {","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" super(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" this.status \u003d Optional.ofNullable(status);","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" this.position \u003d Optional.ofNullable(position);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" this.rids.addAll(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" public Type getType() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" return Type.ORGANIZATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" return status;","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cPosition\u003e getPosition() {","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" return position;","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" * if modification is attempted.","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" public Set\u003cId\u003e getRecruiterIds() {","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" return Collections.unmodifiableSet(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" if (!(other instanceof Organization)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" Organization otherContact \u003d (Organization) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" return getId().equals(otherContact.getId())","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getType().equals(otherContact.getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getName().equals(otherContact.getName())","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getPhone().equals(otherContact.getPhone())","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getEmail().equals(otherContact.getEmail())","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getAddress().equals(otherContact.getAddress())","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getUrl().equals(otherContact.getUrl())","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 getTags().equals(otherContact.getTags())","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 status.equals(otherContact.status)","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" \u0026\u0026 position.equals(otherContact.position);","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" return Objects.hash(","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" getId(), getType(), getName(), getPhone(), getEmail(), getAddress(), getTags(), status, position","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" public ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" return super.toStringBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" .add(\"status\", status)","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" .add(\"position\", position);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":20,"CJ-Lee01":1,"wxwern":35,"tanshiyu1999":44}},{"path":"src/main/java/seedu/address/model/contact/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * Represents a Contact\u0027s phone number in the address book.","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":59}},{"path":"src/main/java/seedu/address/model/contact/Position.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation\u0027s position (that the user is applying to) in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class Position {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" \"Positions should only contain alphanumeric characters and spaces\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" /*","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public final String jobPosition;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code Position}.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * @param position A valid position.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public Position(String position) {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(position);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" checkArgument(isValidPosition(position), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" jobPosition \u003d position;","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Position}.","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" public Position() {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" jobPosition \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" public static boolean isValidPosition(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" if (!(other instanceof Position)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" Position otherPosition \u003d (Position) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition.equals(otherPosition.jobPosition);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" return jobPosition.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":9,"wxwern":2,"tanshiyu1999":61}},{"path":"src/main/java/seedu/address/model/contact/Recruiter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" * Represents a Recruiter in the address book.","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" * Guarantees: Guarantees: name and id are present and not null,","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" * field values are immutable and if present, are validated.","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"public class Recruiter extends Contact {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" private final Optional\u003cId\u003e oid;","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" * Name and id fields must be non-null.","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" * Tags must be non-null but can be empty as well.","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" * The other fields can be null.","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public Recruiter(Name name, Id id, Phone phone, Email email, Url url, Address address, Set\u003cTag\u003e tags, Id oid) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" super(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d Optional.ofNullable(oid);","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public Optional\u003cId\u003e getOrganizationId() {","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" return oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public Type getType() {","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return Type.RECRUITER;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls implicitly","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Recruiter)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" Recruiter otherContact \u003d (Recruiter) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" return getId().equals(otherContact.getId())","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getType().equals(otherContact.getType())","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getName().equals(otherContact.getName())","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getPhone().equals(otherContact.getPhone())","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getEmail().equals(otherContact.getEmail())","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getAddress().equals(otherContact.getAddress())","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getUrl().equals(otherContact.getUrl())","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 getTags().equals(otherContact.getTags())","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" \u0026\u0026 oid.equals(otherContact.oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" return Objects.hash(","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" getId(), getType(), getName(), getPhone(), getEmail(), getAddress(), getTags(), oid","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" public ToStringBuilder toStringBuilder() {","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" return super.toStringBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" .add(\"oid\", oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":73}},{"path":"src/main/java/seedu/address/model/contact/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents an Organisation\u0027s status in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPosition(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class Status {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" \"Status should only contain alphanumeric characters and spaces\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public final String applicationStatus;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Status}.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" * @param status A valid status.","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" public Status(String status) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" requireNonNull(status);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" applicationStatus \u003d status;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Status}.","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" public Status() {","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" applicationStatus \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid status.","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidStatus(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" if (!(other instanceof Position)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" Position otherPosition \u003d (Position) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus.equals(otherPosition.jobPosition);","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" return applicationStatus.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"McNaBry":13,"wxwern":2,"tanshiyu1999":54}},{"path":"src/main/java/seedu/address/model/contact/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.InvalidContactTypeStringException;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" * Represents the type of {@code Contact} instances.","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"public enum Type {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" ORGANIZATION(\"organization\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" RECRUITER(\"recruiter\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" UNKNOWN(\"unknown\");","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" private final String textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" Type(String textRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" this.textRepresentation \u003d textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * Returns the {@code ContactType} enum as a string representation. This is reversible, i.e., the string","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * representation here can be used to re-obtain the {@code ContactType} enum by using {@link #fromString}.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * @return A string representation of the contact type.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" return this.textRepresentation;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * Returns a corresponding {@code ContactType} enum value matching the given string representation of it.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * @param textRepresentation The text representation of the {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" * @return The corresponding {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" * @throws InvalidContactTypeStringException if the given input does not represent any known {@code ContactType}.","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" public static Type fromString(String textRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" for (Type type : Type.values()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" if (type.textRepresentation.equalsIgnoreCase(textRepresentation)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" return type;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" return UNKNOWN;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" // TODO: We should throw an exception instead like the below. We are using UNKNOWN for now for compatibility.","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" // throw new InvalidContactTypeStringException(textRepresentation);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":3,"wxwern":46}},{"path":"src/main/java/seedu/address/model/contact/UniqueContactList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * A list of contacts that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * A contact is considered unique by comparing using {@code Contact#isSameContact(Contact)}. As such, adding and","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * updating of contacts uses Contact#isSameContact(Contact) for equality so as to ensure that the contact being added or","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" * updated is unique in terms of identity in the UniqueContactList. However, the removal of a contact uses","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Contact#equals(Object) so as to ensure that the contact with exactly the same fields will be removed.","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" * @see Contact#isSameContact(Contact)","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":"public class UniqueContactList implements Iterable\u003cContact\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if the list contains an equivalent contact as the given argument.","lastModifiedDate":"2023-10-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" public boolean contains(Contact toCheck) {","lastModifiedDate":"2023-10-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" return internalList.stream().anyMatch(toCheck::isSameContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a contact to the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must not already exist in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" public void add(Contact toAdd) {","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contact {@code target} in the list with {@code editedContact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" * The contact identity of {@code editedContact} must not be the same as another existing contact in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(target, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" if (!target.isSameContact(editedContact) \u0026\u0026 contains(editedContact)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" internalList.set(index, editedContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * Removes the equivalent contact from the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * The contact must exist in the list.","lastModifiedDate":"2023-10-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" public void remove(Contact toRemove) {","lastModifiedDate":"2023-10-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" public void setContacts(UniqueContactList replacement) {","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * Replaces the contents of this list with {@code contacts}.","lastModifiedDate":"2023-10-05"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * {@code contacts} must not contain duplicate contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public void setContacts(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" requireAllNonNull(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" if (!contactsAreUnique(contacts)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" internalList.setAll(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2023-10-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" public Iterator\u003cContact\u003e iterator() {","lastModifiedDate":"2023-10-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" if (!(other instanceof UniqueContactList)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList otherUniqueContactList \u003d (UniqueContactList) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" return internalList.equals(otherUniqueContactList.internalList);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" * Returns true if {@code contacts} contains only unique contacts.","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" private boolean contactsAreUnique(List\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c contacts.size() - 1; i++) {","lastModifiedDate":"2023-10-05"},{"lineNumber":142,"author":{"gitId":"CJ-Lee01"},"content":" for (int j \u003d i + 1; j \u003c contacts.size(); j++) {","lastModifiedDate":"2023-10-05"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" if (contacts.get(i).isSameContact(contacts.get(j))) {","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"McNaBry":12,"CJ-Lee01":32,"-":106}},{"path":"src/main/java/seedu/address/model/contact/Url.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" * Represents a Contact\u0027s url in the address book.","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidUrl(String)}","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class Url {","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" \"Url should minimally contain a dot surrounded by text, like example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public static final String VALIDATION_REGEX \u003d \".+\\\\..+\";","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public final String value;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" * Constructs a {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" * @param url A valid url.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public Url(String url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" requireNonNull(url);","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" checkArgument(isValidUrl(url), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" value \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Constructs an empty {@code Url}.","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public Url() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" value \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" * Returns true if a given string is a valid url.","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public static boolean isValidUrl(String test) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return value;","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" if (!(other instanceof Url)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" Url otherName \u003d (Url) other;","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" return value.equals(otherName.value);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"McNaBry":69,"wxwern":1}},{"path":"src/main/java/seedu/address/model/contact/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Signals that the operation will result in duplicate Contacts (Contacts are considered duplicates if they have the","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" * same identity).","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" super(\"Operation would result in duplicate contacts\");","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":3,"-":7}},{"path":"src/main/java/seedu/address/model/contact/exceptions/InvalidContactTypeStringException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" * Signals that the given string representation of a {@code ContactType} enum is invalid, i.e., there are no","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * enum values with the given string representation.","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class InvalidContactTypeStringException extends RuntimeException {","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * Constructs an exception for invalid contact type string representations.","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * @param incorrectRepresentation The incorrect string representation used.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" public InvalidContactTypeStringException(String incorrectRepresentation) {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" super(String.format(\"\u0027%s\u0027 is not a valid contact type\", incorrectRepresentation));","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"McNaBry":1,"wxwern":16}},{"path":"src/main/java/seedu/address/model/contact/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact.exceptions;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Signals that the operation is unable to find the specified contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":1,"-":4}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public static Contact[] getSampleContacts() {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" return new Contact[] {","lastModifiedDate":"2023-10-05"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Alex Yeoh Inc\"), new Id(\"alex_yeoh_inc\"), new Phone(\"87438807\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" new Email(\"contact@alexyeoh.example.com\"), new Url(\"alexyeoh.example.com\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" null, getTagSet(\"parttime\"), new Status(\"interested\"), null, Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Google\"), new Id(\"google\"), new Phone(\"65218000\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" new Url(\"careers.google.com\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" new Address(\"70 Pasir Panjang Road, #03-71, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" + \"Mapletree Business City, \"","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" + \"Singapore 117371\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" getTagSet(\"bigtech\", \"internship\", \"competitive\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" new Status(\"applied\"), new Position(\"Software Engineer\"), Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" new Organization(new Name(\"Job Seeker Plus\"), new Id(\"job_seeker_plus\"), new Phone(\"93210283\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" new Email(\"jobseekerplus@example.com\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" new Address(\"Blk 16 Real Street 128, #08-04\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" getTagSet(\"startup\", \"internship\"), null, null, Set.of()),","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" new Recruiter(new Name(\"David Li\"), new Id(\"david_li\"), new Phone(\"91031282\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" new Email(\"davidli@alexyeoh.example.com\"), null,","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" getTagSet(\"direct\", \"network\"), new Id(\"alex_yeoh_inc\")),","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" new Recruiter(new Name(\"Roy Balakrishnan\"), new Id(\"roy_balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" new Email(\"royb@example.com\"), new Url(\"www.nus.edu.sg\"),","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" null, getTagSet(\"friendly\"), null)","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" for (Contact sampleContact : getSampleContacts()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" sampleAb.addContact(sampleContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" * Returns a id set containing the list of strings given.","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" public static Set\u003cId\u003e getIdSet(String... strings) {","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" .map(Id::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"McNaBry":12,"CJ-Lee01":4,"wxwern":20,"tanshiyu1999":9,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Type;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" * Jackson-friendly version of {@link Contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":"class JsonAdaptedContact {","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Contact\u0027s %s field is missing!\";","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" private final String type;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" private String status;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" private String position;","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" private final String id;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" private final String url;","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" private String oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code JsonAdaptedContact} with the given contact details.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" @JsonCreator","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public JsonAdaptedContact(@JsonProperty(\"type\") String type,","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"id\") String id,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" @JsonProperty(\"url\") String url, @JsonProperty(\"address\") String address,","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" @JsonProperty(\"status\") String status, @JsonProperty(\"position\") String position,","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" @JsonProperty(\"oid\") String oid, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url;","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" this.status \u003d status;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" this.position \u003d position;","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * Converts a given {@code Contact} into this class for Jackson use.","lastModifiedDate":"2023-10-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public JsonAdaptedContact(Contact source) {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" if (source.getType() \u003d\u003d Type.ORGANIZATION) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Organization organization \u003d (Organization) source;","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" status \u003d organization.getStatus()","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" .map(status -\u003e status.applicationStatus)","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" position \u003d organization.getPosition()","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" .map(position -\u003e position.jobPosition)","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" oid \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" } else if (source.getType() \u003d\u003d Type.RECRUITER) {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d (Recruiter) source;","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" status \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" position \u003d \"\";","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" oid \u003d recruiter.getOrganizationId()","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" .map(oid -\u003e oid.value)","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" .orElse(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" type \u003d source.getType().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" id \u003d source.getId().value;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" phone \u003d source.getPhone().map(phone -\u003e phone.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" email \u003d source.getEmail().map(email -\u003e email.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" url \u003d source.getUrl().map(url -\u003e url.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" address \u003d source.getAddress().map(address -\u003e address.value).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" * Converts this Jackson-friendly adapted contact object into the model\u0027s {@code Contact} object.","lastModifiedDate":"2023-10-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" public Contact toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" final List\u003cTag\u003e contactTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" contactTags.add(tag.toModelType());","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" // Type#fromString implicitly returns UNKNOWN if type is null. May change if UNKNOWN is removed in the future.","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" final Type modelType \u003d Type.fromString(type);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" if (id \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Id.class.getSimpleName()));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" if (!Id.isValidId(id)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" final Id modelId \u003d new Id(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" if (phone !\u003d null \u0026\u0026 !Phone.isValidPhone(phone)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" final Phone modelPhone \u003d phone \u003d\u003d null ? null : new Phone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" if (email !\u003d null \u0026\u0026 !Email.isValidEmail(email)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" final Email modelEmail \u003d email \u003d\u003d null ? null : new Email(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" if (url !\u003d null \u0026\u0026 !Url.isValidUrl(url)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" final Url modelUrl \u003d url \u003d\u003d null ? null : new Url(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" if (address !\u003d null \u0026\u0026 !Address.isValidAddress(address)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" final Address modelAddress \u003d address \u003d\u003d null ? null : new Address(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"CJ-Lee01"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(contactTags);","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" switch (modelType) {","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" case ORGANIZATION: {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" final Set\u003cId\u003e modelRids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" if (status !\u003d null \u0026\u0026 !Status.isValidStatus(status)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" final Status modelStatus \u003d status \u003d\u003d null ? new Status() : new Status(status);","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" if (position !\u003d null \u0026\u0026 !Position.isValidPosition(position)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Position.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" final Position modelPosition \u003d position \u003d\u003d null ? new Position() : new Position(position);","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" return new Organization(","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress,","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"tanshiyu1999"},"content":" modelTags, modelStatus, modelPosition, modelRids","lastModifiedDate":"2023-10-19"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"McNaBry"},"content":" case RECRUITER: {","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" if (oid !\u003d null \u0026\u0026 !Id.isValidId(oid)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":183,"author":{"gitId":"McNaBry"},"content":" final Id modelOid \u003d oid \u003d\u003d null ? null : new Id(oid);","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"McNaBry"},"content":" modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress,","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"McNaBry"},"content":" modelTags, modelOid","lastModifiedDate":"2023-10-17"},{"lineNumber":188,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"McNaBry"},"content":" return new Contact(modelName, modelId, modelPhone, modelEmail, modelUrl, modelAddress, modelTags);","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":79,"CJ-Lee01":11,"wxwern":24,"tanshiyu1999":23,"-":58}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * Jackson-friendly version of {@link Id}.","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"class JsonAdaptedId {","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" private final String idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" * Constructs a {@code JsonAdaptedId} with the given {@code idName}.","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" @JsonCreator","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public JsonAdaptedId(String idName) {","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" this.idName \u003d idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Converts a given {@code Id} into this class for Jackson use.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public JsonAdaptedId(Id source) {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" idName \u003d source.value;","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" @JsonValue","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" public String getIdName() {","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" return idName;","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Id} object.","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" *","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" public Id toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" if (!Id.isValidId(idName)) {","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" throw new IllegalValueException(Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" return new Id(idName);","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":1,"tanshiyu1999":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" public static final String MESSAGE_DUPLICATE_CONTACT \u003d \"Contacts list contains duplicate contact(s).\";","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private final List\u003cJsonAdaptedContact\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedContact\u003e persons) {","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" persons.addAll(source.getContactList().stream().map(JsonAdaptedContact::new).collect(Collectors.toList()));","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" for (JsonAdaptedContact jsonAdaptedContact : persons) {","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" Contact contact \u003d jsonAdaptedContact.toModelType();","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" if (addressBook.hasContact(contact)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":9,"-":50}},{"path":"src/main/java/seedu/address/ui/ContactCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.function.Supplier;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * An UI component that displays information of a {@code Contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FXML \u003d \"ContactListCard.fxml\";","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX. As a consequence, UI","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" * elements\u0027 variable names cannot be set to such keywords or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" public final Contact contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" private VBox cardPaneInnerVbox;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" private Label index;","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" private Label linkedParentOrganization;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" private Label status;","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" private Label position;","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" private Label url;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a {@code PersonCode} with the given {@code Contact} and index to display.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" public ContactCard(Contact contact, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" this.contact \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" index.setText(String.format(\"%d. \", displayedIndex));","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" id.setText(contact.getId().value);","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" name.setText(contact.getName().fullName);","lastModifiedDate":"2023-10-05"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" final Label typeLabel \u003d new Label(contact.getType().toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" typeLabel.setId(\"type\");","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" tags.getChildren().add(typeLabel); // add it to the front of tags","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" phone, () -\u003e contact.getPhone().map(phone -\u003e phone.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" address, () -\u003e contact.getAddress().map(address -\u003e address.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" email, () -\u003e contact.getEmail().map(email -\u003e email.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" url, () -\u003e contact.getUrl().map(url -\u003e url.value).orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" switch (contact.getType()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" case ORGANIZATION: {","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" Organization organization \u003d (Organization) contact;","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" final String statusString \u003d organization.getStatus()","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" .map(status -\u003e status.applicationStatus).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" final String positionString \u003d organization.getPosition()","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" .map(position -\u003e position.jobPosition).orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" status, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" StringUtil.formatWithNullFallback(\"Application Status: %s\", statusString));","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" position, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" StringUtil.formatWithNullFallback(\"Job Position: %s\", positionString));","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().remove(linkedParentOrganization);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" case RECRUITER: {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" Recruiter recruiter \u003d (Recruiter) contact;","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" final Optional\u003cId\u003e linkedOrgId \u003d recruiter.getOrganizationId();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" setVboxInnerLabelText(","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" linkedParentOrganization, () -\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" linkedOrgId.map(oid -\u003e String.format(","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" \"from %s (%s)\", \"organization\" /* TODO: Use org name instead */, oid.value))","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" .orElse(null)","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().removeAll(status, position);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().removeAll(status, position, linkedParentOrganization);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().stream()","lastModifiedDate":"2023-10-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" * Configures the inner label contained within the vbox container to show the given string, or remove the label","lastModifiedDate":"2023-10-19"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" * entirely if the string is empty or null.","lastModifiedDate":"2023-10-19"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" * @param label The label to set the text to.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" * @param valueSupplier The string value supplier. This may be expressed as a lambda function.","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" private void setVboxInnerLabelText(Label label, Supplier\u003cString\u003e valueSupplier) {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" if (label \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" String value \u003d valueSupplier.get();","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" if (value \u003d\u003d null || value.isBlank()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" label.setText(null);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" cardPaneInnerVbox.getChildren().remove(label);","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" label.setText(value);","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":29,"CJ-Lee01":9,"wxwern":67,"-":42}},{"path":"src/main/java/seedu/address/ui/ContactListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * Panel containing the list of contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FXML \u003d \"ContactListPanel.fxml\";","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ContactListPanel.class);","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" private ListView\u003cContact\u003e contactListView;","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a {@code ContactListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public ContactListPanel(ObservableList\u003cContact\u003e contactList) {","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" contactListView.setItems(contactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" contactListView.setCellFactory(listView -\u003e new ContactListViewCell());","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Contact} using a {@code ContactCard}.","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" class ContactListViewCell extends ListCell\u003cContact\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" protected void updateItem(Contact contact, boolean empty) {","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" super.updateItem(contact, empty);","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" if (empty || contact \u003d\u003d null) {","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" setGraphic(new ContactCard(contact, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":15,"-":33}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" public static final String USERGUIDE_URL \u003d \"https://AY2324S1-CS2103T-W08-3.github.io/tp/UserGuide\"","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" + \".html\";","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"wxwern":2,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" private ContactListPanel contactListPanel;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" private StackPane contactListPanelPlaceholder;","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" contactListPanel \u003d new ContactListPanel(logic.getFilteredContactList());","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" contactListPanelPlaceholder.getChildren().add(contactListPanel.getRoot());","lastModifiedDate":"2023-10-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":166,"author":{"gitId":"CJ-Lee01"},"content":" public ContactListPanel getContactListPanel() {","lastModifiedDate":"2023-10-07"},{"lineNumber":167,"author":{"gitId":"CJ-Lee01"},"content":" return contactListPanel;","lastModifiedDate":"2023-10-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"McNaBry":1,"CJ-Lee01":5,"-":190}},{"path":"src/main/resources/view/ContactListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" \u003cVBox fx:id\u003d\"cardPaneInnerVbox\" alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"linkedParentOrganization\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$linkedOrganization\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"url\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$url\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" \u003cLabel fx:id\u003d\"position\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$position\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"wxwern":8,"-":33}},{"path":"src/main/resources/view/ContactListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" \u003cListView fx:id\u003d\"contactListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":".label#id {","lastModifiedDate":"2023-10-17"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" -fx-text-fill: #d0d0d088;","lastModifiedDate":"2023-10-17"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" -fx-font-size: 10px;","lastModifiedDate":"2023-10-17"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" -fx-font-style: italic;","lastModifiedDate":"2023-10-17"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-17"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":360,"author":{"gitId":"wxwern"},"content":"#tags .label#type {","lastModifiedDate":"2023-10-17"},{"lineNumber":361,"author":{"gitId":"wxwern"},"content":" -fx-background-color: #3f917e;","lastModifiedDate":"2023-10-17"},{"lineNumber":362,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"McNaBry":1,"wxwern":10,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" title\u003d\"Jobby\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" minHeight\u003d\"150\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" \u003cVBox fx:id\u003d\"contactList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \u003cStackPane fx:id\u003d\"contactListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"McNaBry":2,"CJ-Lee01":1,"wxwern":1,"-":56}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" wrapText\u003d\"true\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2023-10-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"McNaBry":1,"-":8}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" final Index fifthContactIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertTrue(fifthContactIndex.equals(fifthContactIndex));","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(null));","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(5.0f));","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" assertFalse(fifthContactIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"McNaBry":7,"-":60}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.URL_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.AMY;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"jobby.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, model);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" public void getFilteredContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredContactList().remove(0));","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + ID_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + URL_DESC_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" expectedModel.addContact(expectedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"McNaBry":11,"wxwern":3,"wamps-jp":1,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" public void execute_newContact_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().withId(\"valid-contact\").build();","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" expectedModel.addContact(validContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandSuccess(new AddCommand(validContact), model,","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validContact)),","lastModifiedDate":"2023-10-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContact_throwsCommandException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" Contact contactInList \u003d model.getAddressBook().getContactList().get(0);","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(new AddCommand(contactInList), model,","lastModifiedDate":"2023-10-05"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" AddCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"McNaBry":8,"CJ-Lee01":4,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void constructor_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public void execute_contactAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" ModelStubAcceptingContactAdded modelStub \u003d new ModelStubAcceptingContactAdded();","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" CommandResult commandResult \u003d new AddCommand(validContact).execute(modelStub);","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validContact)),","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" assertEquals(Arrays.asList(validContact), modelStub.contactsAdded);","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicatecontact_throwsCommandException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" Contact validContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" AddCommand addCommand \u003d new AddCommand(validContact);","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" ModelStub modelStub \u003d new ModelStubWithContact(validContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_CONTACT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" Contact alice \u003d new ContactBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" Contact bob \u003d new ContactBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" public void deleteContact(Contact target) {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" public void setContact(Contact target, Contact editedContact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"CJ-Lee01"},"content":" public Contact getContactById(Id id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" public ObservableList\u003cContact\u003e getFilteredContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" public void updateFilteredContactList(Predicate\u003cContact\u003e predicate) {","lastModifiedDate":"2023-10-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"CJ-Lee01"},"content":" * A Model stub that contains a single contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" private class ModelStubWithContact extends ModelStub {","lastModifiedDate":"2023-10-07"},{"lineNumber":172,"author":{"gitId":"CJ-Lee01"},"content":" private final Contact contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" ModelStubWithContact(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":175,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":176,"author":{"gitId":"CJ-Lee01"},"content":" this.contact \u003d contact;","lastModifiedDate":"2023-10-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":181,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" return this.contact.isSameContact(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"CJ-Lee01"},"content":" * A Model stub that always accept the contact being added.","lastModifiedDate":"2023-10-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" private class ModelStubAcceptingContactAdded extends ModelStub {","lastModifiedDate":"2023-10-07"},{"lineNumber":190,"author":{"gitId":"McNaBry"},"content":" final ArrayList\u003cContact\u003e contactsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"McNaBry"},"content":" public boolean hasContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":195,"author":{"gitId":"McNaBry"},"content":" return contactsAdded.stream().anyMatch(contact::isSameContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"McNaBry"},"content":" public void addContact(Contact contact) {","lastModifiedDate":"2023-10-06"},{"lineNumber":200,"author":{"gitId":"CJ-Lee01"},"content":" requireNonNull(contact);","lastModifiedDate":"2023-10-05"},{"lineNumber":201,"author":{"gitId":"McNaBry"},"content":" contactsAdded.add(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"McNaBry":31,"CJ-Lee01":13,"-":166}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"McNaBry":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_ID_AMY \u003d \"3a6e0af8-5092-47c0-baf7-18d6dc535823\";","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_ID_BOB \u003d \"18dfa74c-2229-4f4f-99a5-336c25e6783e\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" public static final String VALID_URL_AMY \u003d \"amy.example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" public static final String VALID_URL_BOB \u003d \"https://bob.example.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_STATUS_BOB \u003d \"Applied\";","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_POSITION_BOB \u003d \"Junior Developer\";","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public static final String VALID_OID_AMY \u003d \"amy_corp-inc\";","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + FLAG_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + FLAG_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" public static final String ID_DESC_AMY \u003d \" \" + FLAG_ID + \" \" + VALID_ID_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public static final String ID_DESC_BOB \u003d \" \" + FLAG_ID + \" \" + VALID_ID_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + FLAG_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + FLAG_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + FLAG_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + FLAG_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + FLAG_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + FLAG_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" public static final String URL_DESC_AMY \u003d \" \" + FLAG_URL + \" \" + VALID_URL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" public static final String URL_DESC_BOB \u003d \" \" + FLAG_URL + \" \" + VALID_URL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + FLAG_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + FLAG_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + FLAG_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_ID_DESC \u003d \" \" + FLAG_ID + \" \" + \"e91724\u0026_18273\"; // \u0027\u0026\u0027 not allowed in ids","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + FLAG_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + FLAG_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + FLAG_ADDRESS + \" \"; // address cannot be empty string","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_URL_DESC \u003d \" \" + FLAG_URL + \" \" + \"asdfjkl\";","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + FLAG_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" public static final EditCommand.EditContactDescriptor DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" public static final EditCommand.EditContactDescriptor DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" DESC_AMY \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" DESC_BOB \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" * - the address book, filtered contact list and selected contact in {@code actualModel} remain unchanged","lastModifiedDate":"2023-10-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" List\u003cContact\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" * Updates {@code model}\u0027s filtered list to show only the contact at the given {@code targetIndex} in the","lastModifiedDate":"2023-10-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" public static void showContactAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2023-10-07"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d model.getFilteredContactList().get(targetIndex.getZeroBased());","lastModifiedDate":"2023-10-06"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" final String[] splitName \u003d contact.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2023-10-05"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" assertEquals(1, model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"McNaBry":19,"CJ-Lee01":5,"wxwern":30,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" Contact contactToDelete \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete));","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" expectedModel.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredContactList().size() + 1);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" Contact contactToDelete \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(contactToDelete));","lastModifiedDate":"2023-10-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" expectedModel.deleteContact(contactToDelete);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" showNoContact(expectedModel);","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" private void showNoContact(Model model) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" model.updateFilteredContactList(p -\u003e false);","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" assertTrue(model.getFilteredContactList().isEmpty());","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"McNaBry":26,"CJ-Lee01":4,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(editedContact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" .format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS, Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(model.getFilteredContactList().get(0), editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" Index indexLastContact \u003d Index.fromOneBased(model.getFilteredContactList().size());","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" Contact lastContact \u003d model.getFilteredContactList().get(indexLastContact.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" ContactBuilder contactInList \u003d new ContactBuilder(lastContact);","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d contactInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastContact, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(lastContact, editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, new EditContactDescriptor());","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" Contact contactInFilteredList \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Contact editedContact \u003d new ContactBuilder(contactInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_CONTACT_SUCCESS,","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" Messages.format(editedContact));","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" expectedModel.setContact(model.getFilteredContactList().get(0), editedContact);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContactUnfilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Contact firstContact \u003d model.getFilteredContactList().get(INDEX_FIRST_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(firstContact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_CONTACT, descriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" public void execute_duplicateContactFilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" // edit contact in filtered list into a duplicate in address book","lastModifiedDate":"2023-10-05"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" Contact contactInList \u003d model.getAddressBook().getContactList().get(INDEX_SECOND_CONTACT.getZeroBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder(contactInList).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_CONTACT);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" public void execute_invalidContactIndexUnfilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredContactList().size() + 1);","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" public void execute_invalidContactIndexFilteredList_failure() {","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" new EditContactDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CONTACT_DISPLAYED_INDEX);","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_CONTACT, DESC_AMY);","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor copyDescriptor \u003d new EditContactDescriptor(DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_CONTACT, copyDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_CONTACT, DESC_AMY)));","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_CONTACT, DESC_BOB)));","lastModifiedDate":"2023-10-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" EditCommand editCommand \u003d new EditCommand(index, editContactDescriptor);","lastModifiedDate":"2023-10-07"},{"lineNumber":183,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editContactDescriptor\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor + \"}\";","lastModifiedDate":"2023-10-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"McNaBry":51,"CJ-Lee01":15,"-":122}},{"path":"src/test/java/seedu/address/logic/commands/EditContactDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"public class EditContactDescriptorTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" EditContactDescriptor descriptorWithSameValues \u003d new EditContactDescriptor(DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" editedAmy \u003d new EditContactDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor editContactDescriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d EditContactDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" + editContactDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, editContactDescriptor.toString());","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"McNaBry":13,"CJ-Lee01":4,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONTACTS_LISTED_OVERVIEW;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.CARL;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ELLE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.FIONA;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public void execute_zeroKeywords_noContactFound() {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(MESSAGE_CONTACTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" expectedModel.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" assertEquals(Collections.emptyList(), model.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" public void execute_multipleKeywords_multipleContactsFound() {","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" String expectedMessage \u003d String.format(MESSAGE_CONTACTS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" expectedModel.updateFilteredContactList(predicate);","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":14,"CJ-Lee01":1,"-":76}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showContactAtIndex;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_ORGANIZATIONS;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ONLY_RECRUITERS;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(new ListCommand(PREDICATE_SHOW_ALL_CONTACTS), model,","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"wamps-jp"},"content":" ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" showContactAtIndex(model, INDEX_FIRST_CONTACT);","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"wamps-jp"},"content":" assertCommandSuccess(new ListCommand(PREDICATE_SHOW_ALL_CONTACTS),","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"wamps-jp"},"content":" model, ListCommand.MESSAGE_SUCCESS_ALL_CONTACTS, expectedModel);","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"wamps-jp"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"wamps-jp"},"content":" public void equals() {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"wamps-jp"},"content":" ListCommand showAllListCommand \u003d new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"wamps-jp"},"content":" ListCommand organizationListCommand \u003d new ListCommand(PREDICATE_SHOW_ONLY_ORGANIZATIONS);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"wamps-jp"},"content":" ListCommand recruiterListCommand \u003d new ListCommand(PREDICATE_SHOW_ONLY_RECRUITERS);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"wamps-jp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"wamps-jp"},"content":" assertTrue(showAllListCommand.equals(showAllListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"wamps-jp"},"content":" assertTrue(organizationListCommand.equals(organizationListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"wamps-jp"},"content":" assertTrue(recruiterListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"wamps-jp"},"content":" // same predicate -\u003e returns true","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"wamps-jp"},"content":" ListCommand showAllListCommandCopy \u003d new ListCommand(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"wamps-jp"},"content":" assertTrue(showAllListCommand.equals(showAllListCommandCopy));","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"wamps-jp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(1));","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"wamps-jp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(null));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"wamps-jp"},"content":" // different predicate -\u003e returns false","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(organizationListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"wamps-jp"},"content":" assertFalse(showAllListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"wamps-jp"},"content":" assertFalse(organizationListCommand.equals(recruiterListCommand));","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":4,"wamps-jp":35,"-":34}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_URL_DESC;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.URL_DESC_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.AMY;","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" + ADDRESS_DESC_BOB + URL_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedContact));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" Contact expectedContactMultipleTags \u003d new ContactBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" + URL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" new AddCommand(expectedContactMultipleTags));","lastModifiedDate":"2023-10-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" String validExpectedContactString \u003d NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" // multiple ids","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, ID_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ID));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" validExpectedContactString + ID_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + ADDRESS_DESC_AMY + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME, FLAG_ID, FLAG_ADDRESS, FLAG_EMAIL, FLAG_PHONE));","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" // invalid id","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_ID_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ID));","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedContactString,","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_NAME));","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_EMAIL));","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, validExpectedContactString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" // zero tags, no url","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" Contact expectedContact \u003d new ContactBuilder(AMY).withUrl(null).withTags().build();","lastModifiedDate":"2023-10-19"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" assertParseSuccess(","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" parser,","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" NAME_DESC_AMY + ID_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" new AddCommand(expectedContact)","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" // missing name flag","lastModifiedDate":"2023-10-10"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, VALID_NAME_BOB, expectedMessage);","lastModifiedDate":"2023-10-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" // invalid id","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_ID_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Id.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" // invalid url","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2023-10-17"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" + INVALID_URL_DESC, Url.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"McNaBry"},"content":" + INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"McNaBry"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + ID_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"McNaBry":53,"CJ-Lee01":1,"wxwern":33,"-":118}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactUtil;","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(ContactUtil.getAddCommand(contact));","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(new AddCommand(contact), command);","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_CONTACT.getOneBased());","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_CONTACT), command);","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder(contact).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" + INDEX_FIRST_CONTACT.getOneBased() + \" \" + ContactUtil.getEditContactDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" assertEquals(new EditCommand(INDEX_FIRST_CONTACT, descriptor), command);","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"McNaBry":14,"CJ-Lee01":2,"-":85}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentMultimapTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-18"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-18"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-18"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-18"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-18"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-18"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"public class ArgumentMultimapTest {","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_A \u003d new Flag(\"aaa\");","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_B \u003d new Flag(\"bbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_C \u003d new Flag(\"ccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" private static final Flag FLAG_D \u003d new Flag(\"ddd\");","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" public void hasFlag_existingFlagsSet_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" // Will return true if value is set","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" // Adding more inputs don\u0027t impact the result","lastModifiedDate":"2023-10-18"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"blah\");","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" zzzzz \");","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" test\");","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"contact \");","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasFlag(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public void hasFlag_missingFlag_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" // Empty map trivially doesn\u0027t have the value","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" // Nonempty map but target value not present","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbbbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" // Subsequent additions without adding target value will not change result","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"ccccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasFlag(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public void hasAllOfFlags_completeMatch_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"aaa\");","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"ccc\");","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags()); // Trivially, any map will contain every element in an empty list [].","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_C, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAllOfFlags()); // Similar to above, it has all elements in [].","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" public void hasAllOfFlags_partialOrNoMatch_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A\");","lastModifiedDate":"2023-10-18"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAllOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" public void hasAnyOfFlags_partialOrCompleteMatch_trueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"123\");","lastModifiedDate":"2023-10-18"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"456\");","lastModifiedDate":"2023-10-18"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"789\");","lastModifiedDate":"2023-10-18"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasAnyOfFlags(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" // - An empty map will never have a partial or complete match.","lastModifiedDate":"2023-10-18"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" public void hasAnyOfFlags_noMatch_falseReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" // Populated map","lastModifiedDate":"2023-10-18"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"000\");","lastModifiedDate":"2023-10-18"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags()); // Trivially, any map will not contain any elements from empty list [].","lastModifiedDate":"2023-10-18"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" // Empty map","lastModifiedDate":"2023-10-18"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags()); // Similar to above, it will not have any elements in [].","lastModifiedDate":"2023-10-18"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasAnyOfFlags(FLAG_C, FLAG_B, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" public void hasNonEmptyValue_nonEmpty_returnsTrue() {","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"AAA\");","lastModifiedDate":"2023-10-18"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"CC1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"CC2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasNonEmptyValue(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.hasNonEmptyValue(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" public void hasNonEmptyValue_noFlagOrEmpty_returnsFalse() {","lastModifiedDate":"2023-10-18"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"AAA\");","lastModifiedDate":"2023-10-18"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" assertFalse(multimap.hasNonEmptyValue(FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" public void getValue_notPresent_emptyOptionalReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" // Empty map trivially doesn\u0027t have the value","lastModifiedDate":"2023-10-18"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" // Nonempty map but target value not present","lastModifiedDate":"2023-10-18"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"some data\");","lastModifiedDate":"2023-10-18"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" // Subsequent additions without adding target value will not change result","lastModifiedDate":"2023-10-18"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"some more data\");","lastModifiedDate":"2023-10-18"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" public void getValue_existingValuesSet_lastValueReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" // Will return a value if that is set","lastModifiedDate":"2023-10-18"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" assertEquals(\"a value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" // More than one inputs cause it to return the last one.","lastModifiedDate":"2023-10-18"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2nd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3rd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" assertEquals(\"3rd value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags and whitespace checks","lastModifiedDate":"2023-10-18"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\\t testing A \");","lastModifiedDate":"2023-10-18"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 123 \\n\");","lastModifiedDate":"2023-10-18"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 456\\r\\n \");","lastModifiedDate":"2023-10-18"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \" CC \");","lastModifiedDate":"2023-10-18"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_C).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" assertEquals(\"testing A\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" assertEquals(\"testing B 456\", multimap.getValue(FLAG_B).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" assertEquals(\"CC\", multimap.getValue(FLAG_C).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" A2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B2 value \");","lastModifiedDate":"2023-10-18"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" \"); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":232,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":234,"author":{"gitId":"wxwern"},"content":" assertEquals(\"A2 value\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":235,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getValue(FLAG_B).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":237,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":238,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getValue(FLAG_A).get());","lastModifiedDate":"2023-10-18"},{"lineNumber":239,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":240,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":241,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":242,"author":{"gitId":"wxwern"},"content":" public void getAllValues_existingValuesSet_allValuesReturned() {","lastModifiedDate":"2023-10-18"},{"lineNumber":243,"author":{"gitId":"wxwern"},"content":" // Will return a value if that is set","lastModifiedDate":"2023-10-18"},{"lineNumber":244,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":246,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":247,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"a value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":248,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":249,"author":{"gitId":"wxwern"},"content":" // More than one inputs cause it to return the last one.","lastModifiedDate":"2023-10-18"},{"lineNumber":250,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"2nd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":251,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"3rd value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":252,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"a value\", \"2nd value\", \"3rd value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":253,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":254,"author":{"gitId":"wxwern"},"content":" // Some test cases with more flags and whitespace checks","lastModifiedDate":"2023-10-18"},{"lineNumber":255,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":256,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\\t testing A \");","lastModifiedDate":"2023-10-18"},{"lineNumber":257,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 123 \\n\");","lastModifiedDate":"2023-10-18"},{"lineNumber":258,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"testing B 456\\r\\n \");","lastModifiedDate":"2023-10-18"},{"lineNumber":259,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \" CC \");","lastModifiedDate":"2023-10-18"},{"lineNumber":260,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":261,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"testing A\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":262,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"testing B 123\", \"testing B 456\"), multimap.getAllValues(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"CC\"), multimap.getAllValues(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":264,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":" multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":267,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B1 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":268,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" A2 value\");","lastModifiedDate":"2023-10-18"},{"lineNumber":269,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B2 value \");","lastModifiedDate":"2023-10-18"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \" \"); // Empty value.","lastModifiedDate":"2023-10-18"},{"lineNumber":271,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_A).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getValue(FLAG_B).isPresent());","lastModifiedDate":"2023-10-18"},{"lineNumber":273,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"A1 value\", \"A2 value\"), multimap.getAllValues(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":" assertEquals(List.of(\"B1 value\", \"B2 value\", \"\"), multimap.getAllValues(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":275,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":276,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":277,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":278,"author":{"gitId":"wxwern"},"content":" public void getPreamble_noPreambleSet_returnsEmptyString() {","lastModifiedDate":"2023-10-18"},{"lineNumber":279,"author":{"gitId":"wxwern"},"content":" // Empty map has no preamble.","lastModifiedDate":"2023-10-18"},{"lineNumber":280,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":" // Setting a preamble, then removing it, will remove the preamble.","lastModifiedDate":"2023-10-18"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"testing\");","lastModifiedDate":"2023-10-18"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":292,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":293,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":294,"author":{"gitId":"wxwern"},"content":" // Similarly for setting to an empty string. Whitespace is trimmed.","lastModifiedDate":"2023-10-18"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":" assertNotNull(multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":298,"author":{"gitId":"wxwern"},"content":" assertTrue(multimap.getPreamble().isEmpty());","lastModifiedDate":"2023-10-18"},{"lineNumber":299,"author":{"gitId":"wxwern"},"content":" assertEquals(\"\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":300,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":" public void getPreamble_preambleSet_returnsPreamble() {","lastModifiedDate":"2023-10-18"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":" // Setting a preamble will give you that one.","lastModifiedDate":"2023-10-18"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":305,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"preamble val\");","lastModifiedDate":"2023-10-18"},{"lineNumber":306,"author":{"gitId":"wxwern"},"content":" assertEquals(\"preamble val\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":307,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":308,"author":{"gitId":"wxwern"},"content":" // Setting a new preamble will replace the old one.","lastModifiedDate":"2023-10-18"},{"lineNumber":309,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"preamble val 2.0\");","lastModifiedDate":"2023-10-18"},{"lineNumber":310,"author":{"gitId":"wxwern"},"content":" assertEquals(\"preamble val 2.0\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":311,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":312,"author":{"gitId":"wxwern"},"content":" // Removing the reamble, then setting it again, will have the new one.","lastModifiedDate":"2023-10-18"},{"lineNumber":313,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(null);","lastModifiedDate":"2023-10-18"},{"lineNumber":314,"author":{"gitId":"wxwern"},"content":" multimap.putPreamble(\"who\u0027s this\");","lastModifiedDate":"2023-10-18"},{"lineNumber":315,"author":{"gitId":"wxwern"},"content":" assertEquals(\"who\u0027s this\", multimap.getPreamble());","lastModifiedDate":"2023-10-18"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":317,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":318,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":319,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":320,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor_noDuplicates_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":321,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":322,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":323,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":324,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":325,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":326,"author":{"gitId":"wxwern"},"content":" // If we don\u0027t check C, it doesn\u0027t matter","lastModifiedDate":"2023-10-18"},{"lineNumber":327,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":328,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":329,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":330,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":331,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":332,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":333,"author":{"gitId":"wxwern"},"content":" public void verifyNoDuplicateFlagsFor_hasDuplicates_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":334,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":335,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":336,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":337,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"c2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":338,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":339,"author":{"gitId":"wxwern"},"content":" // If we do check C, we must throw an exception","lastModifiedDate":"2023-10-18"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoDuplicateFlagsFor(FLAG_A, FLAG_B, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":346,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":347,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":348,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf_noExtras_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":349,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":350,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":351,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":352,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":353,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":354,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_B)); // exact match is ok","lastModifiedDate":"2023-10-18"},{"lineNumber":355,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_B, FLAG_C)); // superset is ok","lastModifiedDate":"2023-10-18"},{"lineNumber":356,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":357,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":358,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":359,"author":{"gitId":"wxwern"},"content":" public void verifyNoExtraneousFlagsOnTopOf_hasExtras_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":360,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":361,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"a\");","lastModifiedDate":"2023-10-18"},{"lineNumber":362,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b1\");","lastModifiedDate":"2023-10-18"},{"lineNumber":363,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"b2\");","lastModifiedDate":"2023-10-18"},{"lineNumber":364,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":365,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A)); // extra B","lastModifiedDate":"2023-10-18"},{"lineNumber":366,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_B)); // extra A","lastModifiedDate":"2023-10-18"},{"lineNumber":367,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_C)); // extra A, B","lastModifiedDate":"2023-10-18"},{"lineNumber":368,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_A, FLAG_C)); // extra B","lastModifiedDate":"2023-10-18"},{"lineNumber":369,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyNoExtraneousFlagsOnTopOf(FLAG_B, FLAG_C)); // extra A","lastModifiedDate":"2023-10-18"},{"lineNumber":370,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":371,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":372,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":373,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":374,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor_allEmpty_exceptionNotThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":375,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":376,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":377,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":378,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, null);","lastModifiedDate":"2023-10-18"},{"lineNumber":379,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":380,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"bbb\");","lastModifiedDate":"2023-10-18"},{"lineNumber":381,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_C, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":382,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":383,"author":{"gitId":"wxwern"},"content":" // A, C, D are empty","lastModifiedDate":"2023-10-18"},{"lineNumber":384,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":385,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":386,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":387,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":388,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":389,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":390,"author":{"gitId":"wxwern"},"content":" assertDoesNotThrow(() -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C, FLAG_D));","lastModifiedDate":"2023-10-18"},{"lineNumber":391,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":392,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":393,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-18"},{"lineNumber":394,"author":{"gitId":"wxwern"},"content":" public void verifyAllEmptyValuesAssignedFor_someNonEmpty_exceptionThrown() {","lastModifiedDate":"2023-10-18"},{"lineNumber":395,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap multimap \u003d new ArgumentMultimap();","lastModifiedDate":"2023-10-18"},{"lineNumber":396,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"\");","lastModifiedDate":"2023-10-18"},{"lineNumber":397,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \"A\");","lastModifiedDate":"2023-10-18"},{"lineNumber":398,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_A, \" \");","lastModifiedDate":"2023-10-18"},{"lineNumber":399,"author":{"gitId":"wxwern"},"content":" multimap.put(FLAG_B, \"B\");","lastModifiedDate":"2023-10-18"},{"lineNumber":400,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":401,"author":{"gitId":"wxwern"},"content":" // A and B aren\u0027t empty","lastModifiedDate":"2023-10-18"},{"lineNumber":402,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":403,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":404,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":405,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_A, FLAG_C));","lastModifiedDate":"2023-10-18"},{"lineNumber":406,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_D, FLAG_C, FLAG_B));","lastModifiedDate":"2023-10-18"},{"lineNumber":407,"author":{"gitId":"wxwern"},"content":" assertThrows(ParseException.class, () -\u003e multimap.verifyAllEmptyValuesAssignedFor(FLAG_C, FLAG_B, FLAG_A));","lastModifiedDate":"2023-10-18"},{"lineNumber":408,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-10-18"},{"lineNumber":409,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":410,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":411,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"wxwern":411}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault1 \u003d new Flag(\"abc\");","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault2 \u003d new Flag(\"def\");","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagMatchingDefault3 \u003d new Flag(\"ghi\");","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" private final Flag unknownFlagNonDefault \u003d new Flag(\"u\", \"**\", null);","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private final Flag defaultFlag \u003d new Flag(\"flag\");","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" private final Flag pSlash \u003d new Flag(\"p\", null, \"/\");","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private final Flag dashT \u003d new Flag(\"t\", \"-\", null);","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" private final Flag hatQ \u003d new Flag(\"Q\", \"^\", null);","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code flag} match the {@code expectedValues}","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Flag flag, String... expectedValues) {","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(flag).get());","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(flag).size());","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(flag).get(i));","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Flag flag) {","lastModifiedDate":"2023-10-07"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" assertFalse(argMultimap.getValue(flag).isPresent());","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" public void tokenize_noFlags_allTakenAsPreamble() {","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/ pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q 111 -t dashT-Value p/ pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" // Any flags not surrounded by spaces must not be present, and if surrounded must be.","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined\"","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" + \" -t \" + \"not joined^Qjoined\"","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" + \" ^Q \" + \"p/prefixed postfixed-t\";","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, hatQ, \"p/prefixed postfixed-t\");","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" public void tokenize_flagsNotExplicitlyGiven_defaultSyntaxFlagsAreAutoTokenized() {","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" /* Covers: Standard syntax flags (--flag) */","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" // Flags matching the standard syntax should be auto-tokenized.","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" String argsString \u003d unknownFlagMatchingDefault1 + \" some value 0\";","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault1, \"some value 0\");","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagMatchingDefault2 + \" some value blah\";","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault2, \"some value blah\");","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagMatchingDefault3 + \" yet another value\";","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, unknownFlagMatchingDefault3, \"yet another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" // Other flags being specified or not will have no influence on","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" // whether the standard-syntax-flag is correctly tokenized.","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" argsString \u003d defaultFlag + \" another value\";","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ, defaultFlag); // All provided.","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ); // Omitted the target default.","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString); // Not specified at all.","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" assertArgumentPresent(argMultimap, defaultFlag, \"another value\");","lastModifiedDate":"2023-10-17"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" /* Covers: Non-standard syntax flags */","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" // Non-standard flags not given to the tokenizer should not return any values","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" argsString \u003d unknownFlagNonDefault + \" some value 1\";","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" assertArgumentAbsent(argMultimap, unknownFlagNonDefault);","lastModifiedDate":"2023-10-17"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown flag is taken as part of preamble","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" // Also works if some flags already given but the non-standard flag is not one of them.","lastModifiedDate":"2023-10-17"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2023-10-17"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" assertArgumentAbsent(argMultimap, unknownFlagNonDefault);","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown flag is taken as part of preamble","lastModifiedDate":"2023-10-17"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" Flag aaa \u003d new Flag(\"aaa\", \"-\", \"\");","lastModifiedDate":"2023-10-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" assertEquals(aaa, new Flag(\"aaa\", \"-\", null));","lastModifiedDate":"2023-10-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, \"-aaa\");","lastModifiedDate":"2023-10-07"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, new Flag(\"aab\", \"-\", null));","lastModifiedDate":"2023-10-07"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" assertNotEquals(aaa, new Flag(\"aaa\", null, \"/\"));","lastModifiedDate":"2023-10-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"wxwern":71,"-":126}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_CONTACT));","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"McNaBry":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.EditContactDescriptorBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" private static final String TAG_EMPTY \u003d \" \" + FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" // invalid flag being parsed as preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Contact} being edited,","lastModifiedDate":"2023-10-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_SECOND_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":" descriptor \u003d new EditContactDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE));","lastModifiedDate":"2023-10-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" Messages.getErrorMessageForDuplicateFlags(FLAG_PHONE, FLAG_EMAIL, FLAG_ADDRESS));","lastModifiedDate":"2023-10-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"McNaBry"},"content":" Index targetIndex \u003d INDEX_THIRD_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"McNaBry"},"content":" EditContactDescriptor descriptor \u003d new EditContactDescriptorBuilder().withTags().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"McNaBry":21,"CJ-Lee01":2,"wxwern":10,"-":175}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"McNaBry":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wamps-jp"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-20"},{"lineNumber":2,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":3,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-20"},{"lineNumber":4,"author":{"gitId":"wamps-jp"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-20"},{"lineNumber":5,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"wamps-jp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"wamps-jp"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2023-10-20"},{"lineNumber":9,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"wamps-jp"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"wamps-jp"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"wamps-jp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"wamps-jp"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"wamps-jp"},"content":" public void parse_validArgs_returnsListCommand() {","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"wamps-jp"},"content":" assertParseSuccess(parser, \"\", new ListCommand(PREDICATE_SHOW_ALL_CONTACTS));","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"wamps-jp"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"wamps-jp"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"wamps-jp":18}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_CONTACT;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertEquals(INDEX_FIRST_CONTACT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" assertEquals(INDEX_FIRST_CONTACT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"McNaBry":7,"-":189}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(Collections.emptyList(), addressBook.getContactList());","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public void resetData_withDuplicateContacts_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" // Two contacts with the same identity fields","lastModifiedDate":"2023-10-05"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e newContacts \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2023-10-05"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" AddressBookStub newData \u003d new AddressBookStub(newContacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public void hasContact_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasContact(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactNotInAddressBook_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" assertFalse(addressBook.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(addressBook.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(addressBook.hasContact(editedAlice));","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" public void getContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getContactList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{contacts\u003d\" + addressBook.getContactList() + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" * A stub ReadOnlyAddressBook whose contacts list can violate interface constraints.","lastModifiedDate":"2023-10-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" private final ObservableList\u003cContact\u003e contacts \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" AddressBookStub(Collection\u003cContact\u003e contacts) {","lastModifiedDate":"2023-10-05"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" this.contacts.setAll(contacts);","lastModifiedDate":"2023-10-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" public ObservableList\u003cContact\u003e getContactList() {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" return contacts;","lastModifiedDate":"2023-10-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"McNaBry":13,"CJ-Lee01":18,"-":77}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CONTACTS;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BENSON;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" public void hasContact_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasContact(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" public void hasContact_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" assertFalse(modelManager.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void hasContact_contactInAddressBook_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" modelManager.addContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" assertTrue(modelManager.hasContact(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void getFilteredContactList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredContactList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withContact(ALICE).withContact(BENSON).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" modelManager.updateFilteredContactList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" modelManager.updateFilteredContactList(PREDICATE_SHOW_ALL_CONTACTS);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"McNaBry":16,"-":116}},{"path":"src/test/java/seedu/address/model/contact/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":55}},{"path":"src/test/java/seedu/address/model/contact/ContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"public class ContactTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d new ContactBuilder().build();","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e contact.getTags().remove(0));","lastModifiedDate":"2023-10-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public void isSameContact() {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(null));","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-23"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" assertTrue(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withId(VALID_ID_BOB).build();","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" assertFalse(ALICE.isSameContact(editedAlice));","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" // id differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" Contact editedBob \u003d new ContactBuilder(BOB).withId(VALID_ID_BOB.toUpperCase()).build();","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" assertFalse(BOB.isSameContact(editedBob));","lastModifiedDate":"2023-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" Contact aliceCopy \u003d new ContactBuilder(ALICE).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" editedAlice \u003d new ContactBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" String expected \u003d Contact.class.getCanonicalName()","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" + \", type\u003d\" + ALICE.getType()","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" + \", id\u003d\" + ALICE.getId()","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" + \", url\u003d\" + ALICE.getUrl()","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"McNaBry":33,"CJ-Lee01":3,"wxwern":1,"-":65}},{"path":"src/test/java/seedu/address/model/contact/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":87}},{"path":"src/test/java/seedu/address/model/contact/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" assertTrue(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertFalse(predicate.test(new ContactBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"McNaBry":9,"CJ-Lee01":1,"-":75}},{"path":"src/test/java/seedu/address/model/contact/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":59}},{"path":"src/test/java/seedu/address/model/contact/OrganizationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSITION_BOB;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_BOB;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_BOB;","lastModifiedDate":"2023-10-24"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.NUS;","lastModifiedDate":"2023-10-24"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.OrganizationBuilder;","lastModifiedDate":"2023-10-24"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"public class OrganizationTest {","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" Organization organization \u003d new OrganizationBuilder().build();","lastModifiedDate":"2023-10-24"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e organization.getTags().remove(0));","lastModifiedDate":"2023-10-24"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void isSameContact() {","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" assertTrue(NUS.isSameContact(NUS));","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.isSameContact(null));","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-23"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Organization editedNus \u003d new OrganizationBuilder(NUS).withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" .withUrl(VALID_URL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" .withStatus(VALID_STATUS_BOB).withPosition(VALID_POSITION_BOB)","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" assertTrue(NUS.isSameContact(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withId(VALID_ID_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.isSameContact(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" // id differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS)","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" .withId(NUS.getId().value.toUpperCase()).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.isSameContact(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" public void equals() {","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" Organization nusCopy \u003d new OrganizationBuilder(NUS).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" assertTrue(NUS.equals(nusCopy));","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" assertTrue(NUS.equals(NUS));","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(null));","lastModifiedDate":"2023-10-24"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(5));","lastModifiedDate":"2023-10-24"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(BOB));","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" Organization editedNus \u003d new OrganizationBuilder(NUS).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" // different url -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withUrl(VALID_URL_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" // different address -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" // different status -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" // different position -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" editedNus \u003d new OrganizationBuilder(NUS).withPosition(VALID_POSITION_BOB).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" assertFalse(NUS.equals(editedNus));","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" String expected \u003d Organization.class.getCanonicalName()","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" + \"{name\u003d\" + NUS.getName()","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" + \", type\u003d\" + NUS.getType()","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" + \", id\u003d\" + NUS.getId()","lastModifiedDate":"2023-10-24"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" + \", phone\u003d\" + NUS.getPhone()","lastModifiedDate":"2023-10-24"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" + \", email\u003d\" + NUS.getEmail()","lastModifiedDate":"2023-10-24"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" + \", url\u003d\" + NUS.getUrl()","lastModifiedDate":"2023-10-24"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" + \", address\u003d\" + NUS.getAddress()","lastModifiedDate":"2023-10-24"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" + \", tags\u003d\" + NUS.getTags()","lastModifiedDate":"2023-10-24"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" + \", status\u003d\" + NUS.getStatus()","lastModifiedDate":"2023-10-24"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" + \", position\u003d\" + NUS.getPosition() + \"}\";","lastModifiedDate":"2023-10-24"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, NUS.toString());","lastModifiedDate":"2023-10-24"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":66,"tanshiyu1999":57}},{"path":"src/test/java/seedu/address/model/contact/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"McNaBry":1,"-":59}},{"path":"src/test/java/seedu/address/model/contact/RecruiterTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OID_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-24"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.AMY;","lastModifiedDate":"2023-10-24"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.RYAN;","lastModifiedDate":"2023-10-24"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.RecruiterBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"class RecruiterTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" Recruiter recruiter \u003d new RecruiterBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e recruiter.getTags().remove(0));","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" public void isSameContact() {","lastModifiedDate":"2023-10-24"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" assertTrue(RYAN.isSameContact(RYAN));","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.isSameContact(null));","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2023-10-23"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" Recruiter editedRyan \u003d new RecruiterBuilder(RYAN).withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" .withUrl(VALID_URL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" .withTags(VALID_TAG_FRIEND).withOid(VALID_OID_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" assertTrue(RYAN.isSameContact(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withId(VALID_ID_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.isSameContact(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" // id differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withId(RYAN.getId().value.toUpperCase()).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.isSameContact(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" public void equals() {","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" Recruiter ryanCopy \u003d new RecruiterBuilder(RYAN).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" assertTrue(RYAN.equals(ryanCopy));","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" assertTrue(RYAN.equals(RYAN));","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(null));","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" // different type -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(5));","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" // different contact -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(AMY));","lastModifiedDate":"2023-10-24"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" Contact editedRyan \u003d new RecruiterBuilder(RYAN).withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" // different url -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withUrl(VALID_URL_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" // different address -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" // different oid -\u003e returns false","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" editedRyan \u003d new RecruiterBuilder(RYAN).withOid(VALID_OID_AMY).build();","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" assertFalse(RYAN.equals(editedRyan));","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" String expected \u003d Recruiter.class.getCanonicalName()","lastModifiedDate":"2023-10-24"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + \"{name\u003d\" + RYAN.getName()","lastModifiedDate":"2023-10-24"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" + \", type\u003d\" + RYAN.getType()","lastModifiedDate":"2023-10-24"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" + \", id\u003d\" + RYAN.getId()","lastModifiedDate":"2023-10-24"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" + \", phone\u003d\" + RYAN.getPhone()","lastModifiedDate":"2023-10-24"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" + \", email\u003d\" + RYAN.getEmail()","lastModifiedDate":"2023-10-24"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" + \", url\u003d\" + RYAN.getUrl()","lastModifiedDate":"2023-10-24"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" + \", address\u003d\" + RYAN.getAddress()","lastModifiedDate":"2023-10-24"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" + \", tags\u003d\" + RYAN.getTags()","lastModifiedDate":"2023-10-24"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" + \", oid\u003d\" + RYAN.getOrganizationId() + \"}\";","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, RYAN.toString());","lastModifiedDate":"2023-10-24"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":114}},{"path":"src/test/java/seedu/address/model/contact/UniqueContactListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.model.contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BOB;","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.DuplicatePersonException;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.exceptions.PersonNotFoundException;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.ContactBuilder;","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"public class UniqueContactListTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" private final UniqueContactList uniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public void contains_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.contains(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void contains_contactNotInList_returnsFalse() {","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" assertFalse(uniqueContactList.contains(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public void contains_contactInList_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(uniqueContactList.contains(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" public void contains_contactWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" assertTrue(uniqueContactList.contains(editedAlice));","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" public void add_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.add(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" public void add_duplicateContact_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.add(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" public void setContact_nullTargetContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContact(null, ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" public void setContact_nullEditedContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContact(ALICE, null));","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" public void setContact_targetContactNotInList_throwsContactNotFoundException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueContactList.setContact(ALICE, ALICE));","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactIsSameContact_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, ALICE);","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasSameIdentity_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" Contact editedAlice \u003d new ContactBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, editedAlice);","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(editedAlice);","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasDifferentIdentity_success() {","lastModifiedDate":"2023-10-07"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContact(ALICE, BOB);","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" public void setContact_editedContactHasNonUniqueIdentity_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.setContact(ALICE, BOB));","lastModifiedDate":"2023-10-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" public void remove_nullContact_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.remove(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" public void remove_contactDoesNotExist_throwsContactNotFoundException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueContactList.remove(ALICE));","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" public void remove_existingContact_removesContact() {","lastModifiedDate":"2023-10-07"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.remove(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" public void setContacts_nullUniqueContactList_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContacts((UniqueContactList) null));","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" public void setContacts_uniqueContactList_replacesOwnListWithProvidedUniqueContactList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContacts(expectedUniqueContactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" public void setContacts_nullList_throwsNullPointerException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueContactList.setContacts((List\u003cContact\u003e) null));","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" public void setContacts_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"CJ-Lee01"},"content":" uniqueContactList.add(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":152,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e contactList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2023-10-05"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" uniqueContactList.setContacts(contactList);","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"CJ-Lee01"},"content":" UniqueContactList expectedUniqueContactList \u003d new UniqueContactList();","lastModifiedDate":"2023-10-06"},{"lineNumber":155,"author":{"gitId":"CJ-Lee01"},"content":" expectedUniqueContactList.add(BOB);","lastModifiedDate":"2023-10-06"},{"lineNumber":156,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(expectedUniqueContactList, uniqueContactList);","lastModifiedDate":"2023-10-06"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" public void setContacts_listWithDuplicateContacts_throwsDuplicateContactException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":161,"author":{"gitId":"CJ-Lee01"},"content":" List\u003cContact\u003e listWithDuplicateContacts \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2023-10-05"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueContactList.setContacts(listWithDuplicateContacts));","lastModifiedDate":"2023-10-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"CJ-Lee01"},"content":" -\u003e uniqueContactList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2023-10-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"CJ-Lee01"},"content":" assertEquals(uniqueContactList.asUnmodifiableObservableList().toString(), uniqueContactList.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"McNaBry":41,"CJ-Lee01":43,"-":91}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static seedu.address.storage.JsonAdaptedContact.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.BENSON;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.NUS;","lastModifiedDate":"2023-10-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"public class JsonAdaptedContactTest {","lastModifiedDate":"2023-10-05"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" private static final String INVALID_TYPE \u003d \"asdf\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_ID \u003d \"_12@-abc\";","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_URL \u003d \" \";","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" private static final String INVALID_STATUS \u003d \"C@O\";","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" private static final String INVALID_OID \u003d \"_12@-abc\";","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" private static final String VALID_TYPE_ORG \u003d \"organization\";","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_STATUS \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" private static final String VALID_POSITION \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" private static final String VALID_ID \u003d \"78a36caf-6d42-4fd2-a017-7f6a92fa3155\";","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_URL \u003d BENSON.getUrl().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().get().value;","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" private static final String VALID_OID \u003d \"78a36caf-6d42-4fd2-a017-7f6a92fa3155\";","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" private static final List\u003cJsonAdaptedId\u003e VALID_RIDS \u003d NUS.getRecruiterIds().stream()","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" .map(JsonAdaptedId::new)","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" public void toModelType_validContactDetails_returnsContact() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(BENSON);","lastModifiedDate":"2023-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, INVALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, null, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" INVALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullPhone_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" null, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, INVALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullEmail_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, null, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, INVALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" public void toModelType_nullAddress_doesNotThrowException() {","lastModifiedDate":"2023-10-19"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, null, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" VALID_OID, VALID_TAGS);","lastModifiedDate":"2023-10-19"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" assertDoesNotThrow(person::toModelType);","lastModifiedDate":"2023-10-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" JsonAdaptedContact person \u003d new JsonAdaptedContact(VALID_TYPE_ORG, VALID_NAME, VALID_ID,","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" VALID_PHONE, VALID_EMAIL, VALID_URL, VALID_ADDRESS, VALID_STATUS, VALID_POSITION,","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" VALID_OID, invalidTags);","lastModifiedDate":"2023-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":43,"CJ-Lee01":3,"wxwern":11,"tanshiyu1999":9,"-":73}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.ALICE;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.HOON;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.IDA;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" public void readAddressBook_invalidContactAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" public void readAddressBook_invalidAndValidContactAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" original.addContact(HOON);","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" original.removeContact(ALICE);","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" original.addContact(IDA);","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":3,"-":100}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import seedu.address.testutil.TypicalContacts;","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void toModelType_typicalContactsFile_success() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" AddressBook typicalContactssAddressBook \u003d TypicalContacts.getTypicalAddressBook();","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" assertEquals(addressBookFromFile, typicalContactssAddressBook);","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public void toModelType_invalidContactFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" public void toModelType_duplicateContacts_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_CONTACT,","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"McNaBry":6,"CJ-Lee01":1,"-":40}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"jobby.json\"));","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"wxwern":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.testutil.TypicalContacts.getTypicalAddressBook;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withContact(\"John\", \"Doe\").build();}","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Adds a new {@code Contact} to the {@code AddressBook} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public AddressBookBuilder withContact(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" addressBook.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":3,"CJ-Lee01":2,"-":29}},{"path":"src/test/java/seedu/address/testutil/ContactBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Url;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class to help with building Contact objects.","lastModifiedDate":"2023-10-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"public class ContactBuilder {","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_ID \u003d \"test_1-123\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_URL \u003d \"www.google.com\";","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" private Url url;","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" * Creates a {@code ContactBuilder} with the default details.","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder() {","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" id \u003d new Id(DEFAULT_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" url \u003d new Url(DEFAULT_URL);","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" * Initializes the ContactBuilder with the data of {@code contactToCopy}.","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder(Contact contactToCopy) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" name \u003d contactToCopy.getName();","lastModifiedDate":"2023-10-05"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" id \u003d contactToCopy.getId();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" phone \u003d contactToCopy.getPhone().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" email \u003d contactToCopy.getEmail().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" url \u003d contactToCopy.getUrl().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" address \u003d contactToCopy.getAddress().orElse(null);","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" tags \u003d new HashSet\u003c\u003e(contactToCopy.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Name} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withName(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Id} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withId(String id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" this.id \u003d new Id(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Url} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withUrl(String url) {","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" this.url \u003d url \u003d\u003d null ? null : new Url(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Address} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withAddress(String address) {","lastModifiedDate":"2023-10-07"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" this.address \u003d address \u003d\u003d null ? null : new Address(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Phone} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-07"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" this.phone \u003d phone \u003d\u003d null ? null : new Phone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" * Sets the {@code Email} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" public ContactBuilder withEmail(String email) {","lastModifiedDate":"2023-10-07"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" this.email \u003d email \u003d\u003d null ? null : new Email(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" public Contact build() {","lastModifiedDate":"2023-10-05"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" return new Contact(name, id, phone, email, url, address, tags);","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"McNaBry":48,"CJ-Lee01":9,"tanshiyu1999":3,"-":64}},{"path":"src/test/java/seedu/address/testutil/ContactUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ADDRESS;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_EMAIL;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_NAME;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_PHONE;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_TAG;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.parser.CliSyntax.FLAG_URL;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class for Contact.","lastModifiedDate":"2023-10-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"public class ContactUtil {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Returns an add command string for adding the {@code contact}.","lastModifiedDate":"2023-10-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public static String getAddCommand(Contact contact) {","lastModifiedDate":"2023-10-05"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" return AddCommand.COMMAND_WORD + \" \" + getContactDetails(contact);","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the part of command string for the given {@code contact}\u0027s details.","lastModifiedDate":"2023-10-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public static String getContactDetails(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_NAME + \" \" + contact.getName().fullName + \" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_ID + \" \" + contact.getId().value + \" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_PHONE + \" \" + contact.getPhone().map(phone -\u003e phone.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_EMAIL + \" \" + contact.getEmail().map(email -\u003e email.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_ADDRESS + \" \" + contact.getAddress().map(address -\u003e address.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" sb.append(FLAG_URL + \" \" + contact.getUrl().map(url -\u003e url.value).orElse(\"\") + \" \");","lastModifiedDate":"2023-10-19"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" contact.getTags().stream().forEach(","lastModifiedDate":"2023-10-05"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" s -\u003e sb.append(FLAG_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" * Returns the part of command string for the given {@code EditContactDescriptor}\u0027s details.","lastModifiedDate":"2023-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public static String getEditContactDescriptorDetails(EditContactDescriptor descriptor) {","lastModifiedDate":"2023-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(FLAG_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" descriptor.getId().ifPresent(id -\u003e sb.append(FLAG_ID).append(\" \").append(id.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(FLAG_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(FLAG_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" descriptor.getAddress().ifPresent(address -\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_ADDRESS).append(\" \").append(address.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" sb.append(FLAG_TAG);","lastModifiedDate":"2023-10-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" tags.forEach(s -\u003e sb.append(FLAG_TAG).append(\" \").append(s.tagName).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"McNaBry":11,"CJ-Lee01":6,"wxwern":17,"-":34}},{"path":"src/test/java/seedu/address/testutil/EditContactDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import seedu.address.logic.commands.EditCommand.EditContactDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Address;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Email;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Name;","lastModifiedDate":"2023-10-23"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Phone;","lastModifiedDate":"2023-10-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building EditContactDescriptor objects.","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class EditContactDescriptorBuilder {","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" private EditContactDescriptor descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder() {","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" descriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder(EditContactDescriptor descriptor) {","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" this.descriptor \u003d new EditContactDescriptor(descriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" * Returns an {@code EditContactDescriptor} with fields containing {@code contact}\u0027s details","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder(Contact contact) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" descriptor \u003d new EditContactDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" descriptor.setName(contact.getName());","lastModifiedDate":"2023-10-05"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" descriptor.setId(contact.getId());","lastModifiedDate":"2023-10-23"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" descriptor.setPhone(contact.getPhone().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" descriptor.setEmail(contact.getEmail().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" descriptor.setAddress(contact.getAddress().orElse(null));","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" descriptor.setTags(contact.getTags());","lastModifiedDate":"2023-10-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Name} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withName(String name) {","lastModifiedDate":"2023-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Phone} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Email} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2023-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Address} of the {@code EditContactDescriptor} that we are building.","lastModifiedDate":"2023-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2023-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditContactDescriptor}","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public EditContactDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" public EditContactDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"McNaBry":25,"CJ-Lee01":8,"-":55}},{"path":"src/test/java/seedu/address/testutil/OrganizationBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-19"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Position;","lastModifiedDate":"2023-10-23"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Status;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-19"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-19"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building Organization objects.","lastModifiedDate":"2023-10-19"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"public class OrganizationBuilder extends ContactBuilder {","lastModifiedDate":"2023-10-19"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public static final String DEFAULT_STATUS \u003d \"Applied\";","lastModifiedDate":"2023-10-19"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public static final String DEFAULT_POSITION \u003d \"Manager\";","lastModifiedDate":"2023-10-19"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" private Position position;","lastModifiedDate":"2023-10-19"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" private Set\u003cId\u003e rids;","lastModifiedDate":"2023-10-19"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" private Status status;","lastModifiedDate":"2023-10-19"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" * Creates a {@code OrganizationBuilder} with the default details.","lastModifiedDate":"2023-10-19"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder() {","lastModifiedDate":"2023-10-19"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" super();","lastModifiedDate":"2023-10-19"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" position \u003d new Position(DEFAULT_POSITION);","lastModifiedDate":"2023-10-19"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2023-10-19"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" rids \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-19"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" * Initializes the OrganizationBuilder with the data of {@code organizationToCopy}.","lastModifiedDate":"2023-10-19"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder(Organization organizationToCopy) {","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" super(organizationToCopy);","lastModifiedDate":"2023-10-19"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" position \u003d organizationToCopy.getPosition().orElse(null);","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" status \u003d organizationToCopy.getStatus().orElse(null);","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" rids \u003d organizationToCopy.getRecruiterIds();","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withId(String id) {","lastModifiedDate":"2023-10-19"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withId(id);","lastModifiedDate":"2023-10-19"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withAddress(String address) {","lastModifiedDate":"2023-10-19"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withAddress(address);","lastModifiedDate":"2023-10-19"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withEmail(String email) {","lastModifiedDate":"2023-10-19"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withEmail(email);","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withName(String name) {","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withName(name);","lastModifiedDate":"2023-10-19"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-19"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withPhone(phone);","lastModifiedDate":"2023-10-19"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withTags(String... tags) {","lastModifiedDate":"2023-10-19"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withTags(tags);","lastModifiedDate":"2023-10-19"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withUrl(String url) {","lastModifiedDate":"2023-10-19"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" return (OrganizationBuilder) super.withUrl(url);","lastModifiedDate":"2023-10-19"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Contact} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withRids(String ... rids) {","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" this.rids \u003d SampleDataUtil.getIdSet(rids);","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" * Sets the {@code Status} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-19"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withStatus(String status) {","lastModifiedDate":"2023-10-19"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" this.status \u003d status \u003d\u003d null ? null : new Status(status);","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-10-19"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" * Sets the {@code Position} of the {@code Contact} that we are building.","lastModifiedDate":"2023-10-24"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" public OrganizationBuilder withPosition(String position) {","lastModifiedDate":"2023-10-19"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" this.position \u003d position \u003d\u003d null ? null : new Position(position);","lastModifiedDate":"2023-10-24"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" return this;","lastModifiedDate":"2023-10-19"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-10-19"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" public Organization build() {","lastModifiedDate":"2023-10-19"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" Contact contact \u003d super.build();","lastModifiedDate":"2023-10-19"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":" return new Organization(","lastModifiedDate":"2023-10-19"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":" contact.getName(),","lastModifiedDate":"2023-10-19"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":" contact.getId(),","lastModifiedDate":"2023-10-19"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" contact.getPhone().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" contact.getEmail().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" contact.getUrl().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" contact.getAddress().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":" contact.getTags(),","lastModifiedDate":"2023-10-19"},{"lineNumber":115,"author":{"gitId":"tanshiyu1999"},"content":" status,","lastModifiedDate":"2023-10-19"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":" position,","lastModifiedDate":"2023-10-19"},{"lineNumber":117,"author":{"gitId":"tanshiyu1999"},"content":" rids","lastModifiedDate":"2023-10-19"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":" );","lastModifiedDate":"2023-10-19"},{"lineNumber":119,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":120,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":121,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-10-19"}],"authorContributionMap":{"McNaBry":14,"wxwern":4,"tanshiyu1999":103}},{"path":"src/test/java/seedu/address/testutil/RecruiterBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Id;","lastModifiedDate":"2023-10-23"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-23"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" * A utility class to help with building Recruiter objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class RecruiterBuilder extends ContactBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public static final String DEFAULT_OID \u003d \"111111\";","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private Id oid;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" * Creates a {@code RecruiterBuilder} with the default details.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" super();","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d new Id(DEFAULT_OID);","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" * Initializes the RecruiterBuilder with the data of {@code recruiterToCopy}.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder(Recruiter recruiterToCopy) {","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" super(recruiterToCopy);","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d recruiterToCopy.getOrganizationId().orElse(null);","lastModifiedDate":"2023-10-24"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withName(String name) {","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withName(name);","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withId(String id) {","lastModifiedDate":"2023-10-24"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withId(id);","lastModifiedDate":"2023-10-24"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-24"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withPhone(phone);","lastModifiedDate":"2023-10-24"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withEmail(String email) {","lastModifiedDate":"2023-10-24"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withEmail(email);","lastModifiedDate":"2023-10-24"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withUrl(String url) {","lastModifiedDate":"2023-10-24"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withUrl(url);","lastModifiedDate":"2023-10-24"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withAddress(String address) {","lastModifiedDate":"2023-10-24"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withAddress(address);","lastModifiedDate":"2023-10-24"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-24"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withTags(String... tags) {","lastModifiedDate":"2023-10-24"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" return (RecruiterBuilder) super.withTags(tags);","lastModifiedDate":"2023-10-24"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-24"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" * Sets the organization {@code Id} of the {@code Recruiter} that we are building.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" public RecruiterBuilder withOid(String oid) {","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" this.oid \u003d oid \u003d\u003d null ? null : new Id(oid);","lastModifiedDate":"2023-10-24"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" return this;","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" public Recruiter build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" Contact contact \u003d super.build();","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" return new Recruiter(","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" contact.getName(),","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" contact.getId(),","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" contact.getPhone().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" contact.getEmail().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" contact.getUrl().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" contact.getAddress().orElse(null),","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" contact.getTags(),","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" oid","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"McNaBry":89}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the middle index of the contact in the {@code model}\u0027s contact list.","lastModifiedDate":"2023-10-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return Index.fromOneBased(model.getFilteredContactList().size() / 2);","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the last index of the contact in the {@code model}\u0027s contact list.","lastModifiedDate":"2023-10-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return Index.fromOneBased(model.getFilteredContactList().size());","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" * Returns the contact in the {@code model}\u0027s contact list at {@code index}.","lastModifiedDate":"2023-10-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" public static Contact getContact(Model model, Index index) {","lastModifiedDate":"2023-10-07"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return model.getFilteredContactList().get(index.getZeroBased());","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"McNaBry":5,"CJ-Lee01":3,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalContacts.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_AMY;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_URL_BOB;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Contact;","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Organization;","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"import seedu.address.model.contact.Recruiter;","lastModifiedDate":"2023-10-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" * A utility class containing a list of {@code Contact} objects to be used in tests.","lastModifiedDate":"2023-10-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"public class TypicalContacts {","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" public static final Contact ALICE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_1-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" public static final Contact BENSON \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_2-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" .withUrl(\"www.google.com\")","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" public static final Contact CARL \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" .withName(\"Carl Kurz\")","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_3-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" public static final Contact DANIEL \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" .withName(\"Daniel Meier\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_4-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"10th street\")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" public static final Contact ELLE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" .withName(\"Elle Meyer\")","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_5-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" public static final Contact FIONA \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" .withName(\"Fiona Kunz\")","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_6-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" public static final Contact GEORGE \u003d new ContactBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" .withName(\"George Best\")","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_7-123\")","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public static final Organization NUS \u003d new OrganizationBuilder()","lastModifiedDate":"2023-10-24"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" .withName(\"NUS SoC\")","lastModifiedDate":"2023-10-24"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" .withId(\"nus-soc_sg\")","lastModifiedDate":"2023-10-24"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"65162727\")","lastModifiedDate":"2023-10-24"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"socug@comp.nus.edu.sg\")","lastModifiedDate":"2023-10-24"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"Computing 1, 13 Computing Drive\")","lastModifiedDate":"2023-10-24"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" .withStatus(\"Applied\")","lastModifiedDate":"2023-10-24"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" .withPosition(\"Research Assistant\")","lastModifiedDate":"2023-10-24"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" .withRids(\"soc-rec_ryan\")","lastModifiedDate":"2023-10-24"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" .build();","lastModifiedDate":"2023-10-24"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-10-24"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" public static final Recruiter RYAN \u003d new RecruiterBuilder()","lastModifiedDate":"2023-10-24"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" .withName(\"Ryan Lau\")","lastModifiedDate":"2023-10-24"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" .withId(\"soc-rec_ryan\")","lastModifiedDate":"2023-10-24"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"82930129\")","lastModifiedDate":"2023-10-24"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"ryanlau@comp.nus.edu.sg\")","lastModifiedDate":"2023-10-24"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"Computing 1, 13 Computing Drive\")","lastModifiedDate":"2023-10-24"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" .withOid(\"nus-soc_sg\")","lastModifiedDate":"2023-10-24"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" .build();","lastModifiedDate":"2023-10-19"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" public static final Contact HOON \u003d new ContactBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" .withName(\"Hoon Meier\")","lastModifiedDate":"2023-10-23"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_8-123\")","lastModifiedDate":"2023-10-23"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"8482424\")","lastModifiedDate":"2023-10-23"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"stefan@example.com\")","lastModifiedDate":"2023-10-23"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"little india\")","lastModifiedDate":"2023-10-23"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" .build();","lastModifiedDate":"2023-10-23"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" public static final Contact IDA \u003d new ContactBuilder()","lastModifiedDate":"2023-10-23"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" .withName(\"Ida Mueller\")","lastModifiedDate":"2023-10-23"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" .withId(\"test_9-123\")","lastModifiedDate":"2023-10-23"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" .withPhone(\"8482131\")","lastModifiedDate":"2023-10-23"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2023-10-23"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" .withAddress(\"chicago ave\")","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" .build();","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" // Manually added - Contact\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-05"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" public static final Contact AMY \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" .withId(VALID_ID_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withUrl(VALID_URL_AMY)","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" public static final Contact BOB \u003d new ContactBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" .withId(VALID_ID_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withUrl(VALID_URL_BOB)","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" private TypicalContacts() {} // prevents instantiation","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" * Returns an {@code AddressBook} with all the typical contacts.","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" for (Contact contact : getTypicalContacts()) {","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" ab.addContact(contact);","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" public static List\u003cContact\u003e getTypicalContacts() {","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"McNaBry":80,"CJ-Lee01":3,"wxwern":16,"tanshiyu1999":2,"-":45}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_FIRST_CONTACT \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_SECOND_CONTACT \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public static final Index INDEX_THIRD_CONTACT \u003d Index.fromOneBased(3);","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"McNaBry":3,"-":9}}] diff --git a/AY2324S1-CS2103T-W08-3_tp_master/commits.json b/AY2324S1-CS2103T-W08-3_tp_master/commits.json index 578fe800..c8146369 100644 --- a/AY2324S1-CS2103T-W08-3_tp_master/commits.json +++ b/AY2324S1-CS2103T-W08-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"McNaBry":[{"date":"2023-09-30","commitResults":[{"hash":"94a1832b68cb6221d527b281c852108f1350ac37","isMergeCommit":false,"messageTitle":"Modify AboutUs and create PPP","messageBody":"Add details about\n- Github account\n- Self-portrait\n- PPP\nto show code contribution and portfolio\n","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":6}}},{"hash":"94454ed11055dfaad89bfd493ba12292c630035d","isMergeCommit":false,"messageTitle":"Update PPP formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":15}}}]},{"date":"2023-10-06","commitResults":[{"hash":"26eca7c319b79e0adbd7671d5a8ba8e3c9203639","isMergeCommit":false,"messageTitle":"Refactor Model class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":28},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":48,"deletions":48}}}]},{"date":"2023-10-07","commitResults":[{"hash":"304e02eee02cf10c36332f7f5bed7b6b27d16bc5","isMergeCommit":false,"messageTitle":"Refactor Logic class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"040d9d4a1525b9b0908c5b1bd3c0516842ed8de9","isMergeCommit":false,"messageTitle":"Refactor Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":9}}},{"hash":"0db9b488886eb70afb3e944a251182a36e699abf","isMergeCommit":false,"messageTitle":"Refactor tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":47,"deletions":47},"test-code":{"insertions":272,"deletions":272}}},{"hash":"cc515fc70cf416821a54284c01e3864f72800a38","isMergeCommit":false,"messageTitle":"Refactor Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8},"test-code":{"insertions":4,"deletions":4}}},{"hash":"25f9e0fa15553522311cb981dfa2ba50678de66a","isMergeCommit":false,"messageTitle":"Refactor UniqueContactList class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":12,"deletions":12}}}]},{"date":"2023-10-08","commitResults":[{"hash":"061d2fda157b8dc9f9230d8d8390d7adf0adf8c0","isMergeCommit":false,"messageTitle":"Fix JavaFX NPE","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b020bacb8184b23349c3b7eef1896fcdb770430c","isMergeCommit":false,"messageTitle":"Refactor diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":30}}}]},{"date":"2023-10-10","commitResults":[{"hash":"2e5b56d4857b7049f192381ea232cc77d97a8c8a","isMergeCommit":true,"messageTitle":"Merge pull request #28 from wxwern/command-parser-update-p1","messageBody":"Refactor the \"Prefix\" class to \"Flag\", and update the defaults to match the Unix-like syntax \"--flag\"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"5fb1be354fbdd95fc25406ec6328b08521db3a3d","isMergeCommit":false,"messageTitle":"Add Recruiter class","messageBody":"Create Recruiter class.\n\nNo class exists to represent a recruiter.\n\nChanges made:\n- AddCommandParser detects the \"recruiter\" preamble.\n- A separate class extending Contact is created.\n- Modify AddCommandParser test to ignore preamble.\n- Add test cases for Recruiter.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":2},"test-code":{"insertions":152,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"f9258e4d7250e63847e92048841835aee61077ee","isMergeCommit":false,"messageTitle":"Update AddCommandParser","messageBody":"Change parser to detect --org flag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":34}}}]},{"date":"2023-10-15","commitResults":[{"hash":"88661e2332cd91a4cf47e4b4ec84f5c4b4dc43b8","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":54},"test-code":{"insertions":19,"deletions":16}}},{"hash":"6b2174945f1813d98dd7536a38451cb8fcd3eb8b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11}}}]},{"date":"2023-10-16","commitResults":[{"hash":"cdd08174707a1c38beb4d32e03dee1826f65b73e","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr/34\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1fca76ffad99cc24a16f67f5625df300f9383c9","isMergeCommit":false,"messageTitle":"Update AddCommandParser","messageBody":"Update parser to parse recruiter flag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"8f3398c6493883f4e4162b0a837c946785dec917","isMergeCommit":false,"messageTitle":"Add Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":54},"test-code":{"insertions":123,"deletions":55}}}]},{"date":"2023-10-17","commitResults":[{"hash":"d1beb9d5d28ecf4488e18edd0b574cda18e14faf","isMergeCommit":false,"messageTitle":"Add Url class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":172,"deletions":29}}},{"hash":"edffcae7358b18639a5b97e6a9a1cb2f88bb88cf","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":9},"test-code":{"insertions":28,"deletions":11}}},{"hash":"1b5ae6d5cf51deb826caeb46c08b98878a8222bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr/34\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9650e4507b0029494dcb2aedd9146c3843519fbb","isMergeCommit":false,"messageTitle":"Update Recruiter class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3},"test-code":{"insertions":2,"deletions":0}}},{"hash":"1c51befa80ade787bad725cf83f00e6da2c34126","isMergeCommit":false,"messageTitle":"Fix RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}},{"hash":"f03f19e89ad9bd9baf806dd17daae65354dbec52","isMergeCommit":false,"messageTitle":"Rename FLAG_ORG flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"4c175722ed3a068bf9444eb7d5587b9742771b87","isMergeCommit":false,"messageTitle":"Add Recruiter Type","messageBody":"Add RECRUITER to Type enum.\n\nParse recruiter type contacts in JSON.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"e4546ce267125387b5783688ad95634677bd94a3","isMergeCommit":false,"messageTitle":"Rectify ORGANIZATION spelling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3a8b9963aa546de44926a2c9ac06bc3814f2bdc0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4a91c1690f18752b80a657c92ba9b2d19cdcd8cc","isMergeCommit":false,"messageTitle":"Fix RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"9a17fdb78532ea1d9c19e63b44ccc633cce38312","isMergeCommit":false,"messageTitle":"Add OID field to Recruiter","messageBody":"- AddCommandParser now parses the oid flag.\n- Recruiter tracks the oid field passed in by user.\n- Currently, the field has no real functionality.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":21},"test-code":{"insertions":29,"deletions":16}}},{"hash":"634a84f60d304a3bdd854ab55f1f231089496d53","isMergeCommit":false,"messageTitle":"Rename getOid method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"bc6e7a1813145c4571a54f39cfc063d789408858","isMergeCommit":false,"messageTitle":"Update Recruiter class","messageBody":"- Add equals for equality check\n- Add hashcode\n- Override toStringBuilder()\n- Change oid field to final\n","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":3}}},{"hash":"f0369a38e6cc6a0f703bee920d5324771fc74167","isMergeCommit":true,"messageTitle":"Merge pull request #33 from McNaBry/add-recruiter","messageBody":"Add `Recruiter` class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"2029b22bbfadb0d7d5b0bd5782c6fbd10149e08c","isMergeCommit":false,"messageTitle":"Change oid field to optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":11}}}]},{"date":"2023-10-19","commitResults":[{"hash":"7fdab3c827273bb9cff2e3894b648ed7aa88bf68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"412a5d9cd64688248021ace2a41704c1547aeecf","isMergeCommit":false,"messageTitle":"Add optional fields to Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":194,"deletions":174},"test-code":{"insertions":34,"deletions":57}}},{"hash":"7603694d53a1ca32c50506a5e7419e3a62de6a3b","isMergeCommit":false,"messageTitle":"Fix checkstyle and javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"59256a6ddd1e108acce06d0c1b74ca59a164ff2d","isMergeCommit":false,"messageTitle":"Update message for AddCommand usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":12}}},{"hash":"c214547b47a72079f69e390a7007a9630b628b77","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into pr/43","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d20d1d2599753c5e5691b523d2d20a90478a7814","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":4}}},{"hash":"3ac5c4f3af6f87662054a4d6d45c85df36bf31a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc448ff7dd3774e17d5baf16d011a33e1950e3bb","isMergeCommit":false,"messageTitle":"Fix UG add recruiter header format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"52c4c75052702f66335ac447db7bfffecf597ebc","isMergeCommit":false,"messageTitle":"Update UG add contact syntax","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"1c5260e8353bc532eb2a9ee767b66fb0a8621ef5","isMergeCommit":false,"messageTitle":"Update UG add recruiter syntax","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"69cdcc78033ddfddacaa600df3491bfa27ec9d33","isMergeCommit":false,"messageTitle":"Fix UG tag parameter format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"404e3894c609b1ade25263fd6b58d9b4129b3896","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-add-UG\u0027 of https://github.com/McNaBry/tp into update-add-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"204bff1f1988c8fb254047e6fb4c7b3325dd7767","isMergeCommit":false,"messageTitle":"Fix UG add organization example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"64f1b8c6b6f42e11f9be318b8302024b86e010c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-help-url","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f5971c9acd6ba600d9c4207f49fd585c877cf5d5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"3267d277c3ae7ea141d80c7e9c917af1ce460118","isMergeCommit":true,"messageTitle":"Merge pull request #52 from wxwern/fix-help-url","messageBody":"Fix help window URL to point to our UG","fileTypesAndContributionMap":{}},{"hash":"295a740806b89d623002dd6ded42403d863f071c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into team-member-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0867710798a965644610c574027a1ba4fd1c5087","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wxwern/team-member-updates","messageBody":"Add RepoSense links, fix AboutUs, remove johndoe.md PPP template","fileTypesAndContributionMap":{}},{"hash":"f455f110d71d40f1502ab28ccd71c5a0ba3a9ce0","isMergeCommit":true,"messageTitle":"Merge pull request #51 from wamps-jp/branch-updating-UG","messageBody":"Update `ListCommand` test cases and documentation","fileTypesAndContributionMap":{}},{"hash":"74d15e44fe9f28992845e5fb3c14da5b8874f004","isMergeCommit":false,"messageTitle":"Update DG diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":6}}}]},{"date":"2023-10-23","commitResults":[{"hash":"515d095d2e47cbcf6434dab230f6ab8a6a7959b8","isMergeCommit":false,"messageTitle":"Refactor person package to contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":77},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":59,"deletions":59}}},{"hash":"3b89885f3797ab92d0114acef481f4ffb8396dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into rename-person-package","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3f95396fc5519461104a9d6253ffb2919b86b20","isMergeCommit":true,"messageTitle":"Merge pull request #56 from McNaBry/rename-person-package","messageBody":"Refactor person package to contact","fileTypesAndContributionMap":{}}]}],"CJ-Lee01":[{"date":"2023-09-28","commitResults":[{"hash":"b4cdd547505c2841875b949f30f6048f94858b07","isMergeCommit":false,"messageTitle":"Add self to AboutUs and contributions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":4}}}]},{"date":"2023-09-30","commitResults":[{"hash":"7784e03d1518d1d0380185852c1484bb1986f4fb","isMergeCommit":false,"messageTitle":"Remove whitespace for run-checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"882517897167d6d7fc36919ce609cf02b54b243d","isMergeCommit":false,"messageTitle":"Change file names to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"2399b4c54f0b30af1afbcc87251af9d259dc1aa2","isMergeCommit":false,"messageTitle":"Add command line syntax requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":0}}},{"hash":"2ab124ae72075d70ae23217434c3aeb385b7afca","isMergeCommit":false,"messageTitle":"Add single character argument syntax requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"30eb332aa54d82f1c64fe198f19377df8ad1dbfc","isMergeCommit":false,"messageTitle":"Fix ordering of argument requirement list","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"bf292d56a6aef9b1fb0159ef0d851280a328a2d6","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"1f22d8b7b5465007a11bcd358bade06cf093508d","isMergeCommit":false,"messageTitle":"Add command and argument definition into glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"a87d364bd3c23ca5ccc97c28d3accafdae960c9d","isMergeCommit":false,"messageTitle":"Remove syntax NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":17}}},{"hash":"fad7334d02127a16dd036c1342de1a066a01649a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from CJ-Lee01/branch-Doc","messageBody":"Add NFRs and terms to glossary","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"c5b778dc740ef431908fea07f2238e8ceb4b15f8","isMergeCommit":false,"messageTitle":"Refactor person to contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":210},"other":{"insertions":33,"deletions":33},"docs":{"insertions":46,"deletions":46},"test-code":{"insertions":170,"deletions":169}}},{"hash":"a49c9527293f706046932750c439fed48c579e97","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Person-Contact-refactor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c7f19464fb3e16f11d8f589eff8b67e18853e478","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6}}},{"hash":"a988448c0f9b0c4d177eb789a513a5114bb45490","isMergeCommit":false,"messageTitle":"Fix more style errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-06","commitResults":[{"hash":"30c7793d5db69c9eba9176c178e3665ac1da3e3c","isMergeCommit":false,"messageTitle":"Refactor PersonCard to ContactCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":2,"deletions":2},"docs":{"insertions":1,"deletions":1}}},{"hash":"1d4fe2ea14f2a2d6e644ce54c79fe6a511894a1a","isMergeCommit":false,"messageTitle":"Refactor PersonListPanel to ContactListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":5,"deletions":5}}},{"hash":"6ac7eb13e84819a13c6632e00d5f9ba8fda5ccec","isMergeCommit":false,"messageTitle":"Refactor UniquePersonList to UniqueContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":52,"deletions":52}}},{"hash":"498d6a3be19e0774f46f8ce07dd8909962adca17","isMergeCommit":false,"messageTitle":"Update FXML file names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":0,"deletions":0}}},{"hash":"389eaaac1d652a7b2e89ec40d3f00fcdf8c6214d","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7c73138eb57e6752959e1c3d8f181ff1624c5f53","isMergeCommit":false,"messageTitle":"Refactor inner class of ContactListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"708d919a4989d94a45204e59868d069e4d21e3bf","isMergeCommit":false,"messageTitle":"Refactor EditCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":29}}},{"hash":"62eb4903cc07ca746a5498dc6422b2287cf9f0a7","isMergeCommit":false,"messageTitle":"Refactor EditCommand and its dependencies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":33},"test-code":{"insertions":61,"deletions":57}}},{"hash":"28d5e6d0da583ca72ded44c9106c1942421c30e2","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-07","commitResults":[{"hash":"68389d612116f1c07bafd166ae8333d42774f6c7","isMergeCommit":false,"messageTitle":"Refactor more persons to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":40},"other":{"insertions":9,"deletions":9},"test-code":{"insertions":17,"deletions":17}}}]},{"date":"2023-10-08","commitResults":[{"hash":"4a43eaf03b7fddfa8663cc2245fcb467fd980cb0","isMergeCommit":true,"messageTitle":"Merge pull request #27 from CJ-Lee01/branch-Person-Contact-refactor","messageBody":"Refactor person to contact","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"eb0b58e524e57a122e07171e5d92994b2ef238aa","isMergeCommit":true,"messageTitle":"Merge pull request #31 from McNaBry/refactor-person-contact","messageBody":"Refactor person to contact in diagrams, fixed previous refactor\u0027s NPE","fileTypesAndContributionMap":{}},{"hash":"53ab11451cad3914ce014f83f67d30892cd418f2","isMergeCommit":false,"messageTitle":"Add factory method for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"ead20a17f997626adceb6d0b1ddb8250081fe19d","isMergeCommit":false,"messageTitle":"Add subclass for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"5f132cf5c338f66b49f934abb55b5a5b74ae1355","isMergeCommit":false,"messageTitle":"Add tasks in comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"ed10babf1aec013ee41779970b056cb6eba7b543","isMergeCommit":false,"messageTitle":"Add getChildren method for Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"e9f6f02e55c5159090cabc9b19730d57b901a7f4","isMergeCommit":false,"messageTitle":"Add addChild method for Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"b077f23a30b1f5b0d8b98ecb10273e6619b2b46f","isMergeCommit":false,"messageTitle":"Add new exception for illegal operations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0}}},{"hash":"ff7ae089acdce76a37020fc3754c6b3fb7c0a2d5","isMergeCommit":false,"messageTitle":"Add exception thrown when calling addChild","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}}]},{"date":"2023-10-12","commitResults":[{"hash":"2805ec6eb6eca20ad60e583b95dc80415ae4fb32","isMergeCommit":false,"messageTitle":"Add javadocs to delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":6}}},{"hash":"1ad1b59bfd95aff58cce0f0a3b7ab415f8ebb69a","isMergeCommit":false,"messageTitle":"Add javadocs for Contact methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"572205484e2cac7a37484d02fff5f74b25713158","isMergeCommit":false,"messageTitle":"Fix style issues in DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8ef6769a199b21fac4fde6bc367c5576b410c316","isMergeCommit":false,"messageTitle":"Add ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":0}}},{"hash":"5033786e19d37d453c7e3da9544704ada7a50410","isMergeCommit":false,"messageTitle":"Add DeleteByIdCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}},{"hash":"26f4670999bf01fda37a0c91c16e718e1f8e9744","isMergeCommit":false,"messageTitle":"Add DeleteByIdWithChildrenCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"538c16db2c3022365b8c82b8277fd5c75253eaba","isMergeCommit":false,"messageTitle":"Update javadocs of delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"f87453f456a837782360112c525ff88f63a377e2","isMergeCommit":false,"messageTitle":"Add select ID for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"4dfabe6efaff42daf59748949ef6912afdde1434","isMergeCommit":false,"messageTitle":"Add functionality to delete child contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0}}},{"hash":"5a14f7bda492e09a3eebb2dc7c165f7cbef28eb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a35390cdba563327825d1f66333419ec9925461","isMergeCommit":false,"messageTitle":"Add hashcode function to ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"f66a7ffd0e4805f53d80658d657fb40df61fba26","isMergeCommit":false,"messageTitle":"Add regex to ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"79db31cd9475ca6de6c60cee8e84a0b471f5fd4b","isMergeCommit":false,"messageTitle":"Add functionality to get contact by id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"93add4581b5af48980d4ca153d5ebc613cc2806f","isMergeCommit":false,"messageTitle":"Add javadocs to AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"6e99018d655a937799ac283c5db4916af654b292","isMergeCommit":false,"messageTitle":"Add functionality to get contact by id in Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1}}},{"hash":"ee662e9ab959a5b8d367588fbc9125c87cac1e2c","isMergeCommit":false,"messageTitle":"Implement delete by id commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":4}}},{"hash":"ea0c0d336f389b66c8e805679565806c0c9378dd","isMergeCommit":false,"messageTitle":"Fix formatting and spelling errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"a9b73c197bf6daee0f3ce0360102d416c046fa53","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"83126be58d3b0ae450d30703aabae32bd62e50a0","isMergeCommit":false,"messageTitle":"Implement new model method in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2023-10-17","commitResults":[{"hash":"ad8194f67cbd5d06550caba57dc90409038b13cd","isMergeCommit":false,"messageTitle":"Nuke delete by id commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":79}}},{"hash":"6b30a6ea5f716f79eceec78f6a0799567ba05e9f","isMergeCommit":false,"messageTitle":"Add no such contact exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"74baba9e4966557090294725fdba12a22002c55a","isMergeCommit":false,"messageTitle":"Implement delete by id in DeleteCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":24}}},{"hash":"59cc7726a44077e4592065d5da098dd58135f75c","isMergeCommit":false,"messageTitle":"Update javadocs for DeleteCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"70d7ca057909b3a5d0268ccc7608beb0a2461107","isMergeCommit":false,"messageTitle":"Add parseContactId method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"7fbe9a70ce7f879fe7f2de095c8786a673fc6cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fc915f9eb0a5c9ea18eafdc401bad58ad18099e3","isMergeCommit":false,"messageTitle":"Change ContactId to Id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":99},"test-code":{"insertions":2,"deletions":2}}},{"hash":"667451d349060977bf12eb422a87e18954bcfbf0","isMergeCommit":false,"messageTitle":"Add recursive flag to CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"91d7f6fc86563533190166b7a9332f11dcd1a79d","isMergeCommit":false,"messageTitle":"Update DeleteCommandParser to delete id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":2}}},{"hash":"df0eeeabcab2439f11cd2a6100653ae546d41af0","isMergeCommit":false,"messageTitle":"Fix wrong recursive delete message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"39aa1a67893ba0fc430b5ffb3524c0ea50feed8e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8dc9d581ef741ecafec4467712d773d30e367915","isMergeCommit":false,"messageTitle":"Remove unncessary comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2e72dc43a27d03721b14fd4f0630d491ed66f1b2","isMergeCommit":false,"messageTitle":"Fix name for static field in Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"91974fef19cfc9dad56baf5d929a67e125378746","isMergeCommit":false,"messageTitle":"Add todo for Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"3503f6e61a3242451f63889e0f666cc7eef13cc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ca3b9a07b6492ee37aa5601ff3a27336ba3766a","isMergeCommit":true,"messageTitle":"Merge pull request #32 from CJ-Lee01/branch-delete-contacts","messageBody":"Update delete contact functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"90f07b0cd7dc9f080af7accae7a8b2a17ae2c3b5","isMergeCommit":false,"messageTitle":"Change message usage string for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"5b469aaffa702b9201e2fa3a6bf5108420187b48","isMergeCommit":false,"messageTitle":"Update UG for delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2023-10-19","commitResults":[{"hash":"14ba23cfc7a4811f640b9e06e3aa79ec4c6aa4cf","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wxwern/app-rename","messageBody":"Rename the app to Jobby","fileTypesAndContributionMap":{}},{"hash":"285e779789be6e984e9e59d0269f9d17ad0ce08d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4bfdba6b6f99b23f55deb1e1bb0f45e5830f31d9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from McNaBry/add-fields-optional","messageBody":"Make fields for `AddCommand` optional","fileTypesAndContributionMap":{}},{"hash":"b01108d2ecb668f8c03f6836d7ed6add6c20094a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-W08-3:master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"18d96399181325e4add5f89922d2f9bfa55b72eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fb0049d1ec054535c0d28eb45870b5e635b4fb5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7641150ed752033192e3c11a98128f274500f3b2","isMergeCommit":false,"messageTitle":"Update DG for delete use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"612cb65d7589fc1b220953df0a5ad85a2a7947cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}}]}],"wxwern":[{"date":"2023-09-30","commitResults":[{"hash":"db50edb258816c5d7d84fc96b11c5c277829842c","isMergeCommit":false,"messageTitle":"Add Wern member info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"3662e5c8dcb7b0e7a771f1240727763474d19ede","isMergeCommit":false,"messageTitle":"Update README and docs to new project direction","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":65}}},{"hash":"4571961f4a9ac786f48eb611dd06523d254cc8b6","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7352c465e2b359898c1303c667f1f0b244671813","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into project-setup","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f6753a09329da446a1992ba83de212774398bf4d","isMergeCommit":false,"messageTitle":"Fix phrasing errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"60976fa6943578586402d366471ebe70695f3ff5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into self-member-info","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"e24612b3fbf6be0e65cd90950f0edd15f1827cef","isMergeCommit":true,"messageTitle":"Merge pull request #8 from wxwern/self-member-info","messageBody":"Add self member info to AboutUs and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"7c1b7a34080d111bddfb2ff8a50ba548b2fadb7d","isMergeCommit":false,"messageTitle":"Update UG to a skeleton of our new targets","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":54}}},{"hash":"cd3f93596254f1fdddcff24384ca6af8f40bb3f1","isMergeCommit":false,"messageTitle":"Update DG requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":18}}},{"hash":"cd77678bf0668ea0165e7989d1c05d4676099676","isMergeCommit":false,"messageTitle":"Add clarification for angled brackets to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"aa8529877ab2d5baea1972e856755649d8fd7332","isMergeCommit":false,"messageTitle":"Improve UG phrasing and formatting consistency","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":14}}},{"hash":"db4674ae289acb79b4229c46b9bac04ae21b5a09","isMergeCommit":false,"messageTitle":"Fix old references to \u0027persons\u0027 in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f44bd5a4ccbeea5c2664e327c8ba39ba97b00940","isMergeCommit":false,"messageTitle":"Add all user stories planned so far to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"08868aafa86750be34c3e25dbcf5b7fd73731095","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dg-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34434f9ae43c09b83d54cddafb068a6142359f37","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ug-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4d93fd5fbba8b554858de63d26b802ecd1687d9","isMergeCommit":false,"messageTitle":"Fix a grammar error in UG","messageBody":"Co-authored-by: McNaBry \u003cmcnabry123@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e025af43f333b01ec242c0cea1ea6978c3a35d8f","isMergeCommit":true,"messageTitle":"Merge pull request #19 from wxwern/ug-skeleton","messageBody":"Update UG to a skeleton of our new targets","fileTypesAndContributionMap":{}},{"hash":"af11ef224dd23d5193faf7234d6c891fa380cc10","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dg-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"371a988439b26bc2958c2e94ffc71fcba71f5c10","isMergeCommit":true,"messageTitle":"Merge pull request #20 from wxwern/dg-skeleton","messageBody":"Update DG requirements appendix","fileTypesAndContributionMap":{}},{"hash":"c0f14fbf5e1f718f0a78d1eae2077306ebb12898","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4895e9d04fbcd44b2c89308b2f0129fc309f9663","isMergeCommit":true,"messageTitle":"Merge pull request #22 from wamps-jp/master","messageBody":"Add Juanpa ABOUTME and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"1cccf04d588009ff2406a1ddc35b4fd807c43b17","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into photo-name-change","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24d4ae77c7dad6188591e030f52490d7e7001972","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Doc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c060a50d4a370e32993a6d1f55e5dc3222f913c7","isMergeCommit":false,"messageTitle":"Update log file name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-07","commitResults":[{"hash":"e889ad54e6d7a238f319feb85ad203e4e07836b7","isMergeCommit":false,"messageTitle":"Refactor command Prefix to Flag","messageBody":"This is done in preparation for the syntax change for a flag, formerly\nprefix, from f/ to --f, to make it in line with common CLI naming.\n\nAdditionally, future functionality includes prefix-matching of a flag,\nwhich will have naming conflicts and confusions if this is not renamed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":161},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":79,"deletions":79}}},{"hash":"f9186b5a9584f529ca80857f22a51ac6cabf210a","isMergeCommit":false,"messageTitle":"Move flag pre/post-fix to fields within Flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":14},"test-code":{"insertions":9,"deletions":8}}},{"hash":"3c1c427b2bb66fd620b91297422c44299a62aa11","isMergeCommit":false,"messageTitle":"Change flag format to --prefix syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"0ce01a21c3d0bb125b2f465c4e5d60297dac3e36","isMergeCommit":false,"messageTitle":"Fix changes left out during refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39}}},{"hash":"2cecfa4ae4252d35e885772d3967f76e80e2de9c","isMergeCommit":false,"messageTitle":"Make flags use full names as per convention","messageBody":"A future update will allow for prefix-only matching separately.\nFor now, this is done to reduce ambiguity and allow for more flags to\nbe defined with no conflicts.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"a73967006b97b35a646f1e980136c93bfb1667e2","isMergeCommit":false,"messageTitle":"Add whitespace after flag in MESSAGE_USAGE of commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":18}}}]},{"date":"2023-10-08","commitResults":[{"hash":"92575b9557bf886c87fbcdcc5426b186b2e02793","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p1","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"a07f9e8f8b6516bad2d7bcd5dab7d3b66ea69684","isMergeCommit":false,"messageTitle":"Update Prefix to Flag in .puml diagram files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2023-10-10","commitResults":[{"hash":"fcfa0f23ba0df16ed851f2f8e4a5f4829f230f2a","isMergeCommit":false,"messageTitle":"Refactor missed prefix to flag changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":9,"deletions":9}}},{"hash":"c5709c60126bcc74adf503188fa9ab9ff3e609e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p1","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"980436a502683bb7464b38cd2f662fc7096c70a1","isMergeCommit":false,"messageTitle":"Update Contact to use enum for types and fix toModelType","messageBody":"This allows us to distinguish between contact types and allow for proper\nhandling of JSON storage and retrieval of these types.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":10}}},{"hash":"4b44c50a3a67b75360620b1093cec9b1ca5f2cc0","isMergeCommit":false,"messageTitle":"Fix Status and Position requirements and validation regex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8}}},{"hash":"ef41ba9193a09e52d085b5cbe422fbd43e2824e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Add-Organiation\u0027 of github.com:tanshiyu1999/tp into branch-Add-Organiation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"300ccf926f4f05af0049a7f8103fad054cd7ed41","isMergeCommit":false,"messageTitle":"Fix tests and style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":13,"deletions":11}}},{"hash":"a8615612204b8d39d53a4d0420cb9996684af4de","isMergeCommit":false,"messageTitle":"Update UI for additional parameters (WIP)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":6}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c870c871b8fbf17458b11f49d7a73e265115cca4","isMergeCommit":false,"messageTitle":"Improve and fix Contact and Organization relationships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":62}}},{"hash":"2bfa93100dde0b014239d85c10f39604dc1ddc9e","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":40,"deletions":11}}},{"hash":"9dc65d2e6aa9c68780a24a4cb70bf1ecb0337dfa","isMergeCommit":false,"messageTitle":"Fix Url docs and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":9,"deletions":4}}},{"hash":"a953bd290d98e9a0e3b19ad160497d49993c1cba","isMergeCommit":false,"messageTitle":"Change println to use logger class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"90d050e9cab500c53fca71c20b2c2b50b9fea5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into basic-ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f85b17e6eac28a2c43261f0673e8acdb00306c","isMergeCommit":false,"messageTitle":"Update UI to correctly display Organization data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":14}}},{"hash":"42ff65170b31970cc94d01cf0330b5d44b172d08","isMergeCommit":false,"messageTitle":"Tweak display of Id and Contact type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"6574b52af3c7f8b5608eaf8ebf809f5715e79eed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into basic-ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1a128541b91253a6425948a4f556517f6f2fe90e","isMergeCommit":false,"messageTitle":"Update UI to correctly display Recruiter data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"084b3e8c9482397863cc9e759d7082104ebdb125","isMergeCommit":false,"messageTitle":"Refactor argument tokenization to be generic","messageBody":"This changes argument tokenization such that it will parse all flags\nwith the matching default syntax and any explicitly specified flags.\n\nAdditionally, whitespace must now surround the flags for them to be\nvalid.\n\nExtra convenience methods are added to simplify new operations that\ncan be useful for commands thanks to this refactor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":173,"deletions":103}}},{"hash":"fd663388206031441268cfdab29c27e0aa8b6d8f","isMergeCommit":false,"messageTitle":"Fix ArgumentTokenizer tests and related flag parsing bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":6},"test-code":{"insertions":51,"deletions":41}}},{"hash":"a40007db462f83adb0e2084aa833e22152c221cb","isMergeCommit":false,"messageTitle":"Update ArgumentTokenizer test to cover new behavior","messageBody":"The tokenizer will now automatically tokenize flags that are not\nexplicitly given, as long as it matches the default syntax. Thus, we\nadd a new test to explicitly cover this behavior.\n","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":14}}},{"hash":"9ee6bd8a8fc715ef3b4c77123926053eb86ae513","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d9b8b04a4cd277d7fcd73f4931b384797feb73ee","isMergeCommit":false,"messageTitle":"Fix line length","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a03c6ba6757410d73b26d716d2f70b4f6252e223","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wxwern/basic-ui-update","messageBody":"Update UI to display Organization and Recruiter information","fileTypesAndContributionMap":{}},{"hash":"fb0eac040f8114eaed9d4b5306cf366c38ac1afc","isMergeCommit":false,"messageTitle":"Add multi-flag presence checks to ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":2}}},{"hash":"bbb9862edc14ba240228d1924b911c13a874dbef","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b93249e469274e77568a3a3b7a6659ce32204a2e","isMergeCommit":false,"messageTitle":"Improve code structure and JavaDoc for ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}}]},{"date":"2023-10-18","commitResults":[{"hash":"62ac8d7a71fc80c06938e6e10ef371f531bfbc0f","isMergeCommit":false,"messageTitle":"Add tests for ArgumentMultimap and add more helper methods to it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5},"test-code":{"insertions":412,"deletions":0}}},{"hash":"194d20c968a5e75f5f7b17e82d18d3ee27097a13","isMergeCommit":false,"messageTitle":"Remove redundant areFlagsPresent helper methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":25}}},{"hash":"95877ecd17e19dd70be9095e7e2036ddf4564c88","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"42fe5671229434f34305d04f6c3114cc8f19781a","isMergeCommit":false,"messageTitle":"Improve comment phrasing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"534bb15e3cbf17fb6404875ebf5db4bc1911124d","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wxwern/command-parser-update-p2","messageBody":"Overhaul argument tokenization to be generic","fileTypesAndContributionMap":{}},{"hash":"b169b810003a0ebd5531151e56f1b544897f3524","isMergeCommit":false,"messageTitle":"Rename project to Jobby","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":1,"deletions":1},"docs":{"insertions":33,"deletions":34},"test-code":{"insertions":2,"deletions":2}}},{"hash":"327ab8f0cc46f3ed6f4f96a03b054ee642a45f5f","isMergeCommit":false,"messageTitle":"Fix contact formatting error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"68269169673533187bb1d20a8cb9912c81eac7cc","isMergeCommit":false,"messageTitle":"Update example data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":23}}},{"hash":"3c62c9f9fef3fdc79dd4f5386206074dcedf3928","isMergeCommit":false,"messageTitle":"Improve UI layout order and phrasing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"93e80709a2b615776efe717f067eaea5de056b50","isMergeCommit":false,"messageTitle":"Update image and fix docs index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"9e6f0bd1e589cb79bf78c8ab8738c1703381b91a","isMergeCommit":false,"messageTitle":"Fix an Id entry in the default contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3071a1631d80c8340654146f1988659ff518fdc1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-Organization","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8bc20ff429fed05abc6097973c93da9ef4128691","isMergeCommit":false,"messageTitle":"Remove organization RID from parsing and JSON key","messageBody":"These have design flaws that will lead to more user confusion and\npossible bugs than it\u0027s worth. They are removed from here, and\nremaining getters should be modified to be automatically determined\nin future updates instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20},"test-code":{"insertions":9,"deletions":9}}},{"hash":"942eaacc2903953b076c2204a01a8ffeb38cb4c5","isMergeCommit":true,"messageTitle":"Merge pull request #43 from tanshiyu1999/branch-Update-Organization","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"5d3ba60eaac3b863d86c8ed5d04b50faae2b8d1a","isMergeCommit":false,"messageTitle":"Update UG and DG command parsing info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":2}}},{"hash":"7b5b98595a301c7a8793ac912b96197170f6c44a","isMergeCommit":false,"messageTitle":"Tweak a phrase in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"64020d332bf786b7d2e2ca6102c7786bd9f79b94","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-add-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c3128a6ffd4d88bc8e70ff9c6149f8d29307aae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from McNaBry/update-add-UG","messageBody":"Update Add Command UG","fileTypesAndContributionMap":{}},{"hash":"fd9d6e8949393e0c39b926256726e7f6238e7c5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-and-default-data-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb39b600ee5fe12dc94830aa0deb69f9a5dff66","isMergeCommit":false,"messageTitle":"Fix compile error after merge fd9d6e8","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"7be2ab7d332bccdd3b2d2b8fe7580e6e08de7827","isMergeCommit":true,"messageTitle":"Merge pull request #46 from wxwern/ui-and-default-data-updates","messageBody":"Update app UI, default data and relevant docs","fileTypesAndContributionMap":{}},{"hash":"163c27870863cc3db0752a79ec79328b025611c6","isMergeCommit":false,"messageTitle":"Add RepoSense links, fix AboutUs, remove johndoe.md PPP template","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":53}}},{"hash":"b10372e3faf59e0462aa4cdc1822fe7a4189be8e","isMergeCommit":false,"messageTitle":"Fix help window URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"85da2f49dfa58136ba378e3ce68ce12487160fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into parser-documentation-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"20ddc5298ce7b9a8ceb057826c82fb53b9f2c936","isMergeCommit":false,"messageTitle":"Remove outdated warning","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"bfb08ec81d74ba3befe01bde695e6536c1d2b8d6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from wxwern/parser-documentation-updates","messageBody":"Update UG and DG to include new command parsing info","fileTypesAndContributionMap":{}},{"hash":"7d5fc92d1e88a493d3f37c8da09cfe695732e4eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d918ad5d4d2d699ad7c33535ef1be49bbf5ef90e","isMergeCommit":true,"messageTitle":"Merge pull request #53 from McNaBry/refactor-DG","messageBody":"Update DG diagrams to reflect changes","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"521d03170f7c55cef69e3cc6f45074587d6dae65","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-codecov","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"675a36b07d0c3c2af388480a70e4ed649ad3c86c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-codecov","messageBody":"","fileTypesAndContributionMap":{}}]}],"wamps-jp":[{"date":"2023-10-03","commitResults":[{"hash":"e7f9669c6482bc21b471e293a3adcd50bedc32ce","isMergeCommit":false,"messageTitle":"Add PPP for Juanpa","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":0}}},{"hash":"68f9afe6bea650f9b3888a4b72904cea34f81441","isMergeCommit":false,"messageTitle":"Fix whitespace and newline issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2023-10-04","commitResults":[{"hash":"02bcf1d080878e5209d677faf67b6721551e5ac2","isMergeCommit":false,"messageTitle":"Update UG and nomenclature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"e72235f9ee79c5b0faf0c80668484235f415ef73","isMergeCommit":false,"messageTitle":"Update list command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3},"test-code":{"insertions":5,"deletions":2}}},{"hash":"618c113c5f79aa01fdcfeb584cfc55a39641b0c7","isMergeCommit":false,"messageTitle":"Update ListCommand success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":4,"deletions":4}}},{"hash":"8973c82b07741fe91461736952265ea824912fc8","isMergeCommit":false,"messageTitle":"Fix style in ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f1515f8a55640b09294b29a824b3b30cf69a32e7","isMergeCommit":true,"messageTitle":"Merge pull request #39 from wamps-jp/branch-list-command","messageBody":"Update `ListCommand` class functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"e33c4d8ef92411cb8994d98f62a9a808c439a277","isMergeCommit":false,"messageTitle":"Update test cases and documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":31,"deletions":2},"test-code":{"insertions":50,"deletions":0}}},{"hash":"6c1238dafdd78d8da8d1a0395bc4e1cc0c29ed0c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"40f798a9ab432305f6b341219ea3a44f009408fc","isMergeCommit":true,"messageTitle":"Merge PR #45 from CJ-Lee01/branch-delete-contacts","messageBody":"Update Delete command UG, DG and messages","fileTypesAndContributionMap":{}}]}],"tanshiyu1999":[{"date":"2023-09-30","commitResults":[{"hash":"bc6efb65766ba4ae140a8d1bece13ad5481aa0d4","isMergeCommit":false,"messageTitle":"Update detail","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":0}}},{"hash":"b9889ad721033e4b3ef21e5c3037b9c78594defb","isMergeCommit":false,"messageTitle":"Update PPP and About Me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"45ebba66d2fb2727ea1cece8abdab8b358d8a24d","isMergeCommit":true,"messageTitle":"Merge pull request #7 from wxwern/project-setup","messageBody":"Update project to prepare for new direction: SJ++","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"9c081d93d00132477a008cf66e253d806ff74a14","isMergeCommit":false,"messageTitle":"Change ShiYu Info to specification","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"318f11fac80c0dd1ee70830a01814fc7388633a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-W08-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb39eb1eacde1c631b898b291fb118075fc2a8ec","isMergeCommit":true,"messageTitle":"Merge pull request #10 from tanshiyu1999/master","messageBody":"Change ShiYu Info to specification","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"bf88fa223095499e111edfd7b187b681ac6cf50a","isMergeCommit":false,"messageTitle":"Change AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2b74cb20578c167a4b0bd3b5a68bf95f2274356b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tanshiyu1999/photo-name-change","messageBody":"Photo name change","fileTypesAndContributionMap":{}},{"hash":"3c3b90c11ab1169bed1acec3706f1abfa094ce63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UG-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c01b89e4b6cac5b74ea91d69622eb4d32ead466","isMergeCommit":true,"messageTitle":"Merge pull request #26 from wamps-jp/UG-updates","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"06273e080af98d80c8ac57a65a00be5c14b9b268","isMergeCommit":false,"messageTitle":"Add status class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":349,"deletions":1}}}]},{"date":"2023-10-14","commitResults":[{"hash":"93f6c054af400a5715c7ac2a10e215f7b874ae1b","isMergeCommit":false,"messageTitle":"Add Organization to Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":38},"test-code":{"insertions":21,"deletions":2}}}]},{"date":"2023-10-15","commitResults":[{"hash":"c4747cf25d3dad06e9f4dd66b241c76e439eb958","isMergeCommit":false,"messageTitle":"Add Position to Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":11},"test-code":{"insertions":15,"deletions":9}}},{"hash":"91f7e5160e08f08dc9a05551bf73a2d80c91379f","isMergeCommit":false,"messageTitle":"Add status and Position to data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":4}}},{"hash":"f4d5ddfd5a469f3310df2c2bfc8375fe019ed145","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/model/person/Position.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2774595637669c27d031465ae526a9c62da85e07","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/parser/AddCommandParser.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"26c02bfd3d0f3bb7e0e54f60f64a8d777a71c7d9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from tanshiyu1999/branch-Add-Organiation","messageBody":"Add `Organization` class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"499a846cfb14681338301687eb41cea2c6b4e241","isMergeCommit":false,"messageTitle":"Add Rids into Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14},"test-code":{"insertions":4,"deletions":0}}},{"hash":"eb6b610b8811e9c866d6b6211137517a6a98abfd","isMergeCommit":false,"messageTitle":"Add Rids into Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":8},"test-code":{"insertions":169,"deletions":3}}},{"hash":"9df875819f5b6e42b8c6fe10c67df3d72ffd80c7","isMergeCommit":false,"messageTitle":"Add Organization test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"test-code":{"insertions":96,"deletions":37}}},{"hash":"416e6557a213d91d608baa95b2a9b756777aa9f3","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/parser/AddCommandParser.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"04a4978f6ef7c057c7cdbd69bce5e4e2fe4cc22a","isMergeCommit":false,"messageTitle":"Update Organization.java to GetRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c56708467502c02e809a13befc2686047e36f56f","isMergeCommit":false,"messageTitle":"Update JsonAdaptedContact.java to getRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d25f2024cf413c4c93de3a0db879993d70f94ace","isMergeCommit":false,"messageTitle":"Update JsonAdaptedContactTest.java to getRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ad99914b72e2e06fed634bab344eb7ab70605cb1","isMergeCommit":false,"messageTitle":"Update UG Command for Organization and Examples","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"a2f8a4b9a0f9a8ef333c8cc70721685139d6c9cf","isMergeCommit":false,"messageTitle":"Hide rid flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"McNaBry":{"docs":91,"functional-code":763,"test-code":759},"CJ-Lee01":{"docs":99,"functional-code":460,"test-code":154},"wxwern":{"docs":200,"functional-code":748,"test-code":608,"other":2},"wamps-jp":{"docs":70,"functional-code":75,"test-code":54},"tanshiyu1999":{"docs":46,"functional-code":293,"test-code":234}},"authorContributionVariance":{"McNaBry":36310.86,"CJ-Lee01":33385.305,"wxwern":42575.566,"wamps-jp":673.2489,"tanshiyu1999":10535.235},"authorDisplayNameMap":{"McNaBry":"CS2103T-W08-3 BRYA.. YAN","CJ-Lee01":"CS2103T-W08-3 LEE .. JIE","wxwern":"CS2103T-W08-3 LIM .. JIE","wamps-jp":"CS2103T-W08-3 ABOL..ANCO","tanshiyu1999":"CS2103T-W08-3 TAN ..I YU"}} +{"authorDailyContributionsMap":{"McNaBry":[{"date":"2023-09-30","commitResults":[{"hash":"94a1832b68cb6221d527b281c852108f1350ac37","isMergeCommit":false,"messageTitle":"Modify AboutUs and create PPP","messageBody":"Add details about\n- Github account\n- Self-portrait\n- PPP\nto show code contribution and portfolio\n","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":6}}},{"hash":"94454ed11055dfaad89bfd493ba12292c630035d","isMergeCommit":false,"messageTitle":"Update PPP formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":15}}}]},{"date":"2023-10-06","commitResults":[{"hash":"26eca7c319b79e0adbd7671d5a8ba8e3c9203639","isMergeCommit":false,"messageTitle":"Refactor Model class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":28},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":48,"deletions":48}}}]},{"date":"2023-10-07","commitResults":[{"hash":"304e02eee02cf10c36332f7f5bed7b6b27d16bc5","isMergeCommit":false,"messageTitle":"Refactor Logic class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"040d9d4a1525b9b0908c5b1bd3c0516842ed8de9","isMergeCommit":false,"messageTitle":"Refactor Messages class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":9}}},{"hash":"0db9b488886eb70afb3e944a251182a36e699abf","isMergeCommit":false,"messageTitle":"Refactor tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":47,"deletions":47},"test-code":{"insertions":272,"deletions":272}}},{"hash":"cc515fc70cf416821a54284c01e3864f72800a38","isMergeCommit":false,"messageTitle":"Refactor Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8},"test-code":{"insertions":4,"deletions":4}}},{"hash":"25f9e0fa15553522311cb981dfa2ba50678de66a","isMergeCommit":false,"messageTitle":"Refactor UniqueContactList class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":12,"deletions":12}}}]},{"date":"2023-10-08","commitResults":[{"hash":"061d2fda157b8dc9f9230d8d8390d7adf0adf8c0","isMergeCommit":false,"messageTitle":"Fix JavaFX NPE","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b020bacb8184b23349c3b7eef1896fcdb770430c","isMergeCommit":false,"messageTitle":"Refactor diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":30}}}]},{"date":"2023-10-10","commitResults":[{"hash":"2e5b56d4857b7049f192381ea232cc77d97a8c8a","isMergeCommit":true,"messageTitle":"Merge pull request #28 from wxwern/command-parser-update-p1","messageBody":"Refactor the \"Prefix\" class to \"Flag\", and update the defaults to match the Unix-like syntax \"--flag\"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"5fb1be354fbdd95fc25406ec6328b08521db3a3d","isMergeCommit":false,"messageTitle":"Add Recruiter class","messageBody":"Create Recruiter class.\n\nNo class exists to represent a recruiter.\n\nChanges made:\n- AddCommandParser detects the \"recruiter\" preamble.\n- A separate class extending Contact is created.\n- Modify AddCommandParser test to ignore preamble.\n- Add test cases for Recruiter.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":2},"test-code":{"insertions":152,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"f9258e4d7250e63847e92048841835aee61077ee","isMergeCommit":false,"messageTitle":"Update AddCommandParser","messageBody":"Change parser to detect --org flag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":34}}}]},{"date":"2023-10-15","commitResults":[{"hash":"88661e2332cd91a4cf47e4b4ec84f5c4b4dc43b8","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":54},"test-code":{"insertions":19,"deletions":16}}},{"hash":"6b2174945f1813d98dd7536a38451cb8fcd3eb8b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11}}}]},{"date":"2023-10-16","commitResults":[{"hash":"cdd08174707a1c38beb4d32e03dee1826f65b73e","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr/34\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1fca76ffad99cc24a16f67f5625df300f9383c9","isMergeCommit":false,"messageTitle":"Update AddCommandParser","messageBody":"Update parser to parse recruiter flag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"8f3398c6493883f4e4162b0a837c946785dec917","isMergeCommit":false,"messageTitle":"Add Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":54},"test-code":{"insertions":123,"deletions":55}}}]},{"date":"2023-10-17","commitResults":[{"hash":"d1beb9d5d28ecf4488e18edd0b574cda18e14faf","isMergeCommit":false,"messageTitle":"Add Url class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":172,"deletions":29}}},{"hash":"edffcae7358b18639a5b97e6a9a1cb2f88bb88cf","isMergeCommit":false,"messageTitle":"Fix checkstyle and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":9},"test-code":{"insertions":28,"deletions":11}}},{"hash":"1b5ae6d5cf51deb826caeb46c08b98878a8222bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr/34\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9650e4507b0029494dcb2aedd9146c3843519fbb","isMergeCommit":false,"messageTitle":"Update Recruiter class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3},"test-code":{"insertions":2,"deletions":0}}},{"hash":"1c51befa80ade787bad725cf83f00e6da2c34126","isMergeCommit":false,"messageTitle":"Fix RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}},{"hash":"f03f19e89ad9bd9baf806dd17daae65354dbec52","isMergeCommit":false,"messageTitle":"Rename FLAG_ORG flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"4c175722ed3a068bf9444eb7d5587b9742771b87","isMergeCommit":false,"messageTitle":"Add Recruiter Type","messageBody":"Add RECRUITER to Type enum.\n\nParse recruiter type contacts in JSON.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"e4546ce267125387b5783688ad95634677bd94a3","isMergeCommit":false,"messageTitle":"Rectify ORGANIZATION spelling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3a8b9963aa546de44926a2c9ac06bc3814f2bdc0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-recruiter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4a91c1690f18752b80a657c92ba9b2d19cdcd8cc","isMergeCommit":false,"messageTitle":"Fix RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"9a17fdb78532ea1d9c19e63b44ccc633cce38312","isMergeCommit":false,"messageTitle":"Add OID field to Recruiter","messageBody":"- AddCommandParser now parses the oid flag.\n- Recruiter tracks the oid field passed in by user.\n- Currently, the field has no real functionality.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":21},"test-code":{"insertions":29,"deletions":16}}},{"hash":"634a84f60d304a3bdd854ab55f1f231089496d53","isMergeCommit":false,"messageTitle":"Rename getOid method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"bc6e7a1813145c4571a54f39cfc063d789408858","isMergeCommit":false,"messageTitle":"Update Recruiter class","messageBody":"- Add equals for equality check\n- Add hashcode\n- Override toStringBuilder()\n- Change oid field to final\n","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":3}}},{"hash":"f0369a38e6cc6a0f703bee920d5324771fc74167","isMergeCommit":true,"messageTitle":"Merge pull request #33 from McNaBry/add-recruiter","messageBody":"Add `Recruiter` class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"2029b22bbfadb0d7d5b0bd5782c6fbd10149e08c","isMergeCommit":false,"messageTitle":"Change oid field to optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":11}}}]},{"date":"2023-10-19","commitResults":[{"hash":"7fdab3c827273bb9cff2e3894b648ed7aa88bf68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"412a5d9cd64688248021ace2a41704c1547aeecf","isMergeCommit":false,"messageTitle":"Add optional fields to Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":194,"deletions":174},"test-code":{"insertions":34,"deletions":57}}},{"hash":"7603694d53a1ca32c50506a5e7419e3a62de6a3b","isMergeCommit":false,"messageTitle":"Fix checkstyle and javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"59256a6ddd1e108acce06d0c1b74ca59a164ff2d","isMergeCommit":false,"messageTitle":"Update message for AddCommand usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":12}}},{"hash":"c214547b47a72079f69e390a7007a9630b628b77","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into pr/43","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d20d1d2599753c5e5691b523d2d20a90478a7814","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":4}}},{"hash":"3ac5c4f3af6f87662054a4d6d45c85df36bf31a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc448ff7dd3774e17d5baf16d011a33e1950e3bb","isMergeCommit":false,"messageTitle":"Fix UG add recruiter header format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"52c4c75052702f66335ac447db7bfffecf597ebc","isMergeCommit":false,"messageTitle":"Update UG add contact syntax","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"1c5260e8353bc532eb2a9ee767b66fb0a8621ef5","isMergeCommit":false,"messageTitle":"Update UG add recruiter syntax","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"69cdcc78033ddfddacaa600df3491bfa27ec9d33","isMergeCommit":false,"messageTitle":"Fix UG tag parameter format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"404e3894c609b1ade25263fd6b58d9b4129b3896","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-add-UG\u0027 of https://github.com/McNaBry/tp into update-add-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"204bff1f1988c8fb254047e6fb4c7b3325dd7767","isMergeCommit":false,"messageTitle":"Fix UG add organization example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"64f1b8c6b6f42e11f9be318b8302024b86e010c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-help-url","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f5971c9acd6ba600d9c4207f49fd585c877cf5d5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"3267d277c3ae7ea141d80c7e9c917af1ce460118","isMergeCommit":true,"messageTitle":"Merge pull request #52 from wxwern/fix-help-url","messageBody":"Fix help window URL to point to our UG","fileTypesAndContributionMap":{}},{"hash":"295a740806b89d623002dd6ded42403d863f071c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into team-member-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0867710798a965644610c574027a1ba4fd1c5087","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wxwern/team-member-updates","messageBody":"Add RepoSense links, fix AboutUs, remove johndoe.md PPP template","fileTypesAndContributionMap":{}},{"hash":"f455f110d71d40f1502ab28ccd71c5a0ba3a9ce0","isMergeCommit":true,"messageTitle":"Merge pull request #51 from wamps-jp/branch-updating-UG","messageBody":"Update `ListCommand` test cases and documentation","fileTypesAndContributionMap":{}},{"hash":"74d15e44fe9f28992845e5fb3c14da5b8874f004","isMergeCommit":false,"messageTitle":"Update DG diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":6}}}]},{"date":"2023-10-23","commitResults":[{"hash":"515d095d2e47cbcf6434dab230f6ab8a6a7959b8","isMergeCommit":false,"messageTitle":"Refactor person package to contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":77},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":59,"deletions":59}}},{"hash":"3b89885f3797ab92d0114acef481f4ffb8396dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into rename-person-package","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3f95396fc5519461104a9d6253ffb2919b86b20","isMergeCommit":true,"messageTitle":"Merge pull request #56 from McNaBry/rename-person-package","messageBody":"Refactor person package to contact","fileTypesAndContributionMap":{}},{"hash":"0a5bfac20cb84280454187161b6e95ae364fe78a","isMergeCommit":false,"messageTitle":"Change same contact to compare id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":41,"deletions":43}}}]},{"date":"2023-10-24","commitResults":[{"hash":"d5e7d39a9224903797956c984de5e5ae6b6ebea5","isMergeCommit":false,"messageTitle":"Update test naming for same contact","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"33aa04db374a390e23c685e505eda17aa3d55908","isMergeCommit":false,"messageTitle":"Update RecruiterBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":10}}},{"hash":"1d740ca695c09b5327c9289770427ba0f1e95c09","isMergeCommit":false,"messageTitle":"Update TypicalContacts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":9}}},{"hash":"cd36861d74c946ecf802905378fcc82649c64e71","isMergeCommit":false,"messageTitle":"Update RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":38}}},{"hash":"23f1bbd83f77467ba18ee7f8210ec4be5dc0d280","isMergeCommit":false,"messageTitle":"Update OrganizationTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":68,"deletions":42}}},{"hash":"ed73f692fad04f04fed0e1f36f7fb12077448fdc","isMergeCommit":false,"messageTitle":"Fix RecruiterTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":20}}},{"hash":"e79c27079e1db70d9915e12d37e54aa2b6bc36d3","isMergeCommit":true,"messageTitle":"Merge pull request #57 from McNaBry/update-same-contact","messageBody":"Change same contact to compare by id","fileTypesAndContributionMap":{}}]}],"CJ-Lee01":[{"date":"2023-09-28","commitResults":[{"hash":"b4cdd547505c2841875b949f30f6048f94858b07","isMergeCommit":false,"messageTitle":"Add self to AboutUs and contributions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":4}}}]},{"date":"2023-09-30","commitResults":[{"hash":"7784e03d1518d1d0380185852c1484bb1986f4fb","isMergeCommit":false,"messageTitle":"Remove whitespace for run-checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"882517897167d6d7fc36919ce609cf02b54b243d","isMergeCommit":false,"messageTitle":"Change file names to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-04","commitResults":[{"hash":"2399b4c54f0b30af1afbcc87251af9d259dc1aa2","isMergeCommit":false,"messageTitle":"Add command line syntax requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":0}}},{"hash":"2ab124ae72075d70ae23217434c3aeb385b7afca","isMergeCommit":false,"messageTitle":"Add single character argument syntax requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"30eb332aa54d82f1c64fe198f19377df8ad1dbfc","isMergeCommit":false,"messageTitle":"Fix ordering of argument requirement list","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"bf292d56a6aef9b1fb0159ef0d851280a328a2d6","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"1f22d8b7b5465007a11bcd358bade06cf093508d","isMergeCommit":false,"messageTitle":"Add command and argument definition into glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"a87d364bd3c23ca5ccc97c28d3accafdae960c9d","isMergeCommit":false,"messageTitle":"Remove syntax NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":17}}},{"hash":"fad7334d02127a16dd036c1342de1a066a01649a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from CJ-Lee01/branch-Doc","messageBody":"Add NFRs and terms to glossary","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"c5b778dc740ef431908fea07f2238e8ceb4b15f8","isMergeCommit":false,"messageTitle":"Refactor person to contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":210},"other":{"insertions":33,"deletions":33},"docs":{"insertions":46,"deletions":46},"test-code":{"insertions":170,"deletions":169}}},{"hash":"a49c9527293f706046932750c439fed48c579e97","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Person-Contact-refactor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c7f19464fb3e16f11d8f589eff8b67e18853e478","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6}}},{"hash":"a988448c0f9b0c4d177eb789a513a5114bb45490","isMergeCommit":false,"messageTitle":"Fix more style errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-06","commitResults":[{"hash":"30c7793d5db69c9eba9176c178e3665ac1da3e3c","isMergeCommit":false,"messageTitle":"Refactor PersonCard to ContactCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":2,"deletions":2},"docs":{"insertions":1,"deletions":1}}},{"hash":"1d4fe2ea14f2a2d6e644ce54c79fe6a511894a1a","isMergeCommit":false,"messageTitle":"Refactor PersonListPanel to ContactListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":5,"deletions":5}}},{"hash":"6ac7eb13e84819a13c6632e00d5f9ba8fda5ccec","isMergeCommit":false,"messageTitle":"Refactor UniquePersonList to UniqueContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":52,"deletions":52}}},{"hash":"498d6a3be19e0774f46f8ce07dd8909962adca17","isMergeCommit":false,"messageTitle":"Update FXML file names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":0,"deletions":0}}},{"hash":"389eaaac1d652a7b2e89ec40d3f00fcdf8c6214d","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7c73138eb57e6752959e1c3d8f181ff1624c5f53","isMergeCommit":false,"messageTitle":"Refactor inner class of ContactListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"708d919a4989d94a45204e59868d069e4d21e3bf","isMergeCommit":false,"messageTitle":"Refactor EditCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":29}}},{"hash":"62eb4903cc07ca746a5498dc6422b2287cf9f0a7","isMergeCommit":false,"messageTitle":"Refactor EditCommand and its dependencies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":33},"test-code":{"insertions":61,"deletions":57}}},{"hash":"28d5e6d0da583ca72ded44c9106c1942421c30e2","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-07","commitResults":[{"hash":"68389d612116f1c07bafd166ae8333d42774f6c7","isMergeCommit":false,"messageTitle":"Refactor more persons to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":40},"other":{"insertions":9,"deletions":9},"test-code":{"insertions":17,"deletions":17}}}]},{"date":"2023-10-08","commitResults":[{"hash":"4a43eaf03b7fddfa8663cc2245fcb467fd980cb0","isMergeCommit":true,"messageTitle":"Merge pull request #27 from CJ-Lee01/branch-Person-Contact-refactor","messageBody":"Refactor person to contact","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"eb0b58e524e57a122e07171e5d92994b2ef238aa","isMergeCommit":true,"messageTitle":"Merge pull request #31 from McNaBry/refactor-person-contact","messageBody":"Refactor person to contact in diagrams, fixed previous refactor\u0027s NPE","fileTypesAndContributionMap":{}},{"hash":"53ab11451cad3914ce014f83f67d30892cd418f2","isMergeCommit":false,"messageTitle":"Add factory method for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"ead20a17f997626adceb6d0b1ddb8250081fe19d","isMergeCommit":false,"messageTitle":"Add subclass for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"5f132cf5c338f66b49f934abb55b5a5b74ae1355","isMergeCommit":false,"messageTitle":"Add tasks in comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"ed10babf1aec013ee41779970b056cb6eba7b543","isMergeCommit":false,"messageTitle":"Add getChildren method for Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"e9f6f02e55c5159090cabc9b19730d57b901a7f4","isMergeCommit":false,"messageTitle":"Add addChild method for Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"b077f23a30b1f5b0d8b98ecb10273e6619b2b46f","isMergeCommit":false,"messageTitle":"Add new exception for illegal operations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0}}},{"hash":"ff7ae089acdce76a37020fc3754c6b3fb7c0a2d5","isMergeCommit":false,"messageTitle":"Add exception thrown when calling addChild","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}}]},{"date":"2023-10-12","commitResults":[{"hash":"2805ec6eb6eca20ad60e583b95dc80415ae4fb32","isMergeCommit":false,"messageTitle":"Add javadocs to delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":6}}},{"hash":"1ad1b59bfd95aff58cce0f0a3b7ab415f8ebb69a","isMergeCommit":false,"messageTitle":"Add javadocs for Contact methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"572205484e2cac7a37484d02fff5f74b25713158","isMergeCommit":false,"messageTitle":"Fix style issues in DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8ef6769a199b21fac4fde6bc367c5576b410c316","isMergeCommit":false,"messageTitle":"Add ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":0}}},{"hash":"5033786e19d37d453c7e3da9544704ada7a50410","isMergeCommit":false,"messageTitle":"Add DeleteByIdCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}},{"hash":"26f4670999bf01fda37a0c91c16e718e1f8e9744","isMergeCommit":false,"messageTitle":"Add DeleteByIdWithChildrenCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"538c16db2c3022365b8c82b8277fd5c75253eaba","isMergeCommit":false,"messageTitle":"Update javadocs of delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"f87453f456a837782360112c525ff88f63a377e2","isMergeCommit":false,"messageTitle":"Add select ID for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"4dfabe6efaff42daf59748949ef6912afdde1434","isMergeCommit":false,"messageTitle":"Add functionality to delete child contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0}}},{"hash":"5a14f7bda492e09a3eebb2dc7c165f7cbef28eb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a35390cdba563327825d1f66333419ec9925461","isMergeCommit":false,"messageTitle":"Add hashcode function to ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"f66a7ffd0e4805f53d80658d657fb40df61fba26","isMergeCommit":false,"messageTitle":"Add regex to ContactId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"79db31cd9475ca6de6c60cee8e84a0b471f5fd4b","isMergeCommit":false,"messageTitle":"Add functionality to get contact by id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"93add4581b5af48980d4ca153d5ebc613cc2806f","isMergeCommit":false,"messageTitle":"Add javadocs to AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"6e99018d655a937799ac283c5db4916af654b292","isMergeCommit":false,"messageTitle":"Add functionality to get contact by id in Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1}}},{"hash":"ee662e9ab959a5b8d367588fbc9125c87cac1e2c","isMergeCommit":false,"messageTitle":"Implement delete by id commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":4}}},{"hash":"ea0c0d336f389b66c8e805679565806c0c9378dd","isMergeCommit":false,"messageTitle":"Fix formatting and spelling errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"a9b73c197bf6daee0f3ce0360102d416c046fa53","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"83126be58d3b0ae450d30703aabae32bd62e50a0","isMergeCommit":false,"messageTitle":"Implement new model method in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2023-10-17","commitResults":[{"hash":"ad8194f67cbd5d06550caba57dc90409038b13cd","isMergeCommit":false,"messageTitle":"Nuke delete by id commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":79}}},{"hash":"6b30a6ea5f716f79eceec78f6a0799567ba05e9f","isMergeCommit":false,"messageTitle":"Add no such contact exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"74baba9e4966557090294725fdba12a22002c55a","isMergeCommit":false,"messageTitle":"Implement delete by id in DeleteCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":24}}},{"hash":"59cc7726a44077e4592065d5da098dd58135f75c","isMergeCommit":false,"messageTitle":"Update javadocs for DeleteCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"70d7ca057909b3a5d0268ccc7608beb0a2461107","isMergeCommit":false,"messageTitle":"Add parseContactId method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"7fbe9a70ce7f879fe7f2de095c8786a673fc6cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fc915f9eb0a5c9ea18eafdc401bad58ad18099e3","isMergeCommit":false,"messageTitle":"Change ContactId to Id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":99},"test-code":{"insertions":2,"deletions":2}}},{"hash":"667451d349060977bf12eb422a87e18954bcfbf0","isMergeCommit":false,"messageTitle":"Add recursive flag to CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"91d7f6fc86563533190166b7a9332f11dcd1a79d","isMergeCommit":false,"messageTitle":"Update DeleteCommandParser to delete id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":2}}},{"hash":"df0eeeabcab2439f11cd2a6100653ae546d41af0","isMergeCommit":false,"messageTitle":"Fix wrong recursive delete message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"39aa1a67893ba0fc430b5ffb3524c0ea50feed8e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8dc9d581ef741ecafec4467712d773d30e367915","isMergeCommit":false,"messageTitle":"Remove unncessary comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2e72dc43a27d03721b14fd4f0630d491ed66f1b2","isMergeCommit":false,"messageTitle":"Fix name for static field in Contact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"91974fef19cfc9dad56baf5d929a67e125378746","isMergeCommit":false,"messageTitle":"Add todo for Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"3503f6e61a3242451f63889e0f666cc7eef13cc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ca3b9a07b6492ee37aa5601ff3a27336ba3766a","isMergeCommit":true,"messageTitle":"Merge pull request #32 from CJ-Lee01/branch-delete-contacts","messageBody":"Update delete contact functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"90f07b0cd7dc9f080af7accae7a8b2a17ae2c3b5","isMergeCommit":false,"messageTitle":"Change message usage string for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"5b469aaffa702b9201e2fa3a6bf5108420187b48","isMergeCommit":false,"messageTitle":"Update UG for delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2023-10-19","commitResults":[{"hash":"14ba23cfc7a4811f640b9e06e3aa79ec4c6aa4cf","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wxwern/app-rename","messageBody":"Rename the app to Jobby","fileTypesAndContributionMap":{}},{"hash":"285e779789be6e984e9e59d0269f9d17ad0ce08d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4bfdba6b6f99b23f55deb1e1bb0f45e5830f31d9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from McNaBry/add-fields-optional","messageBody":"Make fields for `AddCommand` optional","fileTypesAndContributionMap":{}},{"hash":"b01108d2ecb668f8c03f6836d7ed6add6c20094a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-W08-3:master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"18d96399181325e4add5f89922d2f9bfa55b72eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fb0049d1ec054535c0d28eb45870b5e635b4fb5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7641150ed752033192e3c11a98128f274500f3b2","isMergeCommit":false,"messageTitle":"Update DG for delete use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"612cb65d7589fc1b220953df0a5ad85a2a7947cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-contacts","messageBody":"","fileTypesAndContributionMap":{}}]}],"wxwern":[{"date":"2023-09-30","commitResults":[{"hash":"db50edb258816c5d7d84fc96b11c5c277829842c","isMergeCommit":false,"messageTitle":"Add Wern member info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"3662e5c8dcb7b0e7a771f1240727763474d19ede","isMergeCommit":false,"messageTitle":"Update README and docs to new project direction","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":65}}},{"hash":"4571961f4a9ac786f48eb611dd06523d254cc8b6","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7352c465e2b359898c1303c667f1f0b244671813","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into project-setup","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f6753a09329da446a1992ba83de212774398bf4d","isMergeCommit":false,"messageTitle":"Fix phrasing errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"60976fa6943578586402d366471ebe70695f3ff5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into self-member-info","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"e24612b3fbf6be0e65cd90950f0edd15f1827cef","isMergeCommit":true,"messageTitle":"Merge pull request #8 from wxwern/self-member-info","messageBody":"Add self member info to AboutUs and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"7c1b7a34080d111bddfb2ff8a50ba548b2fadb7d","isMergeCommit":false,"messageTitle":"Update UG to a skeleton of our new targets","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":54}}},{"hash":"cd3f93596254f1fdddcff24384ca6af8f40bb3f1","isMergeCommit":false,"messageTitle":"Update DG requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":18}}},{"hash":"cd77678bf0668ea0165e7989d1c05d4676099676","isMergeCommit":false,"messageTitle":"Add clarification for angled brackets to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"aa8529877ab2d5baea1972e856755649d8fd7332","isMergeCommit":false,"messageTitle":"Improve UG phrasing and formatting consistency","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":14}}},{"hash":"db4674ae289acb79b4229c46b9bac04ae21b5a09","isMergeCommit":false,"messageTitle":"Fix old references to \u0027persons\u0027 in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f44bd5a4ccbeea5c2664e327c8ba39ba97b00940","isMergeCommit":false,"messageTitle":"Add all user stories planned so far to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"08868aafa86750be34c3e25dbcf5b7fd73731095","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dg-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34434f9ae43c09b83d54cddafb068a6142359f37","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ug-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4d93fd5fbba8b554858de63d26b802ecd1687d9","isMergeCommit":false,"messageTitle":"Fix a grammar error in UG","messageBody":"Co-authored-by: McNaBry \u003cmcnabry123@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e025af43f333b01ec242c0cea1ea6978c3a35d8f","isMergeCommit":true,"messageTitle":"Merge pull request #19 from wxwern/ug-skeleton","messageBody":"Update UG to a skeleton of our new targets","fileTypesAndContributionMap":{}},{"hash":"af11ef224dd23d5193faf7234d6c891fa380cc10","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dg-skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"371a988439b26bc2958c2e94ffc71fcba71f5c10","isMergeCommit":true,"messageTitle":"Merge pull request #20 from wxwern/dg-skeleton","messageBody":"Update DG requirements appendix","fileTypesAndContributionMap":{}},{"hash":"c0f14fbf5e1f718f0a78d1eae2077306ebb12898","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4895e9d04fbcd44b2c89308b2f0129fc309f9663","isMergeCommit":true,"messageTitle":"Merge pull request #22 from wamps-jp/master","messageBody":"Add Juanpa ABOUTME and PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"1cccf04d588009ff2406a1ddc35b4fd807c43b17","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into photo-name-change","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24d4ae77c7dad6188591e030f52490d7e7001972","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Doc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c060a50d4a370e32993a6d1f55e5dc3222f913c7","isMergeCommit":false,"messageTitle":"Update log file name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-07","commitResults":[{"hash":"e889ad54e6d7a238f319feb85ad203e4e07836b7","isMergeCommit":false,"messageTitle":"Refactor command Prefix to Flag","messageBody":"This is done in preparation for the syntax change for a flag, formerly\nprefix, from f/ to --f, to make it in line with common CLI naming.\n\nAdditionally, future functionality includes prefix-matching of a flag,\nwhich will have naming conflicts and confusions if this is not renamed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":161},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":79,"deletions":79}}},{"hash":"f9186b5a9584f529ca80857f22a51ac6cabf210a","isMergeCommit":false,"messageTitle":"Move flag pre/post-fix to fields within Flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":14},"test-code":{"insertions":9,"deletions":8}}},{"hash":"3c1c427b2bb66fd620b91297422c44299a62aa11","isMergeCommit":false,"messageTitle":"Change flag format to --prefix syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"0ce01a21c3d0bb125b2f465c4e5d60297dac3e36","isMergeCommit":false,"messageTitle":"Fix changes left out during refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39}}},{"hash":"2cecfa4ae4252d35e885772d3967f76e80e2de9c","isMergeCommit":false,"messageTitle":"Make flags use full names as per convention","messageBody":"A future update will allow for prefix-only matching separately.\nFor now, this is done to reduce ambiguity and allow for more flags to\nbe defined with no conflicts.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"a73967006b97b35a646f1e980136c93bfb1667e2","isMergeCommit":false,"messageTitle":"Add whitespace after flag in MESSAGE_USAGE of commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":18}}}]},{"date":"2023-10-08","commitResults":[{"hash":"92575b9557bf886c87fbcdcc5426b186b2e02793","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p1","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"a07f9e8f8b6516bad2d7bcd5dab7d3b66ea69684","isMergeCommit":false,"messageTitle":"Update Prefix to Flag in .puml diagram files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2023-10-10","commitResults":[{"hash":"fcfa0f23ba0df16ed851f2f8e4a5f4829f230f2a","isMergeCommit":false,"messageTitle":"Refactor missed prefix to flag changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":9,"deletions":9}}},{"hash":"c5709c60126bcc74adf503188fa9ab9ff3e609e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p1","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-16","commitResults":[{"hash":"980436a502683bb7464b38cd2f662fc7096c70a1","isMergeCommit":false,"messageTitle":"Update Contact to use enum for types and fix toModelType","messageBody":"This allows us to distinguish between contact types and allow for proper\nhandling of JSON storage and retrieval of these types.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":10}}},{"hash":"4b44c50a3a67b75360620b1093cec9b1ca5f2cc0","isMergeCommit":false,"messageTitle":"Fix Status and Position requirements and validation regex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8}}},{"hash":"ef41ba9193a09e52d085b5cbe422fbd43e2824e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Add-Organiation\u0027 of github.com:tanshiyu1999/tp into branch-Add-Organiation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"300ccf926f4f05af0049a7f8103fad054cd7ed41","isMergeCommit":false,"messageTitle":"Fix tests and style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":13,"deletions":11}}},{"hash":"a8615612204b8d39d53a4d0420cb9996684af4de","isMergeCommit":false,"messageTitle":"Update UI for additional parameters (WIP)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":6}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c870c871b8fbf17458b11f49d7a73e265115cca4","isMergeCommit":false,"messageTitle":"Improve and fix Contact and Organization relationships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":62}}},{"hash":"2bfa93100dde0b014239d85c10f39604dc1ddc9e","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":40,"deletions":11}}},{"hash":"9dc65d2e6aa9c68780a24a4cb70bf1ecb0337dfa","isMergeCommit":false,"messageTitle":"Fix Url docs and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":9,"deletions":4}}},{"hash":"a953bd290d98e9a0e3b19ad160497d49993c1cba","isMergeCommit":false,"messageTitle":"Change println to use logger class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"90d050e9cab500c53fca71c20b2c2b50b9fea5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into basic-ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f85b17e6eac28a2c43261f0673e8acdb00306c","isMergeCommit":false,"messageTitle":"Update UI to correctly display Organization data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":14}}},{"hash":"42ff65170b31970cc94d01cf0330b5d44b172d08","isMergeCommit":false,"messageTitle":"Tweak display of Id and Contact type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"6574b52af3c7f8b5608eaf8ebf809f5715e79eed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into basic-ui-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1a128541b91253a6425948a4f556517f6f2fe90e","isMergeCommit":false,"messageTitle":"Update UI to correctly display Recruiter data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"084b3e8c9482397863cc9e759d7082104ebdb125","isMergeCommit":false,"messageTitle":"Refactor argument tokenization to be generic","messageBody":"This changes argument tokenization such that it will parse all flags\nwith the matching default syntax and any explicitly specified flags.\n\nAdditionally, whitespace must now surround the flags for them to be\nvalid.\n\nExtra convenience methods are added to simplify new operations that\ncan be useful for commands thanks to this refactor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":173,"deletions":103}}},{"hash":"fd663388206031441268cfdab29c27e0aa8b6d8f","isMergeCommit":false,"messageTitle":"Fix ArgumentTokenizer tests and related flag parsing bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":6},"test-code":{"insertions":51,"deletions":41}}},{"hash":"a40007db462f83adb0e2084aa833e22152c221cb","isMergeCommit":false,"messageTitle":"Update ArgumentTokenizer test to cover new behavior","messageBody":"The tokenizer will now automatically tokenize flags that are not\nexplicitly given, as long as it matches the default syntax. Thus, we\nadd a new test to explicitly cover this behavior.\n","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":14}}},{"hash":"9ee6bd8a8fc715ef3b4c77123926053eb86ae513","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d9b8b04a4cd277d7fcd73f4931b384797feb73ee","isMergeCommit":false,"messageTitle":"Fix line length","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a03c6ba6757410d73b26d716d2f70b4f6252e223","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wxwern/basic-ui-update","messageBody":"Update UI to display Organization and Recruiter information","fileTypesAndContributionMap":{}},{"hash":"fb0eac040f8114eaed9d4b5306cf366c38ac1afc","isMergeCommit":false,"messageTitle":"Add multi-flag presence checks to ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":2}}},{"hash":"bbb9862edc14ba240228d1924b911c13a874dbef","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into command-parser-update-p2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b93249e469274e77568a3a3b7a6659ce32204a2e","isMergeCommit":false,"messageTitle":"Improve code structure and JavaDoc for ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}}]},{"date":"2023-10-18","commitResults":[{"hash":"62ac8d7a71fc80c06938e6e10ef371f531bfbc0f","isMergeCommit":false,"messageTitle":"Add tests for ArgumentMultimap and add more helper methods to it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5},"test-code":{"insertions":412,"deletions":0}}},{"hash":"194d20c968a5e75f5f7b17e82d18d3ee27097a13","isMergeCommit":false,"messageTitle":"Remove redundant areFlagsPresent helper methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":25}}},{"hash":"95877ecd17e19dd70be9095e7e2036ddf4564c88","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2023-10-19","commitResults":[{"hash":"42fe5671229434f34305d04f6c3114cc8f19781a","isMergeCommit":false,"messageTitle":"Improve comment phrasing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"534bb15e3cbf17fb6404875ebf5db4bc1911124d","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wxwern/command-parser-update-p2","messageBody":"Overhaul argument tokenization to be generic","fileTypesAndContributionMap":{}},{"hash":"b169b810003a0ebd5531151e56f1b544897f3524","isMergeCommit":false,"messageTitle":"Rename project to Jobby","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":1,"deletions":1},"docs":{"insertions":33,"deletions":34},"test-code":{"insertions":2,"deletions":2}}},{"hash":"327ab8f0cc46f3ed6f4f96a03b054ee642a45f5f","isMergeCommit":false,"messageTitle":"Fix contact formatting error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"68269169673533187bb1d20a8cb9912c81eac7cc","isMergeCommit":false,"messageTitle":"Update example data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":23}}},{"hash":"3c62c9f9fef3fdc79dd4f5386206074dcedf3928","isMergeCommit":false,"messageTitle":"Improve UI layout order and phrasing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"93e80709a2b615776efe717f067eaea5de056b50","isMergeCommit":false,"messageTitle":"Update image and fix docs index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"9e6f0bd1e589cb79bf78c8ab8738c1703381b91a","isMergeCommit":false,"messageTitle":"Fix an Id entry in the default contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3071a1631d80c8340654146f1988659ff518fdc1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-Organization","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8bc20ff429fed05abc6097973c93da9ef4128691","isMergeCommit":false,"messageTitle":"Remove organization RID from parsing and JSON key","messageBody":"These have design flaws that will lead to more user confusion and\npossible bugs than it\u0027s worth. They are removed from here, and\nremaining getters should be modified to be automatically determined\nin future updates instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20},"test-code":{"insertions":9,"deletions":9}}},{"hash":"942eaacc2903953b076c2204a01a8ffeb38cb4c5","isMergeCommit":true,"messageTitle":"Merge pull request #43 from tanshiyu1999/branch-Update-Organization","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"5d3ba60eaac3b863d86c8ed5d04b50faae2b8d1a","isMergeCommit":false,"messageTitle":"Update UG and DG command parsing info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":2}}},{"hash":"7b5b98595a301c7a8793ac912b96197170f6c44a","isMergeCommit":false,"messageTitle":"Tweak a phrase in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"64020d332bf786b7d2e2ca6102c7786bd9f79b94","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-add-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c3128a6ffd4d88bc8e70ff9c6149f8d29307aae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from McNaBry/update-add-UG","messageBody":"Update Add Command UG","fileTypesAndContributionMap":{}},{"hash":"fd9d6e8949393e0c39b926256726e7f6238e7c5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-and-default-data-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb39b600ee5fe12dc94830aa0deb69f9a5dff66","isMergeCommit":false,"messageTitle":"Fix compile error after merge fd9d6e8","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"7be2ab7d332bccdd3b2d2b8fe7580e6e08de7827","isMergeCommit":true,"messageTitle":"Merge pull request #46 from wxwern/ui-and-default-data-updates","messageBody":"Update app UI, default data and relevant docs","fileTypesAndContributionMap":{}},{"hash":"163c27870863cc3db0752a79ec79328b025611c6","isMergeCommit":false,"messageTitle":"Add RepoSense links, fix AboutUs, remove johndoe.md PPP template","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":53}}},{"hash":"b10372e3faf59e0462aa4cdc1822fe7a4189be8e","isMergeCommit":false,"messageTitle":"Fix help window URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"85da2f49dfa58136ba378e3ce68ce12487160fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into parser-documentation-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"20ddc5298ce7b9a8ceb057826c82fb53b9f2c936","isMergeCommit":false,"messageTitle":"Remove outdated warning","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"bfb08ec81d74ba3befe01bde695e6536c1d2b8d6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from wxwern/parser-documentation-updates","messageBody":"Update UG and DG to include new command parsing info","fileTypesAndContributionMap":{}},{"hash":"7d5fc92d1e88a493d3f37c8da09cfe695732e4eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into refactor-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d918ad5d4d2d699ad7c33535ef1be49bbf5ef90e","isMergeCommit":true,"messageTitle":"Merge pull request #53 from McNaBry/refactor-DG","messageBody":"Update DG diagrams to reflect changes","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"521d03170f7c55cef69e3cc6f45074587d6dae65","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-codecov","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"675a36b07d0c3c2af388480a70e4ed649ad3c86c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-codecov","messageBody":"","fileTypesAndContributionMap":{}}]}],"wamps-jp":[{"date":"2023-10-03","commitResults":[{"hash":"e7f9669c6482bc21b471e293a3adcd50bedc32ce","isMergeCommit":false,"messageTitle":"Add PPP for Juanpa","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":0}}},{"hash":"68f9afe6bea650f9b3888a4b72904cea34f81441","isMergeCommit":false,"messageTitle":"Fix whitespace and newline issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2023-10-04","commitResults":[{"hash":"02bcf1d080878e5209d677faf67b6721551e5ac2","isMergeCommit":false,"messageTitle":"Update UG and nomenclature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"e72235f9ee79c5b0faf0c80668484235f415ef73","isMergeCommit":false,"messageTitle":"Update list command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3},"test-code":{"insertions":5,"deletions":2}}},{"hash":"618c113c5f79aa01fdcfeb584cfc55a39641b0c7","isMergeCommit":false,"messageTitle":"Update ListCommand success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":4,"deletions":4}}},{"hash":"8973c82b07741fe91461736952265ea824912fc8","isMergeCommit":false,"messageTitle":"Fix style in ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f1515f8a55640b09294b29a824b3b30cf69a32e7","isMergeCommit":true,"messageTitle":"Merge pull request #39 from wamps-jp/branch-list-command","messageBody":"Update `ListCommand` class functionality","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"e33c4d8ef92411cb8994d98f62a9a808c439a277","isMergeCommit":false,"messageTitle":"Update test cases and documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":31,"deletions":2},"test-code":{"insertions":50,"deletions":0}}},{"hash":"6c1238dafdd78d8da8d1a0395bc4e1cc0c29ed0c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updating-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"40f798a9ab432305f6b341219ea3a44f009408fc","isMergeCommit":true,"messageTitle":"Merge PR #45 from CJ-Lee01/branch-delete-contacts","messageBody":"Update Delete command UG, DG and messages","fileTypesAndContributionMap":{}}]}],"tanshiyu1999":[{"date":"2023-09-30","commitResults":[{"hash":"bc6efb65766ba4ae140a8d1bece13ad5481aa0d4","isMergeCommit":false,"messageTitle":"Update detail","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":0}}},{"hash":"b9889ad721033e4b3ef21e5c3037b9c78594defb","isMergeCommit":false,"messageTitle":"Update PPP and About Me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"45ebba66d2fb2727ea1cece8abdab8b358d8a24d","isMergeCommit":true,"messageTitle":"Merge pull request #7 from wxwern/project-setup","messageBody":"Update project to prepare for new direction: SJ++","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"9c081d93d00132477a008cf66e253d806ff74a14","isMergeCommit":false,"messageTitle":"Change ShiYu Info to specification","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"318f11fac80c0dd1ee70830a01814fc7388633a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S1-CS2103T-W08-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb39eb1eacde1c631b898b291fb118075fc2a8ec","isMergeCommit":true,"messageTitle":"Merge pull request #10 from tanshiyu1999/master","messageBody":"Change ShiYu Info to specification","fileTypesAndContributionMap":{}}]},{"date":"2023-10-04","commitResults":[{"hash":"bf88fa223095499e111edfd7b187b681ac6cf50a","isMergeCommit":false,"messageTitle":"Change AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2b74cb20578c167a4b0bd3b5a68bf95f2274356b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tanshiyu1999/photo-name-change","messageBody":"Photo name change","fileTypesAndContributionMap":{}},{"hash":"3c3b90c11ab1169bed1acec3706f1abfa094ce63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UG-updates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c01b89e4b6cac5b74ea91d69622eb4d32ead466","isMergeCommit":true,"messageTitle":"Merge pull request #26 from wamps-jp/UG-updates","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"06273e080af98d80c8ac57a65a00be5c14b9b268","isMergeCommit":false,"messageTitle":"Add status class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":349,"deletions":1}}}]},{"date":"2023-10-14","commitResults":[{"hash":"93f6c054af400a5715c7ac2a10e215f7b874ae1b","isMergeCommit":false,"messageTitle":"Add Organization to Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":38},"test-code":{"insertions":21,"deletions":2}}}]},{"date":"2023-10-15","commitResults":[{"hash":"c4747cf25d3dad06e9f4dd66b241c76e439eb958","isMergeCommit":false,"messageTitle":"Add Position to Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":11},"test-code":{"insertions":15,"deletions":9}}},{"hash":"91f7e5160e08f08dc9a05551bf73a2d80c91379f","isMergeCommit":false,"messageTitle":"Add status and Position to data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":4}}},{"hash":"f4d5ddfd5a469f3310df2c2bfc8375fe019ed145","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/model/person/Position.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2774595637669c27d031465ae526a9c62da85e07","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/parser/AddCommandParser.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"26c02bfd3d0f3bb7e0e54f60f64a8d777a71c7d9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from tanshiyu1999/branch-Add-Organiation","messageBody":"Add `Organization` class","fileTypesAndContributionMap":{}}]},{"date":"2023-10-19","commitResults":[{"hash":"499a846cfb14681338301687eb41cea2c6b4e241","isMergeCommit":false,"messageTitle":"Add Rids into Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14},"test-code":{"insertions":4,"deletions":0}}},{"hash":"eb6b610b8811e9c866d6b6211137517a6a98abfd","isMergeCommit":false,"messageTitle":"Add Rids into Organization","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":8},"test-code":{"insertions":169,"deletions":3}}},{"hash":"9df875819f5b6e42b8c6fe10c67df3d72ffd80c7","isMergeCommit":false,"messageTitle":"Add Organization test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"test-code":{"insertions":96,"deletions":37}}},{"hash":"416e6557a213d91d608baa95b2a9b756777aa9f3","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/parser/AddCommandParser.java","messageBody":"Co-authored-by: Wern \u003cdev@wern.cc\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"04a4978f6ef7c057c7cdbd69bce5e4e2fe4cc22a","isMergeCommit":false,"messageTitle":"Update Organization.java to GetRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c56708467502c02e809a13befc2686047e36f56f","isMergeCommit":false,"messageTitle":"Update JsonAdaptedContact.java to getRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d25f2024cf413c4c93de3a0db879993d70f94ace","isMergeCommit":false,"messageTitle":"Update JsonAdaptedContactTest.java to getRecruiterIds","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ad99914b72e2e06fed634bab344eb7ab70605cb1","isMergeCommit":false,"messageTitle":"Update UG Command for Organization and Examples","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"a2f8a4b9a0f9a8ef333c8cc70721685139d6c9cf","isMergeCommit":false,"messageTitle":"Hide rid flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"McNaBry":{"docs":91,"functional-code":765,"test-code":913},"CJ-Lee01":{"docs":99,"functional-code":458,"test-code":154},"wxwern":{"docs":200,"functional-code":748,"test-code":608,"other":2},"wamps-jp":{"docs":70,"functional-code":75,"test-code":54},"tanshiyu1999":{"docs":46,"functional-code":293,"test-code":174}},"authorContributionVariance":{"McNaBry":38098.95,"CJ-Lee01":32531.152,"wxwern":41551.47,"wamps-jp":654.98615,"tanshiyu1999":10248.41},"authorDisplayNameMap":{"McNaBry":"CS2103T-W08-3 BRYA.. YAN","CJ-Lee01":"CS2103T-W08-3 LEE .. JIE","wxwern":"CS2103T-W08-3 LIM .. JIE","wamps-jp":"CS2103T-W08-3 ABOL..ANCO","tanshiyu1999":"CS2103T-W08-3 TAN ..I YU"}} diff --git a/AY2324S1-CS2103T-W13-1_tp_master/authorship.json b/AY2324S1-CS2103T-W13-1_tp_master/authorship.json index 559aebc4..f0bd4e83 100644 --- a/AY2324S1-CS2103T-W13-1_tp_master/authorship.json +++ b/AY2324S1-CS2103T-W13-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W13-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W13-1/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W13-1/tp/graph/badge.svg?token\u003dJF1YGHQMCK)](https://codecov.io/gh/AY2324S1-CS2103T-W13-1/tp)","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"## DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"* DoConnek Pro is **a contact management app for General Practitioner (GP) clinic management staff.**\u003cbr\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":" * Adding, deleting and viewing patient information","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" * Adding, deleting and viewing specialist information (for referrals)","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" * Saving/loading contact information between sessions","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"-":7,"alvinlim277":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"# About Us","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"DoConnek Pro is developed by the W13-1 team.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"### Vansh Nath","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"\u003cimg src\u003d\"images/vansh284.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"[[github](https://github.com/vansh284)]","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"[[portfolio](team/vansh284.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"* Role: Developer","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"* Responsibilities: Team lead, Integration","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"### Gavin Chiam Xiang Zhe","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"\u003cimg src\u003d\"images/gavino3o.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"[[github](http://github.com/gavino3o)]","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"[[portfolio](team/gavino3o.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"* Role: Developer","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":"* Responsibilities: Code Quality, Deliverables and Deadlines, Git Expert","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":"### Lim Jun Han, Alvin","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"\u003cimg src\u003d\"images/alvinlim277.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":"[[github](http://github.com/alvinlim277)] ","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":"[[portfolio](team/alvinlim277.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"* Responsibilities: Documentation, Testing ","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":"### Ng Kok Seng","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":"\u003cimg src\u003d\"images/kokseng1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":"[[github](http://github.com/kokseng1)]","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":"[[portfolio](team/kokseng1.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" * Responsibilities: Scheduling and tracking, in charge of models","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":"### Angky Akdi Frandy Putrakelana","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":"\u003cimg src\u003d\"images/angkyakdifp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":"[[github](http://github.com/angkyakdifp)]","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":"[[portfolio](team/angkyakdifp.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":"* Responsibilities: In Charge of UI, In Charge of Storage","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"Kokseng1":5,"Gavino3o":9,"vansh284":6,"angkyakdifp":5,"-":31,"alvinlim277":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"vansh284"},"content":"The target users...","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"vansh284"},"content":"* are management staff at a General Practitioner\u0027s Clinic","lastModifiedDate":"2023-09-26"},{"lineNumber":263,"author":{"gitId":"vansh284"},"content":"* need to keep track of the clinic\u0027s patients\u0027 details","lastModifiedDate":"2023-09-26"},{"lineNumber":264,"author":{"gitId":"vansh284"},"content":"* need to keep track of the affiliated specialists that the clinic refers patients to","lastModifiedDate":"2023-09-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"vansh284"},"content":"* prefer typing to mouse interactions","lastModifiedDate":"2023-09-26"},{"lineNumber":268,"author":{"gitId":"vansh284"},"content":"* are reasonably comfortable using CLI apps","lastModifiedDate":"2023-09-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":270,"author":{"gitId":"vansh284"},"content":"**Value proposition**: A one-stop application that allows management of both a clinic\u0027s patient and specialist details faster than a typical mouse/GUI driven app.","lastModifiedDate":"2023-09-26"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"vansh284"},"content":"Priorities: Essential (must have) - `* * *`, Typical (nice to have) - `* *`, Novel (unlikely to have) - `*`","lastModifiedDate":"2023-09-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"angkyakdifp"},"content":"|---------|--------------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"vansh284"},"content":"| `* * *` | user | deal with patient and specialist records separately | easily do patient-specific or specialist-specific operations |","lastModifiedDate":"2023-09-29"},{"lineNumber":282,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | add a new patient to the records | keep track of details of new patients |","lastModifiedDate":"2023-10-01"},{"lineNumber":283,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | delete individual patient details | delete records of patients I no longer take care |","lastModifiedDate":"2023-10-01"},{"lineNumber":284,"author":{"gitId":"Kokseng1"},"content":"| `* *` | user | edit details of existing patients | make sure the patients\u0027 details are up to date |","lastModifiedDate":"2023-10-01"},{"lineNumber":285,"author":{"gitId":"Kokseng1"},"content":"| `* *` | user | easily search for patient by name | find relevant patient information quickly |","lastModifiedDate":"2023-10-01"},{"lineNumber":286,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | access a patient\u0027s medical history | provide more informed care based on the patient\u0027s medical history |","lastModifiedDate":"2023-10-01"},{"lineNumber":287,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | access a patient\u0027s contact number | quickly get in contact with the patient |","lastModifiedDate":"2023-10-01"},{"lineNumber":288,"author":{"gitId":"vansh284"},"content":"| `* * *` | user | access a patient\u0027s age | provide age-specific care and treatment to the patient |","lastModifiedDate":"2023-09-29"},{"lineNumber":289,"author":{"gitId":"vansh284"},"content":"| `* *` | user | filter patient records by criteria such as medical condition and age | simplify the process of finding specific patient information |","lastModifiedDate":"2023-09-29"},{"lineNumber":290,"author":{"gitId":"vansh284"},"content":"| `*` | user | customise tags for my patients | have control over the organisation of my patients |","lastModifiedDate":"2023-09-29"},{"lineNumber":291,"author":{"gitId":"vansh284"},"content":"| `*` | user | group delete patients by category or tag | save time when removing large amount of patient records |","lastModifiedDate":"2023-09-29"},{"lineNumber":292,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | add a new specialist to the records | keep track of details of new specialists patients can be referred to |","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"angkyakdifp"},"content":"| `* *` | user | edit details of existing specialists | make sure the specialist details are up to date |","lastModifiedDate":"2023-10-05"},{"lineNumber":294,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | delete specialist details | delete records of specialists I no longer work with |","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | access specialist details | provide relevant details to the patient I am refering |","lastModifiedDate":"2023-10-05"},{"lineNumber":296,"author":{"gitId":"angkyakdifp"},"content":"| `* *` | user | search for specialists by location | refer patients to convenient specialists to minimise time | ","lastModifiedDate":"2023-10-05"},{"lineNumber":297,"author":{"gitId":"Gavino3o"},"content":"| `* *` | user | search for specialists by their speciality | refer patients to the right experts |","lastModifiedDate":"2023-09-29"},{"lineNumber":298,"author":{"gitId":"Gavino3o"},"content":"| `*` | user with poor eyesight | customise font size and style of the App | easily read the information on the screen |","lastModifiedDate":"2023-09-29"},{"lineNumber":299,"author":{"gitId":"Gavino3o"},"content":"| `*` | user who is colour blind | customise colour schemes of the App | meet my accessibility needs |","lastModifiedDate":"2023-09-29"},{"lineNumber":300,"author":{"gitId":"Gavino3o"},"content":"| `*` | user who is a fast typer | perform all tasks will the CLI rather than the GUI | be more efficient in managing records |","lastModifiedDate":"2023-09-29"},{"lineNumber":301,"author":{"gitId":"Gavino3o"},"content":"| `* *` | user who is impatient | add new keyboard shortcuts to the App | save time when performing frequently repeated tasks |","lastModifiedDate":"2023-09-29"},{"lineNumber":302,"author":{"gitId":"alvinlim277"},"content":"| `*` | lazy user | import App data previously stored as a .CSV file directly into the App | save time on setting up the application |","lastModifiedDate":"2023-10-02"},{"lineNumber":303,"author":{"gitId":"alvinlim277"},"content":"| `*` | lazy user | export App data | share the data easily when required |","lastModifiedDate":"2023-10-02"},{"lineNumber":304,"author":{"gitId":"alvinlim277"},"content":"| `* * *` | user | save the App data | retain data for future reference |","lastModifiedDate":"2023-10-02"},{"lineNumber":305,"author":{"gitId":"alvinlim277"},"content":"| `* * *` | user | load previously saved App data | examine past records/information |","lastModifiedDate":"2023-10-02"},{"lineNumber":306,"author":{"gitId":"alvinlim277"},"content":"| `*` | experienced user | manipulate the save file directly | make quick changes to data without having to open the application |","lastModifiedDate":"2023-10-02"},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Kokseng1"},"content":"(For all use cases below, the **System** is the `DoConnek Pro` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-09-26"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"Kokseng1"},"content":"2. System shows a list of persons","lastModifiedDate":"2023-09-28"},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"Kokseng1"},"content":"4. System deletes the person","lastModifiedDate":"2023-09-28"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Kokseng1"},"content":" * 3a1. System shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Kokseng1"},"content":"**Use case: Add a patient**","lastModifiedDate":"2023-09-26"},{"lineNumber":337,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"alvinlim277"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"Kokseng1"},"content":"1. User searches list to check if patient is already in the system","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"Kokseng1"},"content":"2. System shows that there are no entries matching the patient\u0027s name","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"Kokseng1"},"content":"3. User adds patient to the system","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"Kokseng1"},"content":"4. System confirms that the person has been added","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":345,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":346,"author":{"gitId":"alvinlim277"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":347,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":348,"author":{"gitId":"alvinlim277"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"Kokseng1"},"content":"* 3a. The given parameters are invalid.","lastModifiedDate":"2023-09-26"},{"lineNumber":351,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":352,"author":{"gitId":"Kokseng1"},"content":" * 3a1. System shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":353,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":354,"author":{"gitId":"Kokseng1"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-26"},{"lineNumber":355,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":356,"author":{"gitId":"Gavino3o"},"content":"**Use case: Listing all patients**","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":358,"author":{"gitId":"Gavino3o"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":360,"author":{"gitId":"Gavino3o"},"content":"1. User requests to list all patients","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"Gavino3o"},"content":"2. System shows a list of all patients stored ","lastModifiedDate":"2023-09-27"},{"lineNumber":362,"author":{"gitId":"Gavino3o"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":363,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":364,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":365,"author":{"gitId":"Gavino3o"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":366,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"Gavino3o"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-09-27"},{"lineNumber":368,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":369,"author":{"gitId":"Gavino3o"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":370,"author":{"gitId":"Gavino3o"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":371,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":372,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":373,"author":{"gitId":"Gavino3o"},"content":"**Use case: Listing all specialists**","lastModifiedDate":"2023-09-27"},{"lineNumber":374,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":375,"author":{"gitId":"Gavino3o"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":376,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"Gavino3o"},"content":"1. User requests to list all specialists","lastModifiedDate":"2023-09-27"},{"lineNumber":378,"author":{"gitId":"Gavino3o"},"content":"2. System shows a list of all specialists stored ","lastModifiedDate":"2023-09-27"},{"lineNumber":379,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":380,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":381,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":382,"author":{"gitId":"Gavino3o"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":383,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":384,"author":{"gitId":"Gavino3o"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-09-27"},{"lineNumber":385,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":386,"author":{"gitId":"Gavino3o"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":387,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":388,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":389,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":390,"author":{"gitId":"angkyakdifp"},"content":"**Use case: Searching for patients**","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"angkyakdifp"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"angkyakdifp"},"content":"1. User requests to find patients from a keyword.","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"angkyakdifp"},"content":"2. System shows a list of patients that match the keyword with their names.","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"angkyakdifp"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"angkyakdifp"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"angkyakdifp"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":405,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":406,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":407,"author":{"gitId":"angkyakdifp"},"content":"* 1b. System could not find any patient from the keyword","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":409,"author":{"gitId":"angkyakdifp"},"content":" * 1b1. System shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":410,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":411,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":412,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":413,"author":{"gitId":"alvinlim277"},"content":"**Use case: Exit the program**","lastModifiedDate":"2023-09-28"},{"lineNumber":414,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":415,"author":{"gitId":"alvinlim277"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":416,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":417,"author":{"gitId":"alvinlim277"},"content":"1. User requests to exit the program","lastModifiedDate":"2023-09-28"},{"lineNumber":418,"author":{"gitId":"alvinlim277"},"content":"2. System exits the program","lastModifiedDate":"2023-09-28"},{"lineNumber":419,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":420,"author":{"gitId":"alvinlim277"},"content":"* 1a. System detects invalid request format.","lastModifiedDate":"2023-09-27"},{"lineNumber":421,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":422,"author":{"gitId":"alvinlim277"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":423,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":424,"author":{"gitId":"alvinlim277"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":425,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"vansh284"},"content":"4. Should be made for use by a single user rather than multiple users.","lastModifiedDate":"2023-09-26"},{"lineNumber":434,"author":{"gitId":"vansh284"},"content":"5. Any data should be stored locally in a human-editable text file without any use of a Database Management System.","lastModifiedDate":"2023-09-26"},{"lineNumber":435,"author":{"gitId":"vansh284"},"content":"6. Should be usable with the download of a single JAR file of size less than 100 MB.","lastModifiedDate":"2023-09-26"},{"lineNumber":436,"author":{"gitId":"vansh284"},"content":"7. Should not require any installation by the users.","lastModifiedDate":"2023-09-26"},{"lineNumber":437,"author":{"gitId":"vansh284"},"content":"7. Should not depend on any remote server.","lastModifiedDate":"2023-09-26"},{"lineNumber":438,"author":{"gitId":"vansh284"},"content":"8. The product should start from the given code base and be evolved/enhanced/morphed in a breadth-first incremental manner.","lastModifiedDate":"2023-09-26"},{"lineNumber":439,"author":{"gitId":"vansh284"},"content":"9. The code should primarily follow the Object-oriented paradigm.","lastModifiedDate":"2023-09-26"},{"lineNumber":440,"author":{"gitId":"vansh284"},"content":"10. Should only use _appropriate third party frameworks/libraries/services_ that have been approved.","lastModifiedDate":"2023-09-26"},{"lineNumber":441,"author":{"gitId":"vansh284"},"content":"11. The product\u0027s _GUI should work well_ for standard screen resolutions 1920x1080 and higher, and, for screen scales 100% and 125%.","lastModifiedDate":"2023-09-26"},{"lineNumber":442,"author":{"gitId":"vansh284"},"content":"12. The product\u0027s _GUI should be usable_ for resolutions 1280x720 and higher, and, for screen scales 150%.","lastModifiedDate":"2023-09-26"},{"lineNumber":443,"author":{"gitId":"vansh284"},"content":"13. Should be intuitive to use for a user without a technical background.","lastModifiedDate":"2023-09-26"},{"lineNumber":444,"author":{"gitId":"vansh284"},"content":"13. The product is not required to handle printing of the patient and specialist records.","lastModifiedDate":"2023-09-26"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"vansh284"},"content":"* **Appropriate third party frameworks/libraries/systems**: Those frameworks/libraries/systems that are free, open-source, have permissive license terms, don\u0027t require installation by the users and don\u0027t violate other constraints.","lastModifiedDate":"2023-09-26"},{"lineNumber":452,"author":{"gitId":"vansh284"},"content":"* **GUI should work well**: The GUI should not cause resolution-related inconveniences for the user.","lastModifiedDate":"2023-09-26"},{"lineNumber":453,"author":{"gitId":"vansh284"},"content":"* **GUI should be usable**: The GUI\u0027s functions can all be used, although user-experience may be suboptimal.","lastModifiedDate":"2023-09-26"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kokseng1":22,"vansh284":29,"angkyakdifp":29,"Gavino3o":39,"-":361,"alvinlim277":26}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"DoConnek Pro is a **desktop app** that helps **General Practitioner Clinic Management Staff** manage their **contact information for patients and specialists**. It is optimized for **Command Line Interface (CLI) users** while having a **Graphical User Interface (GUI)**. This allows frequent tasks to be completed faster by typing in commands.","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"1. Download the latest `DocConnekPro.jar` from [here](https://github.com/AY2324S1-CS2103T-W13-1/tp/releases).","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your DocConnek Pro.","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar DocConnekPro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":"1. Type the command in the command input box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" * `list -pa` : Lists all patients.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" * `add -pa n/John p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis` : Adds a patient named `John` to the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" * `delete 3` : Deletes the 3rd person shown in the current list.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"* Commands acting on the address book must contain the `-pa` (for patient) and the `-sp` (for specialist) tag to specify which subset they ","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"would like the command to operate on.","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" e.g. in `add -pa n/NAME`, `NAME` is a parameter which can be used as `add -pa n/John Doe`.","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" e.g `n/NAME [m/MEDICAL_HISTORY]` can be used as `n/John Doe m/Osteoporosis` or as `n/John Doe`.","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" e.g. `[m/MEDICAL_HISTORY]…​` can be used as ` ` (i.e. 0 times), `m/Osteoporosis`, `m/Osteoporosis m/Asthma` etc.","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"alvinlim277"},"content":"### Adding a patient or specialist: `add`","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":"Adds a patient or specialist to the address book.","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"alvinlim277"},"content":"Format (for patients): `add -pa n/NAME p/PHONE_NUMBER a/AGE [m/MEDICAL_HISTORY]...​`\u003cbr\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"alvinlim277"},"content":"A patient can have any number of medical histories (including 0)","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"alvinlim277"},"content":"Format (for specialists): `add -sp n/NAME p/PHONE_NUMBER s/SPECIALISATION l/LOCATION`","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"alvinlim277"},"content":"* `add -pa n/John p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis`","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":"* `add -sp n/Jane p/73331515 s/Dermatologist l/Ang Mo Kio`","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":"### Listing patient or specialist records: `list`","lastModifiedDate":"2023-09-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":"Shows a list of all patients or specialists in stored records.","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":"Format: `list -PERSON_TYPE`","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":"* `list -pa` Lists all patients in records.","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":"* `list -sp` Lists all specialists in records.","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":"### Locating persons by their attributes: `find`","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":"Finds persons whose attributes contain any of the given keywords. ","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":"Multiple attributes can be searched at once, the result will display any person","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":"with all attributes containing any of the corresponding keywords in the command.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":"Format: `find -PERSON_TYPE [PREFIX/KEYWORDS]`","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":"* All prefixes are optional. Hence, calling `find -PERSON_TYPE` (without any prefixes) will result in all person of the specified type being listed","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":"* `find -pa n/John` returns the patient `john` and the patient `John Doe`","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":"* `find -sp n/alex david` returns the specialists `Alex Yeoh` and `David Li` ","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":"* `find -sp n/Alex s/Orthopaedic` returns any specialists with the name `Alex` who has the `Orthopaedic` specialty","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":"\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"vansh284"},"content":"### Deleting a patient or specialist : `delete`","lastModifiedDate":"2023-09-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"vansh284"},"content":"Deletes the specified patient or specialist from the stored records.","lastModifiedDate":"2023-09-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"vansh284"},"content":"* The index **must be a positive integer** 1, 2, 3, …​ with a maximum value of the list size.","lastModifiedDate":"2023-09-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"alvinlim277"},"content":"* `list -pa` followed by `delete 2` deletes the 2nd patient in the listed patients. ","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Gavino3o"},"content":"* `find -sp n/Betsy` followed by `delete 1` deletes the 1st specialist from the specialists listed in the `find` command.","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"vansh284"},"content":"Clears all entries from the stored records.","lastModifiedDate":"2023-09-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"Kokseng1"},"content":"### Save and Load Data","lastModifiedDate":"2023-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"Kokseng1"},"content":"The patient and specialist data will automatically be saved to the device’s harddrive every time the data is updated, and will automatically be loaded when the user starts the application. The user does not need to manually save any data.","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":156,"author":{"gitId":"vansh284"},"content":"DoConnek Pro data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":"If your changes to the data file makes its format invalid, DoConnek Pro will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"author":{"gitId":"Kokseng1"},"content":"### UI mock-up :","lastModifiedDate":"2023-09-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":164,"author":{"gitId":"alvinlim277"},"content":"![UI mock-up](images/Ui.png)","lastModifiedDate":"2023-10-03"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"alvinlim277"},"content":"**Add (patient)** | `add -pa n/NAME p/PHONE_NUMBER a/AGE [m/MEDICAL_HISTORY]...` \u003cbr\u003e e.g., `add -pa n/John p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis`","lastModifiedDate":"2023-09-27"},{"lineNumber":186,"author":{"gitId":"alvinlim277"},"content":"**Add (specialist)** | `add -sp n/NAME p/PHONE_NUMBER s/SPECIALISATION l/LOCATION` \u003cbr\u003e e.g., `add -sp n/Jane p/73331515 s/Dermatologist l/Ang Mo Kio`","lastModifiedDate":"2023-09-27"},{"lineNumber":187,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2023-10-13"},{"lineNumber":189,"author":{"gitId":"Gavino3o"},"content":"**Find** | `find -PERSON_TYPE KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find -pa n/James Jake p/73281193`","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"vansh284"},"content":"**List** | `list -pa`","lastModifiedDate":"2023-09-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kokseng1":3,"vansh284":16,"angkyakdifp":6,"Gavino3o":16,"-":138,"alvinlim277":12}},{"path":"docs/team/alvinlim277.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"alvinlim277"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"title: Lim Jun Han, Alvin Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"alvinlim277":26}},{"path":"docs/team/angkyakdifp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"title: Angky Akdi Frandy Putrakelana Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"### Overview:","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"- *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"angkyakdifp":26}},{"path":"docs/team/gavino3o.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"title: Gavin Chiam Xiang Zhe Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"- **Code Contributed:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"- **Contributions to Documentation:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"- **Contributions to team-based tasks:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"- **Review/mentoring contributions:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"- **Contributions beyond the project team:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"Gavino3o":26}},{"path":"docs/team/kokseng1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"title: Ng Kok Seng Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"Kokseng1":26}},{"path":"docs/team/vansh284.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"title: Vansh Nath\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"- **Code Contributed:** [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dvansh284\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" - **User Guide:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" - Added documentation for the feature `delete`","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" - Added details of the non-functional requirements","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"vansh284":23}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" public static final Version VERSION \u003d new Version(1, 2, 1, true);","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"vansh284":1,"-":185}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":" * Adds specified String to the end of the toString return while keeping the format constant","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"Kokseng1"},"content":" * @param stringToAdd string to be added","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" * @param originalToString string to be added to","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"Kokseng1"},"content":" * @return String consistent with Person#toString() format","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"Kokseng1"},"content":" public static String addFieldToPersonToString(String stringToAdd, String originalToString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"Kokseng1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(originalToString);","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"Kokseng1"},"content":" int insertIndex \u003d originalToString.length() - 1;","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"Kokseng1"},"content":" stringBuilder.insert(insertIndex, stringToAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"Kokseng1"},"content":" return (stringBuilder.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kokseng1":15,"-":68}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_INVALID_PERSON_TYPE \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" \"Invalid person type! Specify either \\\"-pa\\\" for patient or \\\"-sp\\\" for specialist\";","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_PERSON_TYPE_MISMATCH_INDEX \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" \"The person type tag does not match the person type at the specified index.\";","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" if (person instanceof Patient) {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" builder.insert(0, \"Patient \")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Age: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" .append(patient.getAge())","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Medical History: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" .append(patient.getMedicalHistory());","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" if (person instanceof Specialist) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" builder.insert(0, \"Specialist \")","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Specialty: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" .append(specialist.getSpecialty());","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":18,"vansh284":4,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" + \": Adds a patient to the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" + \": Adds a specialist to the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" if (toAdd instanceof Patient) {","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":31,"vansh284":2,"angkyakdifp":3,"-":74,"alvinlim277":8}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" + \"1\";","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" * @param targetIndex of the person in the list to delete","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"vansh284":5,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" + \": Edit a patient in the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"Kokseng1"},"content":" + \": edit a specialist in the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" if (editPersonDescriptor instanceof EditPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" this.editPersonDescriptor \u003d new EditPatientDescriptor((EditPatientDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" this.editPersonDescriptor \u003d new EditSpecialistDescriptor((EditSpecialistDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" Person editedPerson;","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"vansh284"},"content":" if (personToEdit instanceof Patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"vansh284"},"content":" if (!(editPersonDescriptor instanceof EditPatientDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"vansh284"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_TYPE_MISMATCH_INDEX);","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" editedPerson \u003d createEditedPatient((Patient) personToEdit, (EditPatientDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"vansh284"},"content":" if (!(editPersonDescriptor instanceof EditSpecialistDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"vansh284"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_TYPE_MISMATCH_INDEX);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"vansh284"},"content":" editedPerson \u003d createEditedSpecialist((Specialist) personToEdit,","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" (EditSpecialistDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"vansh284"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2023-10-06"},{"lineNumber":141,"author":{"gitId":"vansh284"},"content":" * edited with {@code editPatientDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"vansh284"},"content":" private static Patient createEditedPatient(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"vansh284"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"vansh284"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"vansh284"},"content":" Phone updatedPhone \u003d editPatientDescriptor.getPhone().orElse(patientToEdit.getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":148,"author":{"gitId":"vansh284"},"content":" Email updatedEmail \u003d editPatientDescriptor.getEmail().orElse(patientToEdit.getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"vansh284"},"content":" Set\u003cTag\u003e updatedTags \u003d editPatientDescriptor.getTags().orElse(patientToEdit.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":150,"author":{"gitId":"vansh284"},"content":" Age updatedAge \u003d editPatientDescriptor.getAge().orElse(patientToEdit.getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e updatedMedicalHistory \u003d editPatientDescriptor.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"angkyakdifp"},"content":" .orElse(patientToEdit.getMedicalHistory());","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"alvinlim277"},"content":" return new Patient(updatedName, updatedPhone, updatedEmail, updatedTags, updatedAge,","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"vansh284"},"content":" updatedMedicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":157,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":158,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" * Creates and returns a {@code Specialist} with the details of {@code specialistToEdit}","lastModifiedDate":"2023-10-06"},{"lineNumber":160,"author":{"gitId":"vansh284"},"content":" * edited with {@code editSpecialistDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":161,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" private static Specialist createEditedSpecialist(Specialist specialistToEdit,","lastModifiedDate":"2023-10-06"},{"lineNumber":163,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":164,"author":{"gitId":"vansh284"},"content":" assert specialistToEdit !\u003d null;","lastModifiedDate":"2023-10-06"},{"lineNumber":165,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":166,"author":{"gitId":"vansh284"},"content":" Name updatedName \u003d editSpecialistDescriptor.getName().orElse(specialistToEdit.getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":167,"author":{"gitId":"vansh284"},"content":" Phone updatedPhone \u003d editSpecialistDescriptor.getPhone().orElse(specialistToEdit.getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":168,"author":{"gitId":"vansh284"},"content":" Email updatedEmail \u003d editSpecialistDescriptor.getEmail().orElse(specialistToEdit.getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":169,"author":{"gitId":"alvinlim277"},"content":" Location updatedLocation \u003d editSpecialistDescriptor.getLocation().orElse(specialistToEdit.getLocation());","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"vansh284"},"content":" Set\u003cTag\u003e updatedTags \u003d editSpecialistDescriptor.getTags().orElse(specialistToEdit.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":171,"author":{"gitId":"Kokseng1"},"content":" Specialty updatedSpecialty \u003d editSpecialistDescriptor.getSpecialty().orElse(specialistToEdit.getSpecialty());","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(updatedName, updatedPhone, updatedEmail, updatedLocation, updatedTags, updatedSpecialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"vansh284"},"content":" public abstract static class EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"alvinlim277"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":248,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":265,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":301,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"vansh284"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"vansh284"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":306,"author":{"gitId":"vansh284"},"content":" public static class EditPatientDescriptor extends EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":307,"author":{"gitId":"vansh284"},"content":" private Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":308,"author":{"gitId":"angkyakdifp"},"content":" private Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":309,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":310,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":311,"author":{"gitId":"vansh284"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-06"},{"lineNumber":312,"author":{"gitId":"vansh284"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-06"},{"lineNumber":313,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":314,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":315,"author":{"gitId":"vansh284"},"content":" super(toCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":316,"author":{"gitId":"angkyakdifp"},"content":" setMedicalHistory(toCopy.medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":317,"author":{"gitId":"vansh284"},"content":" setAge(toCopy.age);","lastModifiedDate":"2023-10-15"},{"lineNumber":318,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":319,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":320,"author":{"gitId":"angkyakdifp"},"content":" public EditPatientDescriptor() {}","lastModifiedDate":"2023-10-13"},{"lineNumber":321,"author":{"gitId":"angkyakdifp"},"content":" public void setMedicalHistory(Set\u003cMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":322,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d (medicalHistory !\u003d null) ? new HashSet\u003c\u003e(medicalHistory) : null;","lastModifiedDate":"2023-10-17"},{"lineNumber":323,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":324,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":325,"author":{"gitId":"vansh284"},"content":" public void setAge(Age age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":326,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":327,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":328,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":329,"author":{"gitId":"angkyakdifp"},"content":" public Optional\u003cSet\u003cMedicalHistory\u003e\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"angkyakdifp"},"content":" return (medicalHistory !\u003d null)","lastModifiedDate":"2023-10-17"},{"lineNumber":331,"author":{"gitId":"angkyakdifp"},"content":" ? Optional.of(Collections.unmodifiableSet(medicalHistory))","lastModifiedDate":"2023-10-17"},{"lineNumber":332,"author":{"gitId":"angkyakdifp"},"content":" : Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":333,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":334,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":335,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":336,"author":{"gitId":"vansh284"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":337,"author":{"gitId":"vansh284"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":338,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":339,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":340,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":341,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":342,"author":{"gitId":"angkyakdifp"},"content":" if (super.equals(other) \u0026\u0026 other instanceof EditPatientDescriptor) {","lastModifiedDate":"2023-10-13"},{"lineNumber":343,"author":{"gitId":"angkyakdifp"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":344,"author":{"gitId":"vansh284"},"content":" return Objects.equals(age, otherEditPatientDescriptor.age)","lastModifiedDate":"2023-10-15"},{"lineNumber":345,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 Objects.equals(medicalHistory, otherEditPatientDescriptor.medicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":346,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":347,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":348,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":349,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":350,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"vansh284"},"content":" String stringToAdd \u003d \", age\u003d\" + age + \", medical history\u003d\" + medicalHistory;","lastModifiedDate":"2023-10-15"},{"lineNumber":352,"author":{"gitId":"angkyakdifp"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":353,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":354,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":355,"author":{"gitId":"angkyakdifp"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-13"},{"lineNumber":356,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":357,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":358,"author":{"gitId":"angkyakdifp"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-13"},{"lineNumber":359,"author":{"gitId":"vansh284"},"content":" return super.isAnyFieldEdited() || CollectionUtil.isAnyNonNull(age, medicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":360,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":361,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":362,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":363,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":364,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":365,"author":{"gitId":"vansh284"},"content":" * Stores the details to edit the specialist with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-06"},{"lineNumber":366,"author":{"gitId":"vansh284"},"content":" * corresponding field value of the specialist.","lastModifiedDate":"2023-10-06"},{"lineNumber":367,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":368,"author":{"gitId":"vansh284"},"content":" public static class EditSpecialistDescriptor extends EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":369,"author":{"gitId":"Kokseng1"},"content":" private Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":370,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":371,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":372,"author":{"gitId":"vansh284"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-06"},{"lineNumber":373,"author":{"gitId":"vansh284"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-06"},{"lineNumber":374,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":375,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptor(EditSpecialistDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"vansh284"},"content":" super(toCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"alvinlim277"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2023-10-16"},{"lineNumber":378,"author":{"gitId":"Kokseng1"},"content":" setSpecialty(toCopy.specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":379,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"Kokseng1"},"content":" public EditSpecialistDescriptor() {}","lastModifiedDate":"2023-10-10"},{"lineNumber":381,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":382,"author":{"gitId":"alvinlim277"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":383,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":384,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":385,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":386,"author":{"gitId":"alvinlim277"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":387,"author":{"gitId":"alvinlim277"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":388,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":389,"author":{"gitId":"Kokseng1"},"content":" public void setSpecialty(Specialty specialty) {","lastModifiedDate":"2023-10-10"},{"lineNumber":390,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":391,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":392,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":393,"author":{"gitId":"Kokseng1"},"content":" public Optional\u003cSpecialty\u003e getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":394,"author":{"gitId":"Kokseng1"},"content":" return Optional.ofNullable(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":395,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":396,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":397,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":398,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":399,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":400,"author":{"gitId":"Kokseng1"},"content":" if (super.equals(other) \u0026\u0026 other instanceof EditSpecialistDescriptor) {","lastModifiedDate":"2023-10-10"},{"lineNumber":401,"author":{"gitId":"Kokseng1"},"content":" EditSpecialistDescriptor otherEditSpecialistDescriptor \u003d (EditSpecialistDescriptor) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":402,"author":{"gitId":"alvinlim277"},"content":" return Objects.equals(specialty, otherEditSpecialistDescriptor.specialty)","lastModifiedDate":"2023-10-16"},{"lineNumber":403,"author":{"gitId":"alvinlim277"},"content":" \u0026\u0026 Objects.equals(location, otherEditSpecialistDescriptor.location);","lastModifiedDate":"2023-10-16"},{"lineNumber":404,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":405,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":406,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":407,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":408,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":409,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":410,"author":{"gitId":"alvinlim277"},"content":" String stringToAdd \u003d \", location\u003d\" + location + \", specialty\u003d\" + specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":411,"author":{"gitId":"Kokseng1"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":412,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":413,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":414,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":415,"author":{"gitId":"Kokseng1"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-10"},{"lineNumber":416,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":417,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":418,"author":{"gitId":"Kokseng1"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-10"},{"lineNumber":419,"author":{"gitId":"Kokseng1"},"content":" return super.isAnyFieldEdited() || CollectionUtil.isAnyNonNull(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":420,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":421,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":422,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Kokseng1":69,"angkyakdifp":31,"vansh284":100,"-":201,"alvinlim277":21}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting DoConnek Pro as requested ...\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":18,"alvinlim277":1}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" + \": Finds all Patients whose attributes contain any of \"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" + \": Finds all Specialists whose attributes contain any of \"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" private final FindPredicateMap findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" private final PersonType personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" * @param findPredicateMap The predicate that describes the name being searched for","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" * @param personType The type of person being searched for i.e. patient or specialist","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" public FindCommand(FindPredicateMap findPredicateMap, PersonType personType) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" this.findPredicateMap \u003d findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" this.personType \u003d personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e findPredicateMap.getAllPredicates().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" .map(pred -\u003e pred.test(person))","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" model.updateFilteredPersonList(predicate.and(personType.getSearchPredicate()));","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap.equals(otherFindCommand.findPredicateMap)","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" \u0026\u0026 personType.equals(otherFindCommand.personType);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" .add(\"predicate\", findPredicateMap)","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"vansh284"},"content":" .add(\"personType\", personType)","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" return personType;","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" public FindPredicateMap getPredicate() {","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Kokseng1":34,"vansh284":10,"Gavino3o":33,"-":46,"alvinlim277":1}},{"path":"src/main/java/seedu/address/logic/commands/FindPredicateMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" * Stores mapping of prefixes to their respective predicates for a {@code find} command.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" * Keys are unique and each key should be associated with one predicate value.","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" * Values for a given key are stored in a HashSet, and the insertion ordering is not maintained.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"public class FindPredicateMap {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" /** Prefixes mapped to their respective predicates **/","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" private final Map\u003cPrefix, Predicate\u003cPerson\u003e\u003e map \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" * Associates the specified predicate value with {@code prefix} key in this map.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" * @param prefix prefix key with which the specified argument value is to be associated","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" * @param predicateValue predicate value to be associated with the specified prefix key","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" public void put(Prefix prefix, Predicate\u003cPerson\u003e predicateValue) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" map.put(prefix, predicateValue);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" * Returns the predicate value of {@code prefix}.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" public Optional\u003cPredicate\u003cPerson\u003e\u003e getPredicateValue(Prefix prefix) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" return Optional.ofNullable(map.get(prefix));","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" * Returns all predicate value of {@code prefix}.","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" public List\u003cPredicate\u003cPerson\u003e\u003e getAllPredicates() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" if (map.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e(map.values());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof FindPredicateMap)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap otherFindPredicateMap \u003d (FindPredicateMap) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"Gavino3o"},"content":" if (this.map.size() !\u003d otherFindPredicateMap.map.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" boolean isHashMapEquals \u003d this.map.equals(otherFindPredicateMap.map);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" boolean isKeyValueEquals \u003d this.map.keySet().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" .map(key -\u003e otherFindPredicateMap.getPredicateValue(key).equals(this.getPredicateValue(key)))","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" return isHashMapEquals || isKeyValueEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"Gavino3o":73}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" public static final String PATIENT_MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" public static final String SPECIALIST_MESSAGE_SUCCESS \u003d \"Listed all specialists\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" private final PersonType personType;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" * @param personType The type of person being listed i.e. patient or specialist","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" public ListCommand(PersonType personType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" this.personType \u003d personType;","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(personType.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" return new CommandResult(personType \u003d\u003d PersonType.PATIENT","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" ? PATIENT_MESSAGE_SUCCESS","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" : SPECIALIST_MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":20,"alvinlim277":18}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"public class AddCommandParser implements ParserComplex\u003cAddCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public AddCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" Person person \u003d parsePatient(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" Person person \u003d parseSpecialist(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" private Patient parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AGE)","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE_PATIENT));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_AGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory \u003d ParserUtil.parseMedicalHistories(argMultimap","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" .getAllValues(PREFIX_MEDICALHISTORY));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"alvinlim277"},"content":" Patient patient \u003d new Patient(name, phone, email, tagList, age, medicalHistory);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" return patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" private Specialist parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"Kokseng1"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"alvinlim277"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_LOCATION, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SPECIALTY)","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_SPECIALIST));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"Kokseng1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"alvinlim277"},"content":" Location location \u003d ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Kokseng1"},"content":" Specialty specialty \u003d ParserUtil.parseSpecialty(argMultimap.getValue(PREFIX_SPECIALTY).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"alvinlim277"},"content":" Specialist specialist \u003d new Specialist(name, phone, email, location, tagList, specialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" return specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Kokseng1":10,"vansh284":24,"angkyakdifp":10,"-":55,"alvinlim277":13}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" * Used for initial separation of command word and args. Basic commands do not require a person type tag.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" \"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" * Used for initial separation of command word, person type and args. Complex commands require a person type tag.","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" private static final Pattern COMPLEX_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" \"(?\u003ccommandWord\u003e\\\\S+)\\\\s(?\u003cpersonType\u003e-\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" final Matcher matcherBasic \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" final Matcher matcherPersonType \u003d COMPLEX_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" if (matcherPersonType.matches()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" final String commandWord \u003d matcherPersonType.group(\"commandWord\");","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" final String personTypeWord \u003d matcherPersonType.group(\"personType\");","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" final String arguments \u003d matcherPersonType.group(\"arguments\");","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" // (i.e., FINE, FINER and lower) log messages such as the one below.","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" logger.fine(","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" \"Command word: \" + commandWord + \"; Person type: \" + personTypeWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" PersonType personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" if (personTypeWord.equals(PATIENT_TAG)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" personType \u003d PersonType.PATIENT;","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" } else if (personTypeWord.equals(SPECIALIST_TAG)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" personType \u003d PersonType.SPECIALIST;","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_TYPE);","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" return new AddCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" return new EditCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" return new FindCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" return new ListCommand(personType);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" default:","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" } else if (matcherBasic.matches()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" final String commandWord \u003d matcherBasic.group(\"commandWord\");","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"vansh284"},"content":" final String arguments \u003d matcherBasic.group(\"arguments\");","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"vansh284"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":" // (i.e., FINE, FINER and lower) log messages such as the one below.","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"alvinlim277"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"alvinlim277"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"vansh284"},"content":" return new ClearCommand();","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":117,"author":{"gitId":"Kokseng1"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"Kokseng1"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"Kokseng1"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"Kokseng1"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_TYPE);","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":6,"vansh284":50,"-":66,"alvinlim277":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"a/\");","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" public static final Prefix PREFIX_MEDICALHISTORY \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" public static final Prefix PREFIX_SPECIALTY \u003d new Prefix(\"s/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" /* Tag definitions */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" public static final String PATIENT_TAG \u003d \"-pa\";","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" public static final String SPECIALIST_TAG \u003d \"-sp\";","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Kokseng1":1,"vansh284":4,"angkyakdifp":1,"Gavino3o":1,"-":14,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"public class DeleteCommandParser implements ParserBasic\u003cDeleteCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":28,"alvinlim277":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":"public class EditCommandParser implements ParserComplex\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" public EditCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" return parsePatient(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" return parseSpecialist(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" private EditCommand parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_AGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" EditCommand.MESSAGE_USAGE_PATIENT), pe);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(ParserUtil.parseAge(argMultimap","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" .getValue(PREFIX_AGE).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":" parseMedicalHistoriesForEdit(argMultimap.getAllValues(PREFIX_MEDICALHISTORY))","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" .ifPresent(editPatientDescriptor::setMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPatientDescriptor::setTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":" if (!editPatientDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" return new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" private EditCommand parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"Kokseng1"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Kokseng1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" Index index;","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" try {","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"Kokseng1"},"content":" EditCommand.MESSAGE_USAGE_SPECIALIST), pe);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":114,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"alvinlim277"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"alvinlim277"},"content":" editSpecialistDescriptor.setLocation(ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":122,"author":{"gitId":"Kokseng1"},"content":" if (argMultimap.getValue(PREFIX_SPECIALTY).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":123,"author":{"gitId":"Kokseng1"},"content":" editSpecialistDescriptor.setSpecialty(ParserUtil.parseSpecialty(","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"Kokseng1"},"content":" argMultimap.getValue(PREFIX_SPECIALTY).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":125,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":126,"author":{"gitId":"vansh284"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editSpecialistDescriptor::setTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" if (!editSpecialistDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":131,"author":{"gitId":"vansh284"},"content":" return new EditCommand(index, editSpecialistDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":149,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"angkyakdifp"},"content":" * Parses {@code Collection\u003cString\u003e medicalHistories} into a {@code Set\u003cMedicalHistory\u003e}","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"angkyakdifp"},"content":" * if {@code medicalHistories} is non-empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"angkyakdifp"},"content":" * If {@code medicalHistories} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"angkyakdifp"},"content":" * {@code Set\u003cMedicalHistories\u003e} containing zero medical history.","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"angkyakdifp"},"content":" private Optional\u003cSet\u003cMedicalHistory\u003e\u003e parseMedicalHistoriesForEdit(Collection\u003cString\u003e medicalHistories)","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"angkyakdifp"},"content":" throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"angkyakdifp"},"content":" assert medicalHistories !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistories.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"angkyakdifp"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"angkyakdifp"},"content":" Collection\u003cString\u003e medHistSet \u003d medicalHistories.size() \u003d\u003d 1 \u0026\u0026 medicalHistories.contains(\"\")","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"angkyakdifp"},"content":" ? Collections.emptySet()","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"angkyakdifp"},"content":" : medicalHistories;","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"angkyakdifp"},"content":" return Optional.of(ParserUtil.parseMedicalHistories(medHistSet));","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Kokseng1":13,"vansh284":42,"angkyakdifp":25,"-":80,"alvinlim277":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" * Parses input arguments and creates a new FindCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":"public class FindCommandParser implements ParserComplex\u003cFindCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public FindCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" return parsePatient(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return parseSpecialist(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" private FindCommand parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" if (!argMultimap.getPreamble().isBlank() \u0026\u0026 !args.isBlank()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_PATIENT));","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonPredicates(argMultimap);","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" List\u003cString\u003e ageKeyWords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_AGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, new AgeContainsKeywordsPredicate(ageKeyWords));","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_MEDICALHISTORY).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e medHistKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY,","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":" new MedHistoryContainsKeywordsPredicate(medHistKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" return new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" private FindCommand parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" if (!argMultimap.getPreamble().isBlank() \u0026\u0026 !args.isBlank()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST));","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonPredicates(argMultimap);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" List\u003cString\u003e addressKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, new LocationContainsKeywordsPredicate(addressKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_SPECIALTY).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e specialtyKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, new SpecialtyContainsKeywordsPredicate(specialtyKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" return new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" private List\u003cString\u003e splitKeywordsByWhitespace(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" String trimmedArgs \u003d argMultimap.getValue(prefix).get().trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" String[] keywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" return Arrays.asList(keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPersonPredicates(ArgumentMultimap argMultimap) {","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e nameKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_NAME);","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(nameKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e phoneKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_PHONE);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, new PhoneContainsKeywordsPredicate(phoneKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e emailKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_EMAIL);","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, new EmailContainsKeywordsPredicate(emailKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e tagKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_TAG);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, new TagsContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Kokseng1":2,"vansh284":7,"Gavino3o":89,"-":26,"alvinlim277":10}},{"path":"src/main/java/seedu/address/logic/parser/ParserBasic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":" * Represents a ParserBasic that is able to parse basic user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"public interface ParserBasic\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"-":14,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/ParserComplex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":" * Represents a ParserComplex that is able to parse complex user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"public interface ParserComplex\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" T parse(PersonType personType, String userInput) throws ParseException;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"vansh284":2,"-":13,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" * Contains utility methods used for parsing strings in the various *ParserComplex classes.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" * Parses a {@code String specialty} into a {@code Specialty}.","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" * @throws ParseException if the given {@code specialty} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" public static Specialty parseSpecialty(String specialty) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" requireNonNull(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" String trimmedSpecialty \u003d specialty.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" if (!Specialty.isValidSpecialty(trimmedSpecialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(Specialty.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" return new Specialty(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"angkyakdifp"},"content":" * Parses a {@code String medicalHistory} into a {@code MedicalHistory}.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" * @throws ParseException if the given {@code medicalHistory} is invalid.","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"angkyakdifp"},"content":" public static MedicalHistory parseMedicalHistory(String medicalHistory) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"angkyakdifp"},"content":" String trimmedSpecialty \u003d medicalHistory.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" if (!Specialty.isValidSpecialty(trimmedSpecialty)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" throw new ParseException(MedicalHistory.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":" return new MedicalHistory(medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"angkyakdifp"},"content":" * Parses {@code Collection\u003cString\u003e medicalHistories} into a {@code Set\u003cMedicalHistory\u003e}.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"angkyakdifp"},"content":" public static Set\u003cMedicalHistory\u003e parseMedicalHistories(Collection\u003cString\u003e medicalHistories) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistories);","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"angkyakdifp"},"content":" final Set\u003cMedicalHistory\u003e medHistSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"angkyakdifp"},"content":" for (String medicalhistory : medicalHistories) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"angkyakdifp"},"content":" medHistSet.add(parseMedicalHistory(medicalhistory));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":" return medHistSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"alvinlim277"},"content":" * Parses a {@code String location} into an {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"alvinlim277"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"alvinlim277"},"content":" public static Location parseLocation(String location) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"alvinlim277"},"content":" String trimmedAddress \u003d location.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"alvinlim277"},"content":" if (!Location.isValidLocation(trimmedAddress)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"alvinlim277"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" return new Location(trimmedAddress);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"vansh284"},"content":" * Parses {@code String age} into a {@code Age}.","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"vansh284"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"vansh284"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"vansh284"},"content":" requireNonNull(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"vansh284"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"vansh284"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"vansh284"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"vansh284"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Kokseng1":16,"vansh284":16,"angkyakdifp":27,"-":114,"alvinlim277":10}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" /** {@code Predicate} that always evaluates to true */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":86,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" // DoConnek Pro shows all patients on startup by default.","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":148,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class Age {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" \"Age should only contain numbers between 0 and 149 both inclusive.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\b[0-9]|[1-9][0-9]|1[0-4][0-9]\\\\b\";","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public final String value;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * @param age A valid age.","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public Age(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" requireNonNull(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" value \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" return value;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"vansh284":60}},{"path":"src/main/java/seedu/address/model/person/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":" * Represents a Person\u0027s location in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidLocation(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"public class Location {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Locations can take any values, and it should not be blank\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" * The first character of the location must not be a whitespace,","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" * Constructs an {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" * @param location A valid location.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" public Location(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" value \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" * Returns true if a given string is a valid location.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" return value.equals(otherLocation.value);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":49,"alvinlim277":16}},{"path":"src/main/java/seedu/address/model/person/MedicalHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":" * Represents a Patient\u0027s medical history in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"public class MedicalHistory {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":" \"Medical History should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":" /*","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" * The first character of the Medical History must not be a whitespace,","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" * @param medicalHistoryInput A valid medical history.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" public MedicalHistory(String medicalHistoryInput) {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistoryInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" checkArgument(isValidMedicalHistory(medicalHistoryInput), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" this.value \u003d medicalHistoryInput;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" * Returns true if a given string is a valid medical history.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" public static boolean isValidMedicalHistory(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" return value;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" if (!(other instanceof MedicalHistory)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" MedicalHistory otherMedicalHistory \u003d (MedicalHistory) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" return value.equals(otherMedicalHistory.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"angkyakdifp":65}},{"path":"src/main/java/seedu/address/model/person/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"public class Patient extends Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" private final Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" private final Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" public Patient(Name name, Phone phone, Email email, Set\u003cTag\u003e tags, Age age,","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" public Age getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" public Set\u003cMedicalHistory\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" String stringToAdd \u003d \", age\u003d\" + age + \", medical history\u003d\" + medicalHistory;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" return super.equals(other)","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 age.equals(otherPatient.getAge())","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" \u0026\u0026 medicalHistory.equals(otherPatient.medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":33,"angkyakdifp":20,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" * Represents a Person in the location book.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" public Person(Name name, Phone phone, Email email, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" requireAllNonNull(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" return Objects.hash(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"vansh284":1,"-":103,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":" * This enum encapsulates the types of people that the address book can deal with.","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"public enum PersonType {","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":" PATIENT(person -\u003e person instanceof Patient), SPECIALIST(person -\u003e person instanceof Specialist);","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" /** {@code Predicate} that evaluates to true when {@code Person} matches the {@code PersonType}*/","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" private final Predicate\u003cPerson\u003e searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" PersonType(Predicate\u003cPerson\u003e searchPredicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" this.searchPredicate \u003d searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" public Predicate\u003cPerson\u003e getSearchPredicate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" return searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":7,"alvinlim277":15}},{"path":"src/main/java/seedu/address/model/person/Specialist.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" * Represents a Specialist in the address book.","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"public class Specialist extends Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" private final Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" private final Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" public Specialist(Name name, Phone phone, Email email, Location location, Set\u003cTag\u003e tags, Specialty specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" String stringToAdd \u003d \", location\u003d\" + location + \", specialty\u003d\" + specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" * Returns true if the other object is a specialist and have the same identity and data fields.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" if (!(other instanceof Specialist)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" Specialist otherSpecialist \u003d (Specialist) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" return super.equals(other)","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":" \u0026\u0026 location.equals(otherSpecialist.location)","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 specialty.equals(otherSpecialist.specialty);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" public Specialty getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":23,"vansh284":26,"alvinlim277":11}},{"path":"src/main/java/seedu/address/model/person/Specialty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":" * Represents a Specialist\u0027s specialty in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"public class Specialty {","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":" \"Specialty should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" * The first character of the Specialty must not be a whitespace,","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" public final String value;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" * @param specialtyInput A valid specialty.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" public Specialty(String specialtyInput) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" requireNonNull(specialtyInput);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" checkArgument(isValidSpecialty(specialtyInput), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" value \u003d specialtyInput;","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" * Returns true if a given string is a valid specialty.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" public static boolean isValidSpecialty(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" return value;","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" if (!(other instanceof Specialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" Specialty otherSpecialty \u003d (Specialty) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" return value.equals(otherSpecialty.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Kokseng1":65}},{"path":"src/main/java/seedu/address/model/person/predicates/AgeContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * Tests that a {@code Patient}\u0027s {@code Age} matches any of the keywords given.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class AgeContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" public AgeContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" if (!(person instanceof Patient)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" // It is safe to type cast Person to Patient due to the guard clause above.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getAge().value, keyword));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" if (!(other instanceof AgeContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" AgeContainsKeywordsPredicate otherAgeContainsKeywordsPredicate \u003d (AgeContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" return keywords.equals(otherAgeContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"vansh284":53}},{"path":"src/main/java/seedu/address/model/person/predicates/EmailContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Email} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class EmailContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" public EmailContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getEmail().value, keyword));","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof EmailContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate otherEmailContainsKeywordsPredicate \u003d (EmailContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherEmailContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":12,"-":34}},{"path":"src/main/java/seedu/address/model/person/predicates/LocationContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" * Tests that a {@code Person}\u0027s {@code Location} matches any of the keywords given.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"public class LocationContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":" public LocationContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" if (!(person instanceof Specialist)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" // It is safe to type cast Person to Specialist due to the guard clause above.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(specialist.getLocation().value, keyword));","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" if (!(other instanceof LocationContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" LocationContainsKeywordsPredicate otherLocationContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" (LocationContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" return keywords.equals(otherLocationContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":10,"-":29,"alvinlim277":15}},{"path":"src/main/java/seedu/address/model/person/predicates/MedHistoryContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Patient}\u0027s {@code Medical History} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"public class MedHistoryContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" public MedHistoryContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" if (!(person instanceof Patient)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" // It is safe to type cast Person to Patient due to the guard clause above.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" return patient.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" .map(medicalHistory -\u003e keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(medicalHistory.value, keyword)))","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" .reduce(false, (x, y) -\u003e x || y);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof MedHistoryContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" MedHistoryContainsKeywordsPredicate otherMedHistoryContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" (MedHistoryContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherMedHistoryContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":52,"angkyakdifp":6}},{"path":"src/main/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":2,"-":43}},{"path":"src/main/java/seedu/address/model/person/predicates/PhoneContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Phone} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class PhoneContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" public PhoneContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getPhone().value, keyword));","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof PhoneContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate otherPhoneContainsKeywordsPredicate \u003d (PhoneContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherPhoneContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":15,"-":31}},{"path":"src/main/java/seedu/address/model/person/predicates/SpecialtyContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Specialist}\u0027s {@code Specialty} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"public class SpecialtyContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" public SpecialtyContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" if (!(person instanceof Specialist)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" // It is safe to type cast Person to Specialist due to the guard clause above.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(specialist.getSpecialty().value, keyword));","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof SpecialtyContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" SpecialtyContainsKeywordsPredicate otherSpecialtyContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" (SpecialtyContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherSpecialtyContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":56}},{"path":"src/main/java/seedu/address/model/person/predicates/TagsContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Tags} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class TagsContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" public TagsContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" return person.getTags()","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" .stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" .map(tag -\u003e keywords","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" .stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(tag.tagName, keyword)))","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" .reduce(false, (x, y) -\u003e x || y);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof TagsContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate otherTagsContainsKeywordsPredicate \u003d (TagsContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherTagsContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":50}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"friends\"), new Age(\"24\"), getMedicalHistorySet(\"Diabetes\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"colleagues\", \"friends\"), new Specialty(\"Physiotherapist\")),","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"neighbours\"), new Age(\"114\"), getMedicalHistorySet(\"Anemia\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"family\"), new Age(\"9\"), getMedicalHistorySet(\"Osteoporosis\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"classmates\"), new Specialty(\"Orthopaedic\")),","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"colleagues\"), new Specialty(\"Dermatology\"))","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" * Returns a medical history set containing the list of strings given.","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" public static Set\u003cMedicalHistory\u003e getMedicalHistorySet(String... strings) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" .map(MedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kokseng1":6,"vansh284":7,"angkyakdifp":12,"-":41,"alvinlim277":4}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMedicalHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":" * Jackson-friendly version of {@link MedicalHistory}.","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"class JsonAdaptedMedicalHistory {","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" private final String medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" * Constructs a {@code JsonAdaptedMedicalHistory} with the given {@code medicalHistory}.","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" @JsonCreator","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" public JsonAdaptedMedicalHistory(String medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" * Converts a given {@code MedicalHistory} into this class for Jackson use.","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" public JsonAdaptedMedicalHistory(MedicalHistory source) {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d source.value;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" @JsonValue","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public String getTagName() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" * Converts this Jackson-friendly adapted medical history object into the model\u0027s {@code MedicalHistory} object.","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted medical history.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" public MedicalHistory toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" if (!MedicalHistory.isValidMedicalHistory(medicalHistory)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" throw new IllegalValueException(MedicalHistory.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" return new MedicalHistory(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"angkyakdifp":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPatient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"class JsonAdaptedPatient extends JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" private final String age;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" private final List\u003cJsonAdaptedMedicalHistory\u003e medicalHistory \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" @JsonCreator","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public JsonAdaptedPatient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"age\") String age,","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" @JsonProperty(\"MedicalHistory\") List\u003cJsonAdaptedMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistory !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory.addAll(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public JsonAdaptedPatient(Patient source) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" super(source);","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" this.age \u003d source.getAge().value;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory.addAll(source.getMedicalHistory().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" public List\u003cJsonAdaptedMedicalHistory\u003e getMedicalHistory() throws IllegalValueException {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public String getAge() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" Age.class.getSimpleName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedTag tag : getTags()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" final List\u003cMedicalHistory\u003e patientMedicalHistory \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" for (JsonAdaptedMedicalHistory medicalHistory: getMedicalHistory()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" patientMedicalHistory.add(medicalHistory.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" final Name modelName \u003d new Name(getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" final Phone modelPhone \u003d new Phone(getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" final Email modelEmail \u003d new Email(getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" final Age age \u003d new Age(getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" final Set\u003cMedicalHistory\u003e medicalHistory \u003d new HashSet\u003c\u003e(patientMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" return new Patient(modelName, modelPhone, modelEmail, modelTags, age, medicalHistory);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":53,"angkyakdifp":23,"alvinlim277":5}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"abstract class JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" public abstract Person toModelType() throws IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public String getName() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" return name;","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" public String getPhone() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" return phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" public String getEmail() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" return email;","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" public List\u003cJsonAdaptedTag\u003e getTags() {","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" return tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":13,"-":83,"alvinlim277":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSpecialist.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"class JsonAdaptedSpecialist extends JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" private final String specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" private final String location;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" public JsonAdaptedSpecialist(Specialist source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" super(source);","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d source.getSpecialty().value;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" location \u003d source.getLocation().value;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" public JsonAdaptedSpecialist(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"location\") String location,","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" @JsonProperty(\"Specialty\") String specialty) {","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public String getLocation() throws IllegalValueException {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" if (location \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" Location.class.getSimpleName()));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" if (!Location.isValidLocation(location)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" public String getSpecialty() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" if (specialty \u003d\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" Specialty.class.getSimpleName()));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" if (!Specialty.isValidSpecialty(specialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" throw new IllegalValueException(Specialty.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" public Specialist toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedTag tag : getTags()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" final Name modelName \u003d new Name(getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" final Phone modelPhone \u003d new Phone(getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" final Email modelEmail \u003d new Email(getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" final Location modelLocation \u003d new Location(getLocation());","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":" final Specialty modelSpecialty \u003d new Specialty(getSpecialty());","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(modelName, modelPhone, modelEmail, modelLocation, modelTags, modelSpecialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":27,"vansh284":28,"alvinlim277":19}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" private final List\u003cJsonAdaptedPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" private final List\u003cJsonAdaptedSpecialist\u003e specialists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"patients\") List\u003cJsonAdaptedPatient\u003e patients,","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" @JsonProperty(\"specialists\") List\u003cJsonAdaptedSpecialist\u003e specialists) {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" this.patients.addAll(patients);","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" this.specialists.addAll(specialists);","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" patients.addAll(source.getPersonList().stream()","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" .filter(p -\u003e p instanceof Patient)","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" .map(p -\u003e new JsonAdaptedPatient((Patient) p))","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" specialists.addAll(source.getPersonList().stream()","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" .filter(p -\u003e p instanceof Specialist)","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" .map(p -\u003e new JsonAdaptedSpecialist((Specialist) p))","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : patients) {","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : specialists) {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":24,"-":55}},{"path":"src/main/java/seedu/address/ui/PatientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Patient}.","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientCard extends PersonCard {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" private static final String card \u003d \"PatientListCard.fxml\";","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" private Label age;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" private FlowPane medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" * Creates a {@code PatientCard} with the given {@code patient} and index to display.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public PatientCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" super(patient, displayedIndex, card);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" age.setText(patient.getAge().value);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" patient.getMedicalHistory().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" .sorted(Comparator.comparing(medicalHistory -\u003e medicalHistory.value))","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" .forEach(medicalHistory -\u003e this.medicalHistory.getChildren().add(new Label(medicalHistory.value)));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":20,"angkyakdifp":12}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"public abstract class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" private Label personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" public PersonCard(Person person, int displayedIndex, String fxml) {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" super(fxml);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"vansh284":6,"-":50}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" if (person instanceof Patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" setGraphic(new PatientCard((Patient) person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" setGraphic(new SpecialistCard((Specialist) person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"vansh284":7,"-":48}},{"path":"src/main/java/seedu/address/ui/SpecialistCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Specialist}.","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class SpecialistCard extends PersonCard {","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" private static final String card \u003d \"SpecialistListCard.fxml\";","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" private Label specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" // Label is named as such due to \u0027location\u0027 being a reserved keyword.","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" private Label spLocation;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" * Creates a {@code SpecialistCard} with the given {@code specialist} and index to display.","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public SpecialistCard(Specialist specialist, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" super(specialist, displayedIndex, card);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" spLocation.setText(specialist.getLocation().value);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" specialty.setText(specialist.getSpecialty().value);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":6,"vansh284":17,"alvinlim277":5}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"angkyakdifp"},"content":"#medicalHistory {","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"angkyakdifp"},"content":" -fx-hgap: 7;","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"angkyakdifp"},"content":" -fx-vgap: 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"angkyakdifp"},"content":" -fx-width: 100%;","lastModifiedDate":"2023-10-20"},{"lineNumber":358,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":359,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":360,"author":{"gitId":"angkyakdifp"},"content":"#medicalHistory .label {","lastModifiedDate":"2023-10-20"},{"lineNumber":361,"author":{"gitId":"angkyakdifp"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":362,"author":{"gitId":"angkyakdifp"},"content":" -fx-background-color: #0a6a0c;","lastModifiedDate":"2023-10-20"},{"lineNumber":363,"author":{"gitId":"angkyakdifp"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":364,"author":{"gitId":"angkyakdifp"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":365,"author":{"gitId":"angkyakdifp"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":366,"author":{"gitId":"angkyakdifp"},"content":" -fx-font-size: 13;","lastModifiedDate":"2023-10-20"},{"lineNumber":367,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"angkyakdifp":15,"-":352}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" title\u003d\"DoConnek Pro\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":59,"alvinlim277":1}},{"path":"src/main/resources/view/PatientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"personType\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: aqua\" text\u003d\"Patient\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" \u003cFlowPane fx:id\u003d\"medicalHistory\"/\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"vansh284":2,"angkyakdifp":1,"-":35}},{"path":"src/main/resources/view/SpecialistListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"personType\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: greenyellow\" text\u003d\"Specialist\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" \u003cLabel fx:id\u003d\"spLocation\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" \u003cLabel fx:id\u003d\"specialty\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$specialty\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":36,"alvinlim277":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.parser.CliSyntax;","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(listCommand, ListCommand.PATIENT_MESSAGE_SUCCESS, model);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + PERSON_TYPE_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-06"},{"lineNumber":172,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" Person expectedPerson \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"vansh284":7,"angkyakdifp":1,"-":168,"alvinlim277":2}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" public void execute_newPatient_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" public void execute_newSpecialist_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" Person validPerson \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"vansh284":2,"-":51,"alvinlim277":10}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" Person alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" Person bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"alvinlim277"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"alvinlim277"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"alvinlim277"},"content":" // Allow this method to be called as AddCommand::execute now affects the filtered list.","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"alvinlim277"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"vansh284":5,"-":199,"alvinlim277":6}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_LOCATION_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_LOCATION_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" public static final String VALID_AGE_THIRTY \u003d \"30\";","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALID_MEDICAL_HISTORY_OSTEOPOROSIS \u003d \"Osteoporosis\";","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALID_MEDICAL_HISTORY_ANEMIA \u003d \"Anemia\";","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_SPECIALTY_DERMATOLOGY \u003d \"Dermatology\";","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" public static final String VALID_SPECIALTY_ORTHOPAEDIC \u003d \"orthopaedic\";","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" public static final String PERSON_TYPE_AMY \u003d \" \" + PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" public static final String PERSON_TYPE_BOB \u003d \" \" + SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" public static final String LOCATION_DESC_AMY \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" public static final String LOCATION_DESC_BOB \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" public static final String MEDICAL_HISTORY_DESC_AMY \u003d \" \" + PREFIX_MEDICALHISTORY","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" + VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" public static final String SPECIALTY_DESC_BOB \u003d \" \" + PREFIX_SPECIALTY + VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"alvinlim277"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION; // empty string not allowed for addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" public static final String INVALID_SPECIALTY_DESC \u003d \" \" + PREFIX_SPECIALTY; // empty string invalid for specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" public static final String INVALID_AGE_DESC \u003d \" \" + PREFIX_AGE + \"67Y\"; // \u0027Y\u0027 not allowed in ages","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" public static final String INVALID_MEDICAL_HISTORY_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_MEDICALHISTORY; // empty string invalid for medical history","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" public static final EditCommand.EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" public static final EditCommand.EditSpecialistDescriptor DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"alvinlim277"},"content":" DESC_AMY \u003d (EditCommand.EditPatientDescriptor) new EditPatientDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" .withMedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" DESC_BOB \u003d (EditCommand.EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_DERMATOLOGY)","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kokseng1":6,"vansh284":10,"angkyakdifp":8,"Gavino3o":1,"-":114,"alvinlim277":16}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"alvinlim277"},"content":" + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"vansh284":1,"-":119,"alvinlim277":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" PersonBuilder personInList \u003d new SpecialistBuilder((Specialist) lastPerson);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"alvinlim277"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPatientDescriptor());","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":" Person editedPerson \u003d new PatientBuilder((Patient) personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"alvinlim277"},"content":" showPersonAtIndex(expectedModel, INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder((Patient) firstPerson).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder((Patient) personInList).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPatientDescriptor((EditPatientDescriptor) DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2023-10-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"vansh284":13,"-":166,"alvinlim277":13}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptorBuilder(DESC_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" .withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" // different medical history -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" .withMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"alvinlim277"},"content":" + editPatientDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getTags().orElse(null) + \", age\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getAge().orElse(null) + \", medical history\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" + editPatientDescriptor.getMedicalHistory().orElse(null) + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, editPatientDescriptor.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"vansh284":19,"angkyakdifp":1,"-":50,"alvinlim277":7}},{"path":"src/test/java/seedu/address/logic/commands/EditSpecialistDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"public class EditSpecialistDescriptorTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor descriptorWithSameValues \u003d new EditSpecialistDescriptorBuilder(DESC_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" assertTrue(DESC_BOB.equals(descriptorWithSameValues));","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" assertTrue(DESC_BOB.equals(DESC_BOB));","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(5));","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(DESC_AMY));","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" // different location -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" editedBob \u003d new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_AMY).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" // different specialty -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":" editedBob \u003d new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_ORTHOPAEDIC).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" String expected \u003d EditSpecialistDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" + editSpecialistDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" + editSpecialistDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getTags().orElse(null) + \", location\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getLocation().orElse(null) + \", specialty\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"Kokseng1"},"content":" + editSpecialistDescriptor.getSpecialty().orElse(null) + \"}\";","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, editSpecialistDescriptor.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":68,"alvinlim277":14}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" private static final String WHITESPACE_REGEX \u003d \"\\\\s+\";","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" //TODO: Change equals method, remember to do the tags.","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" public void findCommandEquals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap1 \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap2 \u003d setupSpecialistFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand1 \u003d new FindCommand(findPredicateMap1, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand2 \u003d new FindCommand(findPredicateMap2, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findCommand1.equals(findCommand1));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(findPredicateMap1, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findCommand1.equals(findFirstCommandCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" // different person type -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(findCommand2));","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" public void findPredicateMapEquals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap smallerFindPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" smallerFindPredicateMap.put(PREFIX_NAME,","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Lopez\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findPredicateMap.equals(findPredicateMap));","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" // same values -\u003e return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMapCopy \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findPredicateMap.equals(findPredicateMapCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" // different size -\u003e short circuits and returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(smallerFindPredicateMap));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPatientFindPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":" // Find Predicates for a Patient","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" NameContainsKeywordsPredicate nameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Fabio\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate phoneContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" new PhoneContainsKeywordsPredicate(Collections.singletonList(\"89934991\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate emailContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" new EmailContainsKeywordsPredicate(Collections.singletonList(\"patient@gmail.com\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" AgeContainsKeywordsPredicate ageContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" new AgeContainsKeywordsPredicate(Arrays.asList(\"35\", \"40\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate tagsContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(\"tag1\", \"tag2\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" MedHistoryContainsKeywordsPredicate medHistoryContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Bronchitis\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, nameContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, phoneContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, emailContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, ageContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, tagsContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, medHistoryContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupSpecialistFindPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" // Find Predicates for a Specialist","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" NameContainsKeywordsPredicate nameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Selena\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate phoneContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" new PhoneContainsKeywordsPredicate(Collections.singletonList(\"90237753\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate emailContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" new EmailContainsKeywordsPredicate(Collections.singletonList(\"specialist@gmail.com\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"Gavino3o"},"content":" LocationContainsKeywordsPredicate locationContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"Gavino3o"},"content":" new LocationContainsKeywordsPredicate(Collections.singletonList(\"311, Clementi Ave 2, #02-25\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate tagsContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"Gavino3o"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(\"tag2\", \"tag3\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"Gavino3o"},"content":" SpecialtyContainsKeywordsPredicate specialtyContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"Gavino3o"},"content":" new SpecialtyContainsKeywordsPredicate(Arrays.asList(\"Surgery\", \"Haematology\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, nameContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, phoneContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, emailContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, locationContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, tagsContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, specialtyContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":154,"author":{"gitId":"Gavino3o"},"content":" public void execute_zeroKeywords_allPatientsListed() {","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":156,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonZeroKeywordsPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, prepareAgePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, prepareMedHistPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":167,"author":{"gitId":"Gavino3o"},"content":" public void execute_zeroKeywords_allSpecialistsListed() {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonZeroKeywordsPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, prepareLocationPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"Gavino3o"},"content":" public void execute_multipleSpecialtyKeywordsOnly_multipleSpecialistFound() {","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\"Orthopaedic Physiotherapy\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"Gavino3o"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":188,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Arrays.asList(FIONA, GEORGE), model.getFilteredPersonList());","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"Gavino3o"},"content":" public void execute_multipleNameKeywordsOnly_multiplePatientsFound() {","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\"Alice Kunz Daniel\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"Gavino3o"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"Gavino3o"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Arrays.asList(ALICE, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"Gavino3o"},"content":" public void nameContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":206,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":208,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":209,"author":{"gitId":"vansh284"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"Gavino3o"},"content":" public void phoneContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, preparePhonePredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":218,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":219,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":223,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"Gavino3o"},"content":" public void emailContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":226,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, prepareEmailPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":227,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":228,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":229,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"Gavino3o"},"content":" public void tagsContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, prepareTagsPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":237,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":238,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":239,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"Gavino3o"},"content":" public void medHistContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":246,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, prepareMedHistPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":249,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":251,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":254,"author":{"gitId":"Gavino3o"},"content":" public void specialtyContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":255,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":256,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":257,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":258,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":259,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.SPECIALIST + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":266,"author":{"gitId":"Gavino3o"},"content":" private NameContainsKeywordsPredicate prepareNamePredicate(String userInput) {","lastModifiedDate":"2023-10-14"},{"lineNumber":267,"author":{"gitId":"Gavino3o"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code PhoneContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"Gavino3o"},"content":" private PhoneContainsKeywordsPredicate preparePhonePredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"Gavino3o"},"content":" return new PhoneContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code EmailContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"Gavino3o"},"content":" private EmailContainsKeywordsPredicate prepareEmailPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"Gavino3o"},"content":" return new EmailContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":284,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code TagsContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"Gavino3o"},"content":" private TagsContainsKeywordsPredicate prepareTagsPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"Gavino3o"},"content":" return new TagsContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code MedHistoryContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":293,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":294,"author":{"gitId":"Gavino3o"},"content":" private MedHistoryContainsKeywordsPredicate prepareMedHistPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":295,"author":{"gitId":"Gavino3o"},"content":" return new MedHistoryContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":296,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":297,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":298,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":299,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":300,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code SpecialtyContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":301,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":302,"author":{"gitId":"Gavino3o"},"content":" private SpecialtyContainsKeywordsPredicate prepareSpecialtyPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":303,"author":{"gitId":"Gavino3o"},"content":" return new SpecialtyContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":304,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":305,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":306,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":307,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code AgeContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-17"},{"lineNumber":308,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":309,"author":{"gitId":"Gavino3o"},"content":" private AgeContainsKeywordsPredicate prepareAgePredicate(String userInput) {","lastModifiedDate":"2023-10-17"},{"lineNumber":310,"author":{"gitId":"Gavino3o"},"content":" return new AgeContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-17"},{"lineNumber":311,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":312,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":313,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":314,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code LocationContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-17"},{"lineNumber":315,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":316,"author":{"gitId":"Gavino3o"},"content":" private LocationContainsKeywordsPredicate prepareLocationPredicate(String userInput) {","lastModifiedDate":"2023-10-17"},{"lineNumber":317,"author":{"gitId":"Gavino3o"},"content":" return new LocationContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-17"},{"lineNumber":318,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":319,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":320,"author":{"gitId":"Gavino3o"},"content":" private Predicate\u003cPerson\u003e combinePersonPredicates(FindPredicateMap findPredicateMap, PersonType personType) {","lastModifiedDate":"2023-10-17"},{"lineNumber":321,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e findPredicateMap.getAllPredicates().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":322,"author":{"gitId":"Gavino3o"},"content":" .map(pred -\u003e pred.test(person))","lastModifiedDate":"2023-10-17"},{"lineNumber":323,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-16"},{"lineNumber":324,"author":{"gitId":"Gavino3o"},"content":" return predicate.and(personType.getSearchPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":325,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":326,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":327,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPersonZeroKeywordsPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":328,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":329,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, preparePhonePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":331,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, prepareEmailPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":332,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, prepareTagsPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":333,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":334,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":258,"vansh284":2,"-":75}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.model.person.PersonType.PATIENT;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.model.person.PersonType.SPECIALIST;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" public void executePatient_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(PATIENT), model, ListCommand.PATIENT_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" public void executeSpecialist_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(SPECIALIST), model, ListCommand.SPECIALIST_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" public void executePatient_listIsFiltered_showsEverything() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(PATIENT), model, ListCommand.PATIENT_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":35,"alvinlim277":12}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MEDICAL_HISTORY_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SPECIALTY_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public void parse_allFieldsPresentPatient_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" Person expectedPatient \u003d new PatientBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + TAG_DESC_FRIEND + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" new AddCommand(expectedPatient), PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" // multiple tags - all accepted","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" Person expectedPatientMultipleTags \u003d new PatientBuilder(AMY).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":" NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedPatientMultipleTags), PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" public void parse_allFieldsPresentSpecialist_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" Person expectedSpecialist \u003d new SpecialistBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + LOCATION_DESC_BOB + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" new AddCommand(expectedSpecialist),","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Kokseng1"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" Person expectedSpecialistMultipleTags \u003d new SpecialistBuilder(BOB).withTags(VALID_TAG_FRIEND,","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":" VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":97,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"angkyakdifp"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedSpecialistMultipleTags), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"Kokseng1"},"content":" String validExpectedSpecialistString \u003d validExpectedPersonString + SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" String validExpectedPatientString \u003d validExpectedPersonString + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, PHONE_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, EMAIL_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, LOCATION_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" // multiple ages","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, AGE_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"angkyakdifp"},"content":" validExpectedSpecialistString + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"alvinlim277"},"content":" + NAME_DESC_AMY + LOCATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_EMAIL, PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_EMAIL_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_PHONE_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_LOCATION_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"vansh284"},"content":" // invalid specialty","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, INVALID_SPECIALTY_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SPECIALTY), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, INVALID_AGE_DESC + validExpectedPatientString,","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":183,"author":{"gitId":"Kokseng1"},"content":" // invalid specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_SPECIALTY_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":185,"author":{"gitId":"Kokseng1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SPECIALTY), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":186,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, validExpectedPatientString + INVALID_AGE_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"vansh284"},"content":" Person expectedPerson \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":196,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":197,"author":{"gitId":"alvinlim277"},"content":" + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedPerson), PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"Kokseng1"},"content":" String expectedMessageSpecialist \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"Kokseng1"},"content":" String expectedMessagePatient \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":211,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":215,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":223,"author":{"gitId":"Kokseng1"},"content":" + VALID_LOCATION_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":224,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"vansh284"},"content":" // missing specialty prefix","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + VALID_SPECIALTY_DERMATOLOGY, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":228,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"vansh284"},"content":" // missing age prefix","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, VALID_AGE_THIRTY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_AMY, expectedMessagePatient, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":234,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":235,"author":{"gitId":"Kokseng1"},"content":" + VALID_LOCATION_BOB, expectedMessagePatient, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":242,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"Kokseng1"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"Kokseng1"},"content":" Phone.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":251,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"Kokseng1"},"content":" Email.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":256,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":257,"author":{"gitId":"alvinlim277"},"content":" + INVALID_LOCATION_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"alvinlim277"},"content":" Location.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":261,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"Kokseng1"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"vansh284"},"content":" // invalid specialty","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":267,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + INVALID_SPECIALTY_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"vansh284"},"content":" Specialty.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + INVALID_AGE_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"vansh284"},"content":" + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"vansh284"},"content":" Age.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + AGE_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"vansh284"},"content":" + INVALID_MEDICAL_HISTORY_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"vansh284"},"content":" MedicalHistory.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":284,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + INVALID_LOCATION_DESC + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"vansh284"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":288,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":289,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"angkyakdifp"},"content":" + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":291,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE_SPECIALIST),","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"angkyakdifp"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kokseng1":25,"vansh284":70,"angkyakdifp":27,"-":125,"alvinlim277":47}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public void parseCommand_add_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" public void parseCommand_add_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" Specialist specialist \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(SpecialistUtil.getAddCommand(specialist));","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" assertEquals(new AddCommand(specialist), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" public void parseCommand_delete_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public void parseCommand_delete_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" public void parseCommand_edit_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" + \" \" + CliSyntax.PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PatientUtil.getEditPatientDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" public void parseCommand_edit_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" Specialist person \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder(person).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"Kokseng1"},"content":" + \" \" + CliSyntax.SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" + \" \" + SpecialistUtil.getEditSpecialistDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" public void parseCommand_find_patientByName() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" assertEquals(findPredicateMap, command.getPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" assertEquals(PersonType.PATIENT, command.getPersonType());","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" public void parseCommand_find_specialistByNameAndTags() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e nameKeywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e tagKeywords \u003d Arrays.asList(\"tag1\", \"tag2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" + nameKeywords.stream().collect(Collectors.joining(\" \")) + \" \"","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" + tagKeywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(nameKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, new TagsContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" assertEquals(findPredicateMap, command.getPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" assertEquals(PersonType.SPECIALIST, command.getPersonType());","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"vansh284"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":143,"author":{"gitId":"vansh284"},"content":" ListCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG) instanceof ListCommand);","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"angkyakdifp"},"content":" HelpCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, ()","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"angkyakdifp"},"content":" -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kokseng1":1,"Gavino3o":24,"vansh284":49,"angkyakdifp":6,"-":75,"alvinlim277":2}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseComplexSuccess(ParserComplex\u003c? extends Command\u003e parserComplex, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" Command expectedCommand, PersonType personType) {","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" Command command \u003d parserComplex.parse(personType, userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseComplexFailure(ParserComplex\u003c? extends Command\u003e parserComplex,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" String userInput, String expectedMessage,","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" PersonType personType) {","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" parserComplex.parse(personType, userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseBasicSuccess(ParserBasic\u003c? extends Command\u003e parserBasic, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" Command expectedCommand) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" Command command \u003d parserBasic.parse(userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseBasicFailure(ParserBasic\u003c? extends Command\u003e parserBasic, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":" parserBasic.parse(userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"vansh284":3,"Gavino3o":1,"-":45,"alvinlim277":22}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseBasicFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseBasicSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" assertParseBasicSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" assertParseBasicFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":28,"alvinlim277":5}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_INVALID_SPECIALIST \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE_SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_INVALID_PATIENT \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE_PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"1 some random string\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":87,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"1 i/ string\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid phone","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid email","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid tag","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND,","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"alvinlim277"},"content":" \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + LOCATION_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"Kokseng1"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder()","lastModifiedDate":"2023-10-10"},{"lineNumber":127,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_DERMATOLOGY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":165,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"alvinlim277"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + LOCATION_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + LOCATION_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"alvinlim277"},"content":" + PHONE_DESC_BOB + LOCATION_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION),","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"alvinlim277"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_LOCATION_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"alvinlim277"},"content":" + INVALID_PHONE_DESC + INVALID_LOCATION_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":208,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION),","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder().withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Kokseng1":14,"vansh284":22,"-":146,"alvinlim277":40}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" public void parse_invalidPreambleOnly_throwsParseException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" FindCommand.MESSAGE_USAGE_PATIENT), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" public void parse_invalidPreambleValidPrefix_throwsParseException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input n/Alex\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_PATIENT), PersonType.PATIENT);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input p/98736621\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" public void parse_validNameArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"Alice\", \"Bob\");","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_NAME + \" Alice Bob\", expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_NAME + \" \\n Alice \\n \\t Bob \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" public void parse_validPhoneArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"92773291\", \"88765321\");","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, new PhoneContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_PHONE + \" 92773291 88765321\",","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_PHONE + \" \\n 92773291 \\n \\t 88765321 \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" public void parse_validEmailArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"timothy@gmail.com\", \"neumann@hotmail.com\");","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, new EmailContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_EMAIL + \" timothy@gmail.com neumann@hotmail.com\",","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_EMAIL + \" \\n timothy@gmail.com \\n \\t neumann@hotmail.com \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" public void parse_validAgeAndMedHistArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e ageKeywords \u003d Arrays.asList(\"21\", \"37\");","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e medHistKeywords \u003d Arrays.asList(\"Bronchitis\", \"ADHD\", \"Diabetes\");","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, new AgeContainsKeywordsPredicate(ageKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, new MedHistoryContainsKeywordsPredicate(medHistKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs1 \u003d String.format(\" %s 21 37 %s Bronchitis ADHD Diabetes\",","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs2 \u003d String.format(\" %s 21 \\n 37 \\t %s Bronchitis \\n ADHD \\t Diabetes \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs1, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs2, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" public void parse_validSpecialtyAndLocationArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e specialtyKeywords \u003d Arrays.asList(\"Orthopaedic\", \"Neurology\");","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e locationKeywords \u003d Arrays.asList(\"Clementi\", \"Bukit\", \"Timah\");","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, new SpecialtyContainsKeywordsPredicate(specialtyKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, new LocationContainsKeywordsPredicate(locationKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs1 \u003d String.format(\" %s Orthopaedic Neurology %s Clementi Bukit Timah\",","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" PREFIX_SPECIALTY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs2 \u003d String.format(\" %s Orthopaedic \\n Neurology \\t %s Clementi \\n Bukit \\t Timah \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" PREFIX_SPECIALTY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs1, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs2, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Kokseng1":3,"Gavino3o":100,"vansh284":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLocation((String) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"alvinlim277"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLocation(INVALID_ADDRESS));","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"alvinlim277"},"content":" Location expectedLocation \u003d new Location(VALID_ADDRESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(VALID_ADDRESS));","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" Location expectedLocation \u003d new Location(VALID_ADDRESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(addressWithWhitespace));","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"-":189,"alvinlim277":7}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"vansh284":1,"-":104,"alvinlim277":2}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Gavino3o":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"public class AgeTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public void isValidAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" // null Age","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" // invalid ages","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative numbers","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"150\")); // absurdly high age","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"9p1\")); // alphabets within digits","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"3 4\")); // spaces within digits","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"34a\")); // trailing alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" // valid phone numbers","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"0\")); // edge case","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"6\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"91\")); // double digits","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"114\")); // triple digits","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"149\")); // edge case","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" Age age \u003d new Age(\"30\");","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" assertTrue(age.equals(new Age(\"30\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(new Age(\"95\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"vansh284":64}},{"path":"src/test/java/seedu/address/model/person/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"public class LocationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" public void constructor_invalidLocation_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":" String invalidLocation \u003d \"\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Location(invalidLocation));","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" public void isValidLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" // null address","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" // invalid addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" assertFalse(Location.isValidLocation(\"\")); // empty string","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" assertFalse(Location.isValidLocation(\" \")); // spaces only","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" // valid addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"-\")); // one character","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" public void equals() {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" Location location \u003d new Location(\"Valid Location\");","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" assertTrue(location.equals(new Location(\"Valid Location\")));","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" assertTrue(location.equals(location));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(5.0f));","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(new Location(\"Other Valid Location\")));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"alvinlim277":56}},{"path":"src/test/java/seedu/address/model/person/MedHistoryContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"public class MedHistoryContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" public void test_medicalHistoryContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" // One keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Collections.singletonList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Diabetes\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" // One Keyword with Multiple Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Collections.singletonList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Diabetes\", \"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":" // Multiple Keyword with Multiple Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Asthma\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Diabetes\", \"Osteoporosis\", \"Asthma\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Diabetes\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis primary type 1\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"oSteOpoROsis\", \"dIaBeTeS\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis\", \"Diabetes\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":" public void test_medicalHistoryDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"angkyakdifp"},"content":" // Zero keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Anemia\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"angkyakdifp"},"content":" // Keywords match phone, email and address, but does not match Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Anemia\").withPhone(\"12345\")","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"angkyakdifp"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"angkyakdifp"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d new MedHistoryContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"angkyakdifp"},"content":" String expected \u003d MedHistoryContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"angkyakdifp"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"angkyakdifp":104}},{"path":"src/test/java/seedu/address/model/person/MedicalHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"public class MedicalHistoryTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(NullPointerException.class, () -\u003e new MedicalHistory(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" public void constructor_invalidMedicalHistory_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" String invalidMedicalHistory \u003d \"\";","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidMedicalHistory));","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" public void isValidMedicalHistory() {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" // null specialty","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(NullPointerException.class, () -\u003e MedicalHistory.isValidMedicalHistory(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" // invalid specialties","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(MedicalHistory.isValidMedicalHistory(\"\")); // empty string","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(MedicalHistory.isValidMedicalHistory(\" \")); // spaces only","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" // valid medical history","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(MedicalHistory.isValidMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS));","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" MedicalHistory medicalHistory \u003d new MedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(medicalHistory.equals(new MedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS)));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(medicalHistory.equals(medicalHistory));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(VALID_MEDICAL_HISTORY_OSTEOPOROSIS));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(new MedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)));","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"angkyakdifp":54}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":1,"vansh284":8,"-":76,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" assertTrue(true);","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" // different age -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withAge(VALID_AGE_THIRTY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" // different medical history -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" + \", age\u003d\" + ALICE.getAge()","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" + \", medical history\u003d\" + ALICE.getMedicalHistory() + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":28,"angkyakdifp":6,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" Person person \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" Person editedBob \u003d new SpecialistBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" editedBob \u003d new SpecialistBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" Person aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"vansh284":12,"-":75,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/SpecialistTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"public class SpecialistTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" assertTrue(true);","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" // different speciality -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" Person editedBob \u003d new SpecialistBuilder(BOB).withSpecialty(VALID_SPECIALTY_ORTHOPAEDIC).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" assertFalse(BOB.equals(editedBob));","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" String expected \u003d Specialist.class.getCanonicalName() + \"{name\u003d\" + BOB.getName() + \", phone\u003d\" + BOB.getPhone()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" + \", email\u003d\" + BOB.getEmail() + \", tags\u003d\" + BOB.getTags() + \", location\u003d\" + BOB.getLocation()","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" + \", specialty\u003d\" + BOB.getSpecialty() + \"}\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, BOB.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":27,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/SpecialtyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"public class SpecialtyTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Specialty(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":" public void constructor_invalidSpecialty_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" String invalidSpecialty \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidSpecialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" public void isValidSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" // null specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" assertThrows(NullPointerException.class, () -\u003e Specialty.isValidSpecialty(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" // invalid specialties","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" assertFalse(Specialty.isValidSpecialty(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" assertFalse(Specialty.isValidSpecialty(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" // valid specialties","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" assertTrue(Specialty.isValidSpecialty(VALID_SPECIALTY_DERMATOLOGY));","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" Specialty specialty \u003d new Specialty(VALID_SPECIALTY_ORTHOPAEDIC);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" assertTrue(specialty.equals(new Specialty(VALID_SPECIALTY_ORTHOPAEDIC)));","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" assertTrue(specialty.equals(specialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(VALID_SPECIALTY_ORTHOPAEDIC));","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(new Specialty(VALID_SPECIALTY_DERMATOLOGY)));","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Kokseng1":54}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"vansh284":1,"-":171,"alvinlim277":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" private static final List\u003cJsonAdaptedMedicalHistory\u003e VALID_MEDICAL_HISTORY \u003d BENSON.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList());;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" private static final String INVALID_MEDICAL_HISTORY \u003d \"#anemia\";","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" private static final String INVALID_AGE \u003d \"-1\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public void toModelType_invalidMedicalHistory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" List\u003cJsonAdaptedMedicalHistory\u003e invalidMedicalHistory \u003d new ArrayList\u003c\u003e(VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" invalidMedicalHistory.add(new JsonAdaptedMedicalHistory(INVALID_MEDICAL_HISTORY));","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" VALID_AGE, invalidMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, INVALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, null, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":36,"angkyakdifp":16,"alvinlim277":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" private static final List\u003cJsonAdaptedMedicalHistory\u003e VALID_MEDICAL_HISTORY \u003d BENSON.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList());;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL, invalidTags,","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":8,"angkyakdifp":4,"-":77,"alvinlim277":8}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedSpecialistTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import java.util.List;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"public class JsonAdaptedSpecialistTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" private static final String INVALID_LOCATION \u003d \" \";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" private static final String INVALID_SPECIALTY \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_NAME \u003d GEORGE.getName().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_PHONE \u003d GEORGE.getPhone().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_EMAIL \u003d GEORGE.getEmail().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" private static final String VALID_LOCATION \u003d GEORGE.getLocation().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_SPECIALTY \u003d GEORGE.getSpecialty().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d GEORGE.getTags().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_LOCATION, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" VALID_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public void toModelType_nullLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" VALID_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" Location.class.getSimpleName());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" public void toModelType_validSpecialistDetails_returnsSpecialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" JsonAdaptedSpecialist specialist \u003d new JsonAdaptedSpecialist(GEORGE);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" assertEquals(GEORGE, specialist.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" public void toModelType_invalidSpecialty_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_LOCATION, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" INVALID_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" String expectedMessage \u003d Specialty.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public void toModelType_nullSpeciality_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Specialty.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":28,"vansh284":18,"alvinlim277":27}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" AddressBook addressBookFromFile \u003d dataFromFile","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" .toModelType();","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Kokseng1":2,"-":46}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building EditPatientDescriptor objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"public class EditPatientDescriptorBuilder extends EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditPatientDescriptor());","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditPatientDescriptor(editPatientDescriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" * Returns an {@code EditPatientDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" setDescriptor(editPatientDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" editPersonDescriptorSetFields(patient);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(patient.getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setMedicalHistory(patient.getMedicalHistory());","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" * Sets the {@code Age} of the {@code EditAgeDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public EditPersonDescriptorBuilder withAge(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" EditCommand.EditPatientDescriptor editPatientDescriptor \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" (EditCommand.EditPatientDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(new Age(age));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" * Sets the {@code MedicalHistory} of the {@code EditMedicalHistoryDescriptor} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" public EditPersonDescriptorBuilder withMedicalHistory(String... medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" EditCommand.EditPatientDescriptor editPatientDescriptor \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" (EditCommand.EditPatientDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medHistSet \u003d Stream.of(medicalHistory).map(MedicalHistory::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" editPatientDescriptor.setMedicalHistory(medHistSet);","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" return (EditPatientDescriptor) getDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":45,"angkyakdifp":18}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" * Sets the descriptor fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public void editPersonDescriptorSetFields(Person person) {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public abstract EditPersonDescriptor build();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" public EditPersonDescriptor getDescriptor() {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" public void setDescriptor(EditPersonDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" this.descriptor \u003d descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"vansh284":12,"-":64}},{"path":"src/test/java/seedu/address/testutil/EditSpecialistDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building EditSpecialistDescriptor objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"public class EditSpecialistDescriptorBuilder extends EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptorBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditSpecialistDescriptor());","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptorBuilder(EditSpecialistDescriptor editSpecialistDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditSpecialistDescriptor(editSpecialistDescriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" * Returns an {@code EditSpecialistDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" public EditSpecialistDescriptorBuilder(Specialist specialist) {","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" setDescriptor(editSpecialistDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" editPersonDescriptorSetFields(specialist);","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setSpecialty(specialist.getSpecialty());","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" * Sets the {@code Location} of the {@code EditSpecialtyDescriptor} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public EditSpecialistDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d (EditSpecialistDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" editSpecialistDescriptor.setLocation(new Location(location));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" * Sets the {@code Specialty} of the {@code EditSpecialtyDescriptor} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public EditSpecialistDescriptorBuilder withSpecialty(String specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d (EditSpecialistDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" editSpecialistDescriptor.setSpecialty(new Specialty(specialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" return (EditSpecialistDescriptor) getDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":12,"vansh284":30,"alvinlim277":10}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientBuilder extends PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public static final String DEFAULT_AGE \u003d \"30\";","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" private Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" private Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public PatientBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" super();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" super(patientToCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" age \u003d patientToCopy.getAge();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d patientToCopy.getMedicalHistory();","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public Age getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" public Set\u003cMedicalHistory\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" * Sets the {@code Age} of the {@code Patient} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public PatientBuilder withAge(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" * Sets the {@code MedicalHistory} of the {@code Patient} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" public PatientBuilder withMedicalHistory(String ... medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d SampleDataUtil.getMedicalHistorySet(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public Patient build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" return new Patient(getName(), getPhone(), getEmail(), getTags(), getAge(), getMedicalHistory());","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":39,"angkyakdifp":25,"alvinlim277":1}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * A utility class for Patient.","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"public class PatientUtil {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" return AddCommand.COMMAND_WORD + \" \" + PATIENT_TAG + \" \" + getPatientDetails(patient);","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" public static String getPatientDetails(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_PHONE + patient.getPhone().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_EMAIL + patient.getEmail().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" patient.getMedicalHistory().stream().forEach(s -\u003e sb.append(PREFIX_MEDICALHISTORY + s.value + \" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_AGE + patient.getAge().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" patient.getTags().stream().forEach(","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code EditPatientDescriptor}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" public static String getEditPatientDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" descriptor.getAge().ifPresent(age -\u003e sb.append(PREFIX_AGE).append(age.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" if (descriptor.getMedicalHistory().isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory \u003d descriptor.getMedicalHistory().get();","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistory.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" sb.append(PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory.forEach(s -\u003e sb.append(PREFIX_MEDICALHISTORY).append(s.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"vansh284":19,"angkyakdifp":12,"-":43}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" public abstract Person build();","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" public Name getName() {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" return name;","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" public Phone getPhone() {","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" return phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" public Email getEmail() {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" return email;","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" return tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"vansh284":18,"-":83,"alvinlim277":4}},{"path":"src/test/java/seedu/address/testutil/SpecialistBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building Specialist objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class SpecialistBuilder extends PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":" public static final String DEFAULT_SPECIALTY \u003d \"Dermatology\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" public static final String DEFAULT_LOCATION \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" private Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" * Creates a {@code SpecialistBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" public SpecialistBuilder() {","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" super();","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d new Specialty(DEFAULT_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" * Initializes the SpecialistBuilder with the data of {@code specialistToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" public SpecialistBuilder(Specialist specialistToCopy) {","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" super(specialistToCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d specialistToCopy.getSpecialty();","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" location \u003d specialistToCopy.getLocation();","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" public Specialty getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" * Sets the {@code Specialty} of the {@code Specialist} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" * @param specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" * @return PersonBuilder with specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" public SpecialistBuilder withSpecialty(String specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d new Specialty(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" * Sets the {@code Location} of the {@code Specialist} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" public SpecialistBuilder withLocation(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" public Specialist build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(getName(), getPhone(), getEmail(), getLocation(), getTags(), getSpecialty());","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":29,"vansh284":16,"alvinlim277":22}},{"path":"src/test/java/seedu/address/testutil/SpecialistUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" * A utility class for Specialist.","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"public class SpecialistUtil {","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" * Returns an add command string for adding the {@code specialist}.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" public static String getAddCommand(Specialist specialist) {","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" return AddCommand.COMMAND_WORD + \" \" + SPECIALIST_TAG + \" \" + getSpecialistDetails(specialist);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code specialist}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" public static String getSpecialistDetails(Specialist specialist) {","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_NAME + specialist.getName().fullName + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_PHONE + specialist.getPhone().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_EMAIL + specialist.getEmail().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" sb.append(PREFIX_LOCATION + specialist.getLocation().value + \" \");","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" specialist.getTags().stream().forEach(","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" sb.append(PREFIX_SPECIALTY + specialist.getSpecialty().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code EditSpecialistDescriptor}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public static String getEditSpecialistDescriptorDetails(EditSpecialistDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" descriptor.getLocation().ifPresent(address -\u003e sb.append(PREFIX_LOCATION).append(address.value).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" descriptor.getSpecialty().ifPresent(specialty -\u003e sb.append(PREFIX_SPECIALTY).append(specialty.value)","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Kokseng1":9,"vansh284":16,"-":39,"alvinlim277":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient ALICE \u003d (Patient) new PatientBuilder().withAge(\"17\")","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Anemia\", \"Osteoporosis\")","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient BENSON \u003d (Patient) new PatientBuilder().withAge(\"29\")","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis\")","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient CARL \u003d (Patient) new PatientBuilder().withAge(\"47\")","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public static final Patient DANIEL \u003d (Patient) new PatientBuilder().withAge(\"78\").withMedicalHistory(\"Asthma\")","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist ELLE \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Dermatology\")","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"michegan ave\").withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"werner@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist FIONA \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Orthopaedic\")","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"little tokyo\").withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"lydia@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist GEORGE \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Physiotherapy\")","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"4th street\").withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"anna@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public static final Patient HOON \u003d (Patient) new PatientBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" .withAge(\"79\").withMedicalHistory(\"Diabetes\")","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"stefan@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" public static final Specialist IDA \u003d (Specialist) new SpecialistBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" .withSpecialty(\"Gynaecology\")","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"hans@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public static final Patient AMY \u003d (Patient) new PatientBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" .withAge(VALID_AGE_THIRTY).withMedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" public static final Specialist BOB \u003d (Specialist) new SpecialistBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_BOB).withSpecialty(VALID_SPECIALTY_DERMATOLOGY)","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"alvinlim277"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Kokseng1":3,"vansh284":16,"angkyakdifp":11,"-":52,"alvinlim277":19}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W13-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W13-1/tp/actions)","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W13-1/tp/graph/badge.svg?token\u003dJF1YGHQMCK)](https://codecov.io/gh/AY2324S1-CS2103T-W13-1/tp)","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"## DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"* DoConnek Pro is **a contact management app for General Practitioner (GP) clinic management staff.**\u003cbr\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":" * Adding, deleting and viewing patient information","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" * Adding, deleting and viewing specialist information (for referrals)","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" * Saving/loading contact information between sessions","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"-":7,"alvinlim277":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"# About Us","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"DoConnek Pro is developed by the W13-1 team.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"### Vansh Nath","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"\u003cimg src\u003d\"images/vansh284.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"[[github](https://github.com/vansh284)]","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"[[portfolio](team/vansh284.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"* Role: Developer","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"* Responsibilities: Team lead, Integration","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"### Gavin Chiam Xiang Zhe","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"\u003cimg src\u003d\"images/gavino3o.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"[[github](http://github.com/gavino3o)]","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"[[portfolio](team/gavino3o.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"* Role: Developer","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":"* Responsibilities: Code Quality, Deliverables and Deadlines, Git Expert","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":"### Lim Jun Han, Alvin","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"\u003cimg src\u003d\"images/alvinlim277.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":"[[github](http://github.com/alvinlim277)] ","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":"[[portfolio](team/alvinlim277.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"* Responsibilities: Documentation, Testing ","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":"### Ng Kok Seng","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":"\u003cimg src\u003d\"images/kokseng1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":"[[github](http://github.com/kokseng1)]","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":"[[portfolio](team/kokseng1.md)]","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" * Responsibilities: Scheduling and tracking, in charge of models","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":"### Angky Akdi Frandy Putrakelana","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":"\u003cimg src\u003d\"images/angkyakdifp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":"[[github](http://github.com/angkyakdifp)]","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":"[[portfolio](team/angkyakdifp.md)]","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":"* Responsibilities: In Charge of UI, In Charge of Storage","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"Kokseng1":5,"Gavino3o":9,"vansh284":6,"angkyakdifp":5,"-":31,"alvinlim277":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"vansh284"},"content":"The target users...","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"vansh284"},"content":"* are management staff at a General Practitioner\u0027s Clinic","lastModifiedDate":"2023-09-26"},{"lineNumber":263,"author":{"gitId":"vansh284"},"content":"* need to keep track of the clinic\u0027s patients\u0027 details","lastModifiedDate":"2023-09-26"},{"lineNumber":264,"author":{"gitId":"vansh284"},"content":"* need to keep track of the affiliated specialists that the clinic refers patients to","lastModifiedDate":"2023-09-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"vansh284"},"content":"* prefer typing to mouse interactions","lastModifiedDate":"2023-09-26"},{"lineNumber":268,"author":{"gitId":"vansh284"},"content":"* are reasonably comfortable using CLI apps","lastModifiedDate":"2023-09-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":270,"author":{"gitId":"vansh284"},"content":"**Value proposition**: A one-stop application that allows management of both a clinic\u0027s patient and specialist details faster than a typical mouse/GUI driven app.","lastModifiedDate":"2023-09-26"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"vansh284"},"content":"Priorities: Essential (must have) - `* * *`, Typical (nice to have) - `* *`, Novel (unlikely to have) - `*`","lastModifiedDate":"2023-09-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"angkyakdifp"},"content":"|---------|--------------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------|","lastModifiedDate":"2023-10-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"vansh284"},"content":"| `* * *` | user | deal with patient and specialist records separately | easily do patient-specific or specialist-specific operations |","lastModifiedDate":"2023-09-29"},{"lineNumber":282,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | add a new patient to the records | keep track of details of new patients |","lastModifiedDate":"2023-10-01"},{"lineNumber":283,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | delete individual patient details | delete records of patients I no longer take care |","lastModifiedDate":"2023-10-01"},{"lineNumber":284,"author":{"gitId":"Kokseng1"},"content":"| `* *` | user | edit details of existing patients | make sure the patients\u0027 details are up to date |","lastModifiedDate":"2023-10-01"},{"lineNumber":285,"author":{"gitId":"Kokseng1"},"content":"| `* *` | user | easily search for patient by name | find relevant patient information quickly |","lastModifiedDate":"2023-10-01"},{"lineNumber":286,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | access a patient\u0027s medical history | provide more informed care based on the patient\u0027s medical history |","lastModifiedDate":"2023-10-01"},{"lineNumber":287,"author":{"gitId":"Kokseng1"},"content":"| `* * *` | user | access a patient\u0027s contact number | quickly get in contact with the patient |","lastModifiedDate":"2023-10-01"},{"lineNumber":288,"author":{"gitId":"vansh284"},"content":"| `* * *` | user | access a patient\u0027s age | provide age-specific care and treatment to the patient |","lastModifiedDate":"2023-09-29"},{"lineNumber":289,"author":{"gitId":"vansh284"},"content":"| `* *` | user | filter patient records by criteria such as medical condition and age | simplify the process of finding specific patient information |","lastModifiedDate":"2023-09-29"},{"lineNumber":290,"author":{"gitId":"vansh284"},"content":"| `*` | user | customise tags for my patients | have control over the organisation of my patients |","lastModifiedDate":"2023-09-29"},{"lineNumber":291,"author":{"gitId":"vansh284"},"content":"| `*` | user | group delete patients by category or tag | save time when removing large amount of patient records |","lastModifiedDate":"2023-09-29"},{"lineNumber":292,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | add a new specialist to the records | keep track of details of new specialists patients can be referred to |","lastModifiedDate":"2023-10-05"},{"lineNumber":293,"author":{"gitId":"angkyakdifp"},"content":"| `* *` | user | edit details of existing specialists | make sure the specialist details are up to date |","lastModifiedDate":"2023-10-05"},{"lineNumber":294,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | delete specialist details | delete records of specialists I no longer work with |","lastModifiedDate":"2023-10-05"},{"lineNumber":295,"author":{"gitId":"angkyakdifp"},"content":"| `* * *` | user | access specialist details | provide relevant details to the patient I am refering |","lastModifiedDate":"2023-10-05"},{"lineNumber":296,"author":{"gitId":"angkyakdifp"},"content":"| `* *` | user | search for specialists by location | refer patients to convenient specialists to minimise time | ","lastModifiedDate":"2023-10-05"},{"lineNumber":297,"author":{"gitId":"Gavino3o"},"content":"| `* *` | user | search for specialists by their speciality | refer patients to the right experts |","lastModifiedDate":"2023-09-29"},{"lineNumber":298,"author":{"gitId":"Gavino3o"},"content":"| `*` | user with poor eyesight | customise font size and style of the App | easily read the information on the screen |","lastModifiedDate":"2023-09-29"},{"lineNumber":299,"author":{"gitId":"Gavino3o"},"content":"| `*` | user who is colour blind | customise colour schemes of the App | meet my accessibility needs |","lastModifiedDate":"2023-09-29"},{"lineNumber":300,"author":{"gitId":"Gavino3o"},"content":"| `*` | user who is a fast typer | perform all tasks will the CLI rather than the GUI | be more efficient in managing records |","lastModifiedDate":"2023-09-29"},{"lineNumber":301,"author":{"gitId":"Gavino3o"},"content":"| `* *` | user who is impatient | add new keyboard shortcuts to the App | save time when performing frequently repeated tasks |","lastModifiedDate":"2023-09-29"},{"lineNumber":302,"author":{"gitId":"alvinlim277"},"content":"| `*` | lazy user | import App data previously stored as a .CSV file directly into the App | save time on setting up the application |","lastModifiedDate":"2023-10-02"},{"lineNumber":303,"author":{"gitId":"alvinlim277"},"content":"| `*` | lazy user | export App data | share the data easily when required |","lastModifiedDate":"2023-10-02"},{"lineNumber":304,"author":{"gitId":"alvinlim277"},"content":"| `* * *` | user | save the App data | retain data for future reference |","lastModifiedDate":"2023-10-02"},{"lineNumber":305,"author":{"gitId":"alvinlim277"},"content":"| `* * *` | user | load previously saved App data | examine past records/information |","lastModifiedDate":"2023-10-02"},{"lineNumber":306,"author":{"gitId":"alvinlim277"},"content":"| `*` | experienced user | manipulate the save file directly | make quick changes to data without having to open the application |","lastModifiedDate":"2023-10-02"},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Kokseng1"},"content":"(For all use cases below, the **System** is the `DoConnek Pro` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-09-26"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"Kokseng1"},"content":"2. System shows a list of persons","lastModifiedDate":"2023-09-28"},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"Kokseng1"},"content":"4. System deletes the person","lastModifiedDate":"2023-09-28"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Kokseng1"},"content":" * 3a1. System shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Kokseng1"},"content":"**Use case: Add a patient**","lastModifiedDate":"2023-09-26"},{"lineNumber":337,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"alvinlim277"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"Kokseng1"},"content":"1. User searches list to check if patient is already in the system","lastModifiedDate":"2023-09-28"},{"lineNumber":341,"author":{"gitId":"Kokseng1"},"content":"2. System shows that there are no entries matching the patient\u0027s name","lastModifiedDate":"2023-09-28"},{"lineNumber":342,"author":{"gitId":"Kokseng1"},"content":"3. User adds patient to the system","lastModifiedDate":"2023-09-28"},{"lineNumber":343,"author":{"gitId":"Kokseng1"},"content":"4. System confirms that the person has been added","lastModifiedDate":"2023-09-28"},{"lineNumber":344,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":345,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":346,"author":{"gitId":"alvinlim277"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":347,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":348,"author":{"gitId":"alvinlim277"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"Kokseng1"},"content":"* 3a. The given parameters are invalid.","lastModifiedDate":"2023-09-26"},{"lineNumber":351,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":352,"author":{"gitId":"Kokseng1"},"content":" * 3a1. System shows an error message.","lastModifiedDate":"2023-09-28"},{"lineNumber":353,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":354,"author":{"gitId":"Kokseng1"},"content":" Use case resumes at step 2.","lastModifiedDate":"2023-09-26"},{"lineNumber":355,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":356,"author":{"gitId":"Gavino3o"},"content":"**Use case: Listing all patients**","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":358,"author":{"gitId":"Gavino3o"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":360,"author":{"gitId":"Gavino3o"},"content":"1. User requests to list all patients","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"Gavino3o"},"content":"2. System shows a list of all patients stored ","lastModifiedDate":"2023-09-27"},{"lineNumber":362,"author":{"gitId":"Gavino3o"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":363,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":364,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":365,"author":{"gitId":"Gavino3o"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":366,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"Gavino3o"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-09-27"},{"lineNumber":368,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":369,"author":{"gitId":"Gavino3o"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":370,"author":{"gitId":"Gavino3o"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":371,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":372,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":373,"author":{"gitId":"Gavino3o"},"content":"**Use case: Listing all specialists**","lastModifiedDate":"2023-09-27"},{"lineNumber":374,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":375,"author":{"gitId":"Gavino3o"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":376,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"Gavino3o"},"content":"1. User requests to list all specialists","lastModifiedDate":"2023-09-27"},{"lineNumber":378,"author":{"gitId":"Gavino3o"},"content":"2. System shows a list of all specialists stored ","lastModifiedDate":"2023-09-27"},{"lineNumber":379,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":380,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":381,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":382,"author":{"gitId":"Gavino3o"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":383,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":384,"author":{"gitId":"Gavino3o"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-09-27"},{"lineNumber":385,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":386,"author":{"gitId":"Gavino3o"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":387,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":388,"author":{"gitId":"Gavino3o"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":389,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":390,"author":{"gitId":"angkyakdifp"},"content":"**Use case: Searching for patients**","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"angkyakdifp"},"content":"**MSS**","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"angkyakdifp"},"content":"1. User requests to find patients from a keyword.","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"angkyakdifp"},"content":"2. System shows a list of patients that match the keyword with their names.","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"angkyakdifp"},"content":"**Extensions**","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"angkyakdifp"},"content":"* 1a. System detects invalid request format","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"angkyakdifp"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":405,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":406,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":407,"author":{"gitId":"angkyakdifp"},"content":"* 1b. System could not find any patient from the keyword","lastModifiedDate":"2023-10-05"},{"lineNumber":408,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":409,"author":{"gitId":"angkyakdifp"},"content":" * 1b1. System shows an error message.","lastModifiedDate":"2023-10-04"},{"lineNumber":410,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":411,"author":{"gitId":"angkyakdifp"},"content":" Use case ends.","lastModifiedDate":"2023-10-04"},{"lineNumber":412,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":413,"author":{"gitId":"alvinlim277"},"content":"**Use case: Exit the program**","lastModifiedDate":"2023-09-28"},{"lineNumber":414,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":415,"author":{"gitId":"alvinlim277"},"content":"**MSS**","lastModifiedDate":"2023-09-28"},{"lineNumber":416,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":417,"author":{"gitId":"alvinlim277"},"content":"1. User requests to exit the program","lastModifiedDate":"2023-09-28"},{"lineNumber":418,"author":{"gitId":"alvinlim277"},"content":"2. System exits the program","lastModifiedDate":"2023-09-28"},{"lineNumber":419,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-28"},{"lineNumber":420,"author":{"gitId":"alvinlim277"},"content":"* 1a. System detects invalid request format.","lastModifiedDate":"2023-09-27"},{"lineNumber":421,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":422,"author":{"gitId":"alvinlim277"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":423,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":424,"author":{"gitId":"alvinlim277"},"content":" Use case ends.","lastModifiedDate":"2023-09-27"},{"lineNumber":425,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"vansh284"},"content":"4. Should be made for use by a single user rather than multiple users.","lastModifiedDate":"2023-09-26"},{"lineNumber":434,"author":{"gitId":"vansh284"},"content":"5. Any data should be stored locally in a human-editable text file without any use of a Database Management System.","lastModifiedDate":"2023-09-26"},{"lineNumber":435,"author":{"gitId":"vansh284"},"content":"6. Should be usable with the download of a single JAR file of size less than 100 MB.","lastModifiedDate":"2023-09-26"},{"lineNumber":436,"author":{"gitId":"vansh284"},"content":"7. Should not require any installation by the users.","lastModifiedDate":"2023-09-26"},{"lineNumber":437,"author":{"gitId":"vansh284"},"content":"7. Should not depend on any remote server.","lastModifiedDate":"2023-09-26"},{"lineNumber":438,"author":{"gitId":"vansh284"},"content":"8. The product should start from the given code base and be evolved/enhanced/morphed in a breadth-first incremental manner.","lastModifiedDate":"2023-09-26"},{"lineNumber":439,"author":{"gitId":"vansh284"},"content":"9. The code should primarily follow the Object-oriented paradigm.","lastModifiedDate":"2023-09-26"},{"lineNumber":440,"author":{"gitId":"vansh284"},"content":"10. Should only use _appropriate third party frameworks/libraries/services_ that have been approved.","lastModifiedDate":"2023-09-26"},{"lineNumber":441,"author":{"gitId":"vansh284"},"content":"11. The product\u0027s _GUI should work well_ for standard screen resolutions 1920x1080 and higher, and, for screen scales 100% and 125%.","lastModifiedDate":"2023-09-26"},{"lineNumber":442,"author":{"gitId":"vansh284"},"content":"12. The product\u0027s _GUI should be usable_ for resolutions 1280x720 and higher, and, for screen scales 150%.","lastModifiedDate":"2023-09-26"},{"lineNumber":443,"author":{"gitId":"vansh284"},"content":"13. Should be intuitive to use for a user without a technical background.","lastModifiedDate":"2023-09-26"},{"lineNumber":444,"author":{"gitId":"vansh284"},"content":"13. The product is not required to handle printing of the patient and specialist records.","lastModifiedDate":"2023-09-26"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"vansh284"},"content":"* **Appropriate third party frameworks/libraries/systems**: Those frameworks/libraries/systems that are free, open-source, have permissive license terms, don\u0027t require installation by the users and don\u0027t violate other constraints.","lastModifiedDate":"2023-09-26"},{"lineNumber":452,"author":{"gitId":"vansh284"},"content":"* **GUI should work well**: The GUI should not cause resolution-related inconveniences for the user.","lastModifiedDate":"2023-09-26"},{"lineNumber":453,"author":{"gitId":"vansh284"},"content":"* **GUI should be usable**: The GUI\u0027s functions can all be used, although user-experience may be suboptimal.","lastModifiedDate":"2023-09-26"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kokseng1":22,"vansh284":29,"angkyakdifp":29,"Gavino3o":39,"-":361,"alvinlim277":26}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"DoConnek Pro is a **desktop app** that helps **General Practitioner Clinic Management Staff** manage their **contact information for patients and specialists**. It is optimized for **Command Line Interface (CLI) users** while having a **Graphical User Interface (GUI)**. This allows frequent tasks to be completed faster by typing in commands.","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"1. Download the latest `DocConnekPro.jar` from [here](https://github.com/AY2324S1-CS2103T-W13-1/tp/releases).","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your DocConnek Pro.","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar DocConnekPro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":"1. Type the command in the command input box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" * `list -pa` : Lists all patients.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" * `add -pa n/John p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis` : Adds a patient named `John` to the list.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" * `delete 3` : Deletes the 3rd person shown in the current list.","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"* Commands acting on the address book must contain the `-pa` (for patient) and the `-sp` (for specialist) tag to specify which subset they ","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"would like the command to operate on.","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" e.g. in `add -pa n/NAME`, `NAME` is a parameter which can be used as `add -pa n/John Doe`.","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" e.g `n/NAME [m/MEDICAL_HISTORY]` can be used as `n/John Doe m/Osteoporosis` or as `n/John Doe`.","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" e.g. `[m/MEDICAL_HISTORY]…​` can be used as ` ` (i.e. 0 times), `m/Osteoporosis`, `m/Osteoporosis m/Asthma` etc.","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"alvinlim277"},"content":"### Adding a patient or specialist: `add`","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":"Adds a patient or specialist to the address book.","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"alvinlim277"},"content":"Format (for patients): `add -pa n/NAME e/EMAIL p/PHONE_NUMBER a/AGE [m/MEDICAL_HISTORY]...​`\u003cbr\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"alvinlim277"},"content":"A patient can have any number of medical histories (including 0)","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"alvinlim277"},"content":"Format (for specialists): `add -sp n/NAME e/EMAIL p/PHONE_NUMBER s/SPECIALISATION l/LOCATION`","lastModifiedDate":"2023-10-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"alvinlim277"},"content":"* `add -pa n/John p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis`","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":"* `add -sp n/Jane p/73331515 s/Dermatologist l/Ang Mo Kio`","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":"### Listing patient or specialist records: `list`","lastModifiedDate":"2023-09-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":"Shows a list of all patients or specialists in stored records.","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":"Format: `list -PERSON_TYPE`","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":"Examples:","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":"* `list -pa` Lists all patients in records.","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":"* `list -sp` Lists all specialists in records.","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":"### Locating persons by their attributes: `find`","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":"Finds persons whose attributes contain any of the given keywords. ","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":"Multiple attributes can be searched at once, the result will display any person","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":"with all attributes containing any of the corresponding keywords in the command.","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":"Format: `find -PERSON_TYPE [PREFIX/KEYWORDS]`","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"alvinlim277"},"content":"* All prefixes are optional. Hence, calling `find -PERSON_TYPE` (without any prefixes) will result in all person of the specified type being listed.","lastModifiedDate":"2023-10-24"},{"lineNumber":112,"author":{"gitId":"alvinlim277"},"content":"* The search is case-insensitive.","lastModifiedDate":"2023-10-23"},{"lineNumber":113,"author":{"gitId":"alvinlim277"},"content":" * e.g `hans` will match `Hans`","lastModifiedDate":"2023-10-23"},{"lineNumber":114,"author":{"gitId":"alvinlim277"},"content":"* The order of the keywords does not matter. ","lastModifiedDate":"2023-10-23"},{"lineNumber":115,"author":{"gitId":"alvinlim277"},"content":" * e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2023-10-23"},{"lineNumber":116,"author":{"gitId":"alvinlim277"},"content":"* There are different behaviours regarding the searching of different parameters:","lastModifiedDate":"2023-10-23"},{"lineNumber":117,"author":{"gitId":"alvinlim277"},"content":" * For `NAME`, `MEDICAL_HISTORY`, `SPECIALISATION`, `EMAIL`, `LOCATION` and `PHONE`, even substrings will be matched. ","lastModifiedDate":"2023-10-24"},{"lineNumber":118,"author":{"gitId":"alvinlim277"},"content":" * e.g. `ha` will match `Hans`","lastModifiedDate":"2023-10-23"},{"lineNumber":119,"author":{"gitId":"alvinlim277"},"content":" * For `AGE` and `TAGS` only full words will be matched. ","lastModifiedDate":"2023-10-24"},{"lineNumber":120,"author":{"gitId":"alvinlim277"},"content":" * e.g. `1` will not match `18`","lastModifiedDate":"2023-10-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2023-10-24"},{"lineNumber":122,"author":{"gitId":"alvinlim277"},"content":" * The keywords will be separated out by whitespaces e.g. `hans bo` is akin to searching for `hans` and `bo` simultaneously.","lastModifiedDate":"2023-10-24"},{"lineNumber":123,"author":{"gitId":"alvinlim277"},"content":" * e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2023-10-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"alvinlim277"},"content":"* `find -pa n/John` returns the patient `Johnny Depp` and the patient `John Doe`","lastModifiedDate":"2023-10-23"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":"* `find -sp n/alex david` returns the specialists `Alex Yeoh` and `David Li` ","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"alvinlim277"},"content":"* `find -sp n/Alex s/Orthopaedic` returns any specialists names including the string `Alex` who has the `Orthopaedic` specialty","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":"\u003cbr\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"vansh284"},"content":"### Deleting a patient or specialist : `delete`","lastModifiedDate":"2023-09-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"vansh284"},"content":"Deletes the specified patient or specialist from the stored records.","lastModifiedDate":"2023-09-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"vansh284"},"content":"* The index **must be a positive integer** 1, 2, 3, …​ with a maximum value of the list size.","lastModifiedDate":"2023-09-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"alvinlim277"},"content":"* `list -pa` followed by `delete 2` deletes the 2nd patient in the listed patients. ","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"Gavino3o"},"content":"* `find -sp n/Betsy` followed by `delete 1` deletes the 1st specialist from the specialists listed in the `find` command.","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"vansh284"},"content":"Clears all entries from the stored records.","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"Kokseng1"},"content":"### Save and Load Data","lastModifiedDate":"2023-09-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"Kokseng1"},"content":"The patient and specialist data will automatically be saved to the device’s harddrive every time the data is updated, and will automatically be loaded when the user starts the application. The user does not need to manually save any data.","lastModifiedDate":"2023-09-25"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":163,"author":{"gitId":"vansh284"},"content":"DoConnek Pro data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":166,"author":{"gitId":"vansh284"},"content":"If your changes to the data file makes its format invalid, DoConnek Pro will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":169,"author":{"gitId":"Kokseng1"},"content":"### UI mock-up :","lastModifiedDate":"2023-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":171,"author":{"gitId":"alvinlim277"},"content":"![UI mock-up](images/Ui.png)","lastModifiedDate":"2023-10-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"alvinlim277"},"content":"**Add (patient)** | `add -pa n/NAME e/EMAIL p/PHONE_NUMBER a/AGE [m/MEDICAL_HISTORY]...` \u003cbr\u003e e.g., `add -pa n/John e/johnjohn@example.com p/12345678 a/21 m/Osteoporosis m/Rheumatoid arthritis`","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"alvinlim277"},"content":"**Add (specialist)** | `add -sp n/NAME e/EMAIL p/PHONE_NUMBER s/SPECIALISATION l/LOCATION` \u003cbr\u003e e.g., `add -sp n/Jane e/janejane@example.com p/73331515 s/Dermatologist l/Ang Mo Kio`","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2023-10-13"},{"lineNumber":196,"author":{"gitId":"Gavino3o"},"content":"**Find** | `find -PERSON_TYPE KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find -pa n/James Jake p/73281193`","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"vansh284"},"content":"**List** | `list -pa`","lastModifiedDate":"2023-09-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kokseng1":3,"vansh284":16,"angkyakdifp":6,"Gavino3o":14,"-":133,"alvinlim277":26}},{"path":"docs/team/alvinlim277.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"alvinlim277"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"title: Lim Jun Han, Alvin Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"alvinlim277":26}},{"path":"docs/team/angkyakdifp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"layout: page","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"title: Angky Akdi Frandy Putrakelana Project Portfolio Page","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"---","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"### Overview:","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"- *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" - *to be added soon*","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"angkyakdifp":26}},{"path":"docs/team/gavino3o.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"title: Gavin Chiam Xiang Zhe Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"- **Code Contributed:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"- **Contributions to Documentation:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"- **Contributions to team-based tasks:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"- **Review/mentoring contributions:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"- **Contributions beyond the project team:** ","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"Gavino3o":26}},{"path":"docs/team/kokseng1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"title: Ng Kok Seng Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"### Overview:","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"- *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"### Summary of Contributions","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"- **Code Contributed:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" - **User Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"Kokseng1":26}},{"path":"docs/team/vansh284.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"layout: page","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"title: Vansh Nath\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"---","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"## Project: DoConnek Pro","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"- **Code Contributed:** [RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dvansh284\u0026breakdown\u003dtrue)","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"- **Enhancements implemented:**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"- **Contributions to Documentation:**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" - **User Guide:**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" - Added documentation for the feature `delete`","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" - **Developer Guide:** *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" - Added details of the non-functional requirements","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"- **Contributions to team-based tasks:**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"- **Review/mentoring contributions:**","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"- **Contributions beyond the project team:**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" - *to be added soon*","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"vansh284":23}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" public static final Version VERSION \u003d new Version(1, 2, 1, true);","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"vansh284":1,"-":185}},{"path":"src/main/java/seedu/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-23"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" * Returns true if the words in {@code sentence} contains the {@code substring}.","lastModifiedDate":"2023-10-23"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" * Ignores case and a full word match is not required.","lastModifiedDate":"2023-10-23"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" * wordsContainSubstringIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2023-10-23"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" * wordsContainSubstringIgnoreCase(\"ABc def\", \"De\") \u003d\u003d true","lastModifiedDate":"2023-10-23"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" * wordsContainSubstringIgnoreCase(\"ABc def\", \"c de\") \u003d\u003d false //only searches for substrings within words","lastModifiedDate":"2023-10-23"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" * @param sentence cannot be null","lastModifiedDate":"2023-10-23"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":" * @param substring cannot be null, cannot be empty","lastModifiedDate":"2023-10-23"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" public static boolean wordsContainSubstringIgnoreCase(String sentence, String substring) {","lastModifiedDate":"2023-10-23"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(sentence);","lastModifiedDate":"2023-10-23"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(substring);","lastModifiedDate":"2023-10-23"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" String preppedWord \u003d substring.trim();","lastModifiedDate":"2023-10-23"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" checkArgument(!preppedWord.isEmpty(), \"Substring parameter cannot be empty\");","lastModifiedDate":"2023-10-23"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(sentenceWord -\u003e sentenceWord.toLowerCase().contains(preppedWord.toLowerCase()));","lastModifiedDate":"2023-10-23"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":93,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"Kokseng1"},"content":" * Adds specified String to the end of the toString return while keeping the format constant","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"Kokseng1"},"content":" * @param stringToAdd string to be added","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"Kokseng1"},"content":" * @param originalToString string to be added to","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"Kokseng1"},"content":" * @return String consistent with Person#toString() format","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"Kokseng1"},"content":" public static String addFieldToPersonToString(String stringToAdd, String originalToString) {","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"Kokseng1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(originalToString);","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"Kokseng1"},"content":" int insertIndex \u003d originalToString.length() - 1;","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"Kokseng1"},"content":" stringBuilder.insert(insertIndex, stringToAdd);","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"Kokseng1"},"content":" return (stringBuilder.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kokseng1":15,"-":68,"alvinlim277":25}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_INVALID_PERSON_TYPE \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" \"Invalid person type! Specify either \\\"-pa\\\" for patient or \\\"-sp\\\" for specialist\";","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_PERSON_TYPE_MISMATCH_INDEX \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" \"The person type tag does not match the person type at the specified index.\";","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" if (person instanceof Patient) {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" builder.insert(0, \"Patient \")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Age: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" .append(patient.getAge())","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Medical History: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" .append(patient.getMedicalHistory());","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" if (person instanceof Specialist) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" builder.insert(0, \"Specialist \")","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" .append(\"; Specialty: \")","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" .append(specialist.getSpecialty());","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":18,"vansh284":4,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" + \": Adds a patient to the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" + \": Adds a specialist to the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-23"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-23"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" if (toAdd instanceof Patient) {","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":29,"vansh284":2,"angkyakdifp":3,"-":74,"alvinlim277":10}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" + \"1\";","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" * @param targetIndex of the person in the list to delete","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"vansh284":5,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" + \": Edit a patient in the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"Kokseng1"},"content":" + \": edit a specialist in the address book. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-23"},{"lineNumber":81,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-23"},{"lineNumber":86,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" if (editPersonDescriptor instanceof EditPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" this.editPersonDescriptor \u003d new EditPatientDescriptor((EditPatientDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" this.editPersonDescriptor \u003d new EditSpecialistDescriptor((EditSpecialistDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" Person editedPerson;","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"vansh284"},"content":" if (personToEdit instanceof Patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"vansh284"},"content":" if (!(editPersonDescriptor instanceof EditPatientDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"vansh284"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_TYPE_MISMATCH_INDEX);","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" editedPerson \u003d createEditedPatient((Patient) personToEdit, (EditPatientDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"vansh284"},"content":" if (!(editPersonDescriptor instanceof EditSpecialistDescriptor)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"vansh284"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_TYPE_MISMATCH_INDEX);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"vansh284"},"content":" editedPerson \u003d createEditedSpecialist((Specialist) personToEdit,","lastModifiedDate":"2023-10-06"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" (EditSpecialistDescriptor) editPersonDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"vansh284"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2023-10-06"},{"lineNumber":141,"author":{"gitId":"vansh284"},"content":" * edited with {@code editPatientDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"vansh284"},"content":" private static Patient createEditedPatient(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"vansh284"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"vansh284"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":147,"author":{"gitId":"vansh284"},"content":" Phone updatedPhone \u003d editPatientDescriptor.getPhone().orElse(patientToEdit.getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":148,"author":{"gitId":"vansh284"},"content":" Email updatedEmail \u003d editPatientDescriptor.getEmail().orElse(patientToEdit.getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"vansh284"},"content":" Set\u003cTag\u003e updatedTags \u003d editPatientDescriptor.getTags().orElse(patientToEdit.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":150,"author":{"gitId":"vansh284"},"content":" Age updatedAge \u003d editPatientDescriptor.getAge().orElse(patientToEdit.getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":151,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e updatedMedicalHistory \u003d editPatientDescriptor.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"angkyakdifp"},"content":" .orElse(patientToEdit.getMedicalHistory());","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"alvinlim277"},"content":" return new Patient(updatedName, updatedPhone, updatedEmail, updatedTags, updatedAge,","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"vansh284"},"content":" updatedMedicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":157,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":158,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" * Creates and returns a {@code Specialist} with the details of {@code specialistToEdit}","lastModifiedDate":"2023-10-06"},{"lineNumber":160,"author":{"gitId":"vansh284"},"content":" * edited with {@code editSpecialistDescriptor}.","lastModifiedDate":"2023-10-06"},{"lineNumber":161,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" private static Specialist createEditedSpecialist(Specialist specialistToEdit,","lastModifiedDate":"2023-10-06"},{"lineNumber":163,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":164,"author":{"gitId":"vansh284"},"content":" assert specialistToEdit !\u003d null;","lastModifiedDate":"2023-10-06"},{"lineNumber":165,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":166,"author":{"gitId":"vansh284"},"content":" Name updatedName \u003d editSpecialistDescriptor.getName().orElse(specialistToEdit.getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":167,"author":{"gitId":"vansh284"},"content":" Phone updatedPhone \u003d editSpecialistDescriptor.getPhone().orElse(specialistToEdit.getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":168,"author":{"gitId":"vansh284"},"content":" Email updatedEmail \u003d editSpecialistDescriptor.getEmail().orElse(specialistToEdit.getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":169,"author":{"gitId":"alvinlim277"},"content":" Location updatedLocation \u003d editSpecialistDescriptor.getLocation().orElse(specialistToEdit.getLocation());","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"vansh284"},"content":" Set\u003cTag\u003e updatedTags \u003d editSpecialistDescriptor.getTags().orElse(specialistToEdit.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":171,"author":{"gitId":"Kokseng1"},"content":" Specialty updatedSpecialty \u003d editSpecialistDescriptor.getSpecialty().orElse(specialistToEdit.getSpecialty());","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(updatedName, updatedPhone, updatedEmail, updatedLocation, updatedTags, updatedSpecialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"vansh284"},"content":" public abstract static class EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"alvinlim277"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":248,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":264,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":265,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":301,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":302,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":303,"author":{"gitId":"vansh284"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"vansh284"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":306,"author":{"gitId":"vansh284"},"content":" public static class EditPatientDescriptor extends EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":307,"author":{"gitId":"vansh284"},"content":" private Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":308,"author":{"gitId":"angkyakdifp"},"content":" private Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":309,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":310,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":311,"author":{"gitId":"vansh284"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-06"},{"lineNumber":312,"author":{"gitId":"vansh284"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-06"},{"lineNumber":313,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":314,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":315,"author":{"gitId":"vansh284"},"content":" super(toCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":316,"author":{"gitId":"angkyakdifp"},"content":" setMedicalHistory(toCopy.medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":317,"author":{"gitId":"vansh284"},"content":" setAge(toCopy.age);","lastModifiedDate":"2023-10-15"},{"lineNumber":318,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":319,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":320,"author":{"gitId":"angkyakdifp"},"content":" public EditPatientDescriptor() {}","lastModifiedDate":"2023-10-13"},{"lineNumber":321,"author":{"gitId":"angkyakdifp"},"content":" public void setMedicalHistory(Set\u003cMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":322,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d (medicalHistory !\u003d null) ? new HashSet\u003c\u003e(medicalHistory) : null;","lastModifiedDate":"2023-10-17"},{"lineNumber":323,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":324,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":325,"author":{"gitId":"vansh284"},"content":" public void setAge(Age age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":326,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":327,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":328,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":329,"author":{"gitId":"angkyakdifp"},"content":" public Optional\u003cSet\u003cMedicalHistory\u003e\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"angkyakdifp"},"content":" return (medicalHistory !\u003d null)","lastModifiedDate":"2023-10-17"},{"lineNumber":331,"author":{"gitId":"angkyakdifp"},"content":" ? Optional.of(Collections.unmodifiableSet(medicalHistory))","lastModifiedDate":"2023-10-17"},{"lineNumber":332,"author":{"gitId":"angkyakdifp"},"content":" : Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":333,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":334,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":335,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":336,"author":{"gitId":"vansh284"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":337,"author":{"gitId":"vansh284"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":338,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":339,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":340,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":341,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":342,"author":{"gitId":"angkyakdifp"},"content":" if (super.equals(other) \u0026\u0026 other instanceof EditPatientDescriptor) {","lastModifiedDate":"2023-10-13"},{"lineNumber":343,"author":{"gitId":"angkyakdifp"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":344,"author":{"gitId":"vansh284"},"content":" return Objects.equals(age, otherEditPatientDescriptor.age)","lastModifiedDate":"2023-10-15"},{"lineNumber":345,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 Objects.equals(medicalHistory, otherEditPatientDescriptor.medicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":346,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":347,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":348,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":349,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":350,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":351,"author":{"gitId":"vansh284"},"content":" String stringToAdd \u003d \", age\u003d\" + age + \", medical history\u003d\" + medicalHistory;","lastModifiedDate":"2023-10-15"},{"lineNumber":352,"author":{"gitId":"angkyakdifp"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":353,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":354,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":355,"author":{"gitId":"angkyakdifp"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-13"},{"lineNumber":356,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":357,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":358,"author":{"gitId":"angkyakdifp"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-13"},{"lineNumber":359,"author":{"gitId":"vansh284"},"content":" return super.isAnyFieldEdited() || CollectionUtil.isAnyNonNull(age, medicalHistory);","lastModifiedDate":"2023-10-15"},{"lineNumber":360,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":361,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":362,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":363,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":364,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":365,"author":{"gitId":"vansh284"},"content":" * Stores the details to edit the specialist with. Each non-empty field value will replace the","lastModifiedDate":"2023-10-06"},{"lineNumber":366,"author":{"gitId":"vansh284"},"content":" * corresponding field value of the specialist.","lastModifiedDate":"2023-10-06"},{"lineNumber":367,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":368,"author":{"gitId":"vansh284"},"content":" public static class EditSpecialistDescriptor extends EditPersonDescriptor {","lastModifiedDate":"2023-10-06"},{"lineNumber":369,"author":{"gitId":"Kokseng1"},"content":" private Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":370,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":371,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":372,"author":{"gitId":"vansh284"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-06"},{"lineNumber":373,"author":{"gitId":"vansh284"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-06"},{"lineNumber":374,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":375,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptor(EditSpecialistDescriptor toCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":376,"author":{"gitId":"vansh284"},"content":" super(toCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":377,"author":{"gitId":"alvinlim277"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2023-10-16"},{"lineNumber":378,"author":{"gitId":"Kokseng1"},"content":" setSpecialty(toCopy.specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":379,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":380,"author":{"gitId":"Kokseng1"},"content":" public EditSpecialistDescriptor() {}","lastModifiedDate":"2023-10-10"},{"lineNumber":381,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":382,"author":{"gitId":"alvinlim277"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":383,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":384,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":385,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":386,"author":{"gitId":"alvinlim277"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":387,"author":{"gitId":"alvinlim277"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":388,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":389,"author":{"gitId":"Kokseng1"},"content":" public void setSpecialty(Specialty specialty) {","lastModifiedDate":"2023-10-10"},{"lineNumber":390,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":391,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":392,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":393,"author":{"gitId":"Kokseng1"},"content":" public Optional\u003cSpecialty\u003e getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":394,"author":{"gitId":"Kokseng1"},"content":" return Optional.ofNullable(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":395,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":396,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":397,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":398,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":399,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":400,"author":{"gitId":"Kokseng1"},"content":" if (super.equals(other) \u0026\u0026 other instanceof EditSpecialistDescriptor) {","lastModifiedDate":"2023-10-10"},{"lineNumber":401,"author":{"gitId":"Kokseng1"},"content":" EditSpecialistDescriptor otherEditSpecialistDescriptor \u003d (EditSpecialistDescriptor) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":402,"author":{"gitId":"alvinlim277"},"content":" return Objects.equals(specialty, otherEditSpecialistDescriptor.specialty)","lastModifiedDate":"2023-10-16"},{"lineNumber":403,"author":{"gitId":"alvinlim277"},"content":" \u0026\u0026 Objects.equals(location, otherEditSpecialistDescriptor.location);","lastModifiedDate":"2023-10-16"},{"lineNumber":404,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":405,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":406,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":407,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":408,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":409,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":410,"author":{"gitId":"alvinlim277"},"content":" String stringToAdd \u003d \", location\u003d\" + location + \", specialty\u003d\" + specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":411,"author":{"gitId":"Kokseng1"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":412,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":413,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":414,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":415,"author":{"gitId":"Kokseng1"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-10"},{"lineNumber":416,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":417,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":418,"author":{"gitId":"Kokseng1"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-10"},{"lineNumber":419,"author":{"gitId":"Kokseng1"},"content":" return super.isAnyFieldEdited() || CollectionUtil.isAnyNonNull(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":420,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":421,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":422,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Kokseng1":67,"angkyakdifp":31,"vansh284":100,"-":201,"alvinlim277":23}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting DoConnek Pro as requested ...\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":18,"alvinlim277":1}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_USAGE_GENERAL \u003d \"Parameters: \"","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" private static final String PERSON_EXAMPLE \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_TAG + \"owesMoney \";","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_PATIENT \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" + \": Finds all Patients whose attributes contain any of \"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"MEDICAL HISTORY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" + PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_MEDICALHISTORY + \"Osteoporosis\";","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_USAGE_SPECIALIST \u003d COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" + \": Finds all Specialists whose attributes contain any of \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" + MESSAGE_USAGE_GENERAL","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"LOCATION \"","lastModifiedDate":"2023-10-23"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"SPECIALTY \\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" + SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" + PERSON_EXAMPLE","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"alvinlim277"},"content":" + PREFIX_LOCATION + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" + PREFIX_SPECIALTY + \"Physiotherapist \";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" private final FindPredicateMap findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" private final PersonType personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" * @param findPredicateMap The predicate that describes the name being searched for","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" * @param personType The type of person being searched for i.e. patient or specialist","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" public FindCommand(FindPredicateMap findPredicateMap, PersonType personType) {","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" this.findPredicateMap \u003d findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" this.personType \u003d personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e findPredicateMap.getAllPredicates().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" .map(pred -\u003e pred.test(person))","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" model.updateFilteredPersonList(predicate.and(personType.getSearchPredicate()));","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap.equals(otherFindCommand.findPredicateMap)","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" \u0026\u0026 personType.equals(otherFindCommand.personType);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" .add(\"predicate\", findPredicateMap)","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"vansh284"},"content":" .add(\"personType\", personType)","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" return personType;","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" public FindPredicateMap getPredicate() {","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Kokseng1":32,"vansh284":10,"Gavino3o":33,"-":46,"alvinlim277":3}},{"path":"src/main/java/seedu/address/logic/commands/FindPredicateMap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" * Stores mapping of prefixes to their respective predicates for a {@code find} command.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" * Keys are unique and each key should be associated with one predicate value.","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" * Values for a given key are stored in a HashSet, and the insertion ordering is not maintained.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"public class FindPredicateMap {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" /** Prefixes mapped to their respective predicates **/","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" private final Map\u003cPrefix, Predicate\u003cPerson\u003e\u003e map \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" * Associates the specified predicate value with {@code prefix} key in this map.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" * @param prefix prefix key with which the specified argument value is to be associated","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" * @param predicateValue predicate value to be associated with the specified prefix key","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" public void put(Prefix prefix, Predicate\u003cPerson\u003e predicateValue) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" map.put(prefix, predicateValue);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" * Returns the predicate value of {@code prefix}.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" public Optional\u003cPredicate\u003cPerson\u003e\u003e getPredicateValue(Prefix prefix) {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" return Optional.ofNullable(map.get(prefix));","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" * Returns all predicate value of {@code prefix}.","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" public List\u003cPredicate\u003cPerson\u003e\u003e getAllPredicates() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" if (map.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e(map.values());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof FindPredicateMap)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap otherFindPredicateMap \u003d (FindPredicateMap) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"Gavino3o"},"content":" if (this.map.size() !\u003d otherFindPredicateMap.map.size()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" boolean isHashMapEquals \u003d this.map.equals(otherFindPredicateMap.map);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" boolean isKeyValueEquals \u003d this.map.keySet().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" .map(key -\u003e otherFindPredicateMap.getPredicateValue(key).equals(this.getPredicateValue(key)))","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" return isHashMapEquals || isKeyValueEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"Gavino3o":73}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" public static final String PATIENT_MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" public static final String SPECIALIST_MESSAGE_SUCCESS \u003d \"Listed all specialists\";","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" private final PersonType personType;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" * @param personType The type of person being listed i.e. patient or specialist","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" public ListCommand(PersonType personType) {","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" this.personType \u003d personType;","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(personType.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" return new CommandResult(personType \u003d\u003d PersonType.PATIENT","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" ? PATIENT_MESSAGE_SUCCESS","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" : SPECIALIST_MESSAGE_SUCCESS);","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":20,"alvinlim277":18}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"public class AddCommandParser implements ParserComplex\u003cAddCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public AddCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" Person person \u003d parsePatient(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" Person person \u003d parseSpecialist(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" return new AddCommand(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" private Patient parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AGE)","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE_PATIENT));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_AGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory \u003d ParserUtil.parseMedicalHistories(argMultimap","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" .getAllValues(PREFIX_MEDICALHISTORY));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"alvinlim277"},"content":" Patient patient \u003d new Patient(name, phone, email, tagList, age, medicalHistory);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" return patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" private Specialist parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"Kokseng1"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"alvinlim277"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_LOCATION, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SPECIALTY)","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_SPECIALIST));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"Kokseng1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"alvinlim277"},"content":" Location location \u003d ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Kokseng1"},"content":" Specialty specialty \u003d ParserUtil.parseSpecialty(argMultimap.getValue(PREFIX_SPECIALTY).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"alvinlim277"},"content":" Specialist specialist \u003d new Specialist(name, phone, email, location, tagList, specialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" return specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Kokseng1":10,"vansh284":24,"angkyakdifp":10,"-":55,"alvinlim277":13}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" * Used for initial separation of command word and args. Basic commands do not require a person type tag.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" \"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" * Used for initial separation of command word, person type and args. Complex commands require a person type tag.","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" private static final Pattern COMPLEX_COMMAND_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" \"(?\u003ccommandWord\u003e\\\\S+)\\\\s(?\u003cpersonType\u003e-\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" final Matcher matcherBasic \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" final Matcher matcherPersonType \u003d COMPLEX_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" if (matcherPersonType.matches()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" final String commandWord \u003d matcherPersonType.group(\"commandWord\");","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" final String personTypeWord \u003d matcherPersonType.group(\"personType\");","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" final String arguments \u003d matcherPersonType.group(\"arguments\");","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" // (i.e., FINE, FINER and lower) log messages such as the one below.","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" logger.fine(","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" \"Command word: \" + commandWord + \"; Person type: \" + personTypeWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" PersonType personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" if (personTypeWord.equals(PATIENT_TAG)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" personType \u003d PersonType.PATIENT;","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" } else if (personTypeWord.equals(SPECIALIST_TAG)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" personType \u003d PersonType.SPECIALIST;","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_TYPE);","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" return new AddCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" return new EditCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" return new FindCommandParser().parse(personType, arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" return new ListCommand(personType);","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" default:","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" } else if (matcherBasic.matches()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" final String commandWord \u003d matcherBasic.group(\"commandWord\");","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"vansh284"},"content":" final String arguments \u003d matcherBasic.group(\"arguments\");","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"vansh284"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":" // (i.e., FINE, FINER and lower) log messages such as the one below.","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"alvinlim277"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"alvinlim277"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"vansh284"},"content":" return new ClearCommand();","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":117,"author":{"gitId":"Kokseng1"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"Kokseng1"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"Kokseng1"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"Kokseng1"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_TYPE);","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kokseng1":6,"vansh284":50,"-":66,"alvinlim277":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"l/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"a/\");","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" public static final Prefix PREFIX_MEDICALHISTORY \u003d new Prefix(\"m/\");","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" public static final Prefix PREFIX_SPECIALTY \u003d new Prefix(\"s/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" /* Tag definitions */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" public static final String PATIENT_TAG \u003d \"-pa\";","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" public static final String SPECIALIST_TAG \u003d \"-sp\";","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Kokseng1":1,"vansh284":4,"angkyakdifp":1,"Gavino3o":1,"-":14,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"public class DeleteCommandParser implements ParserBasic\u003cDeleteCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":28,"alvinlim277":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":"public class EditCommandParser implements ParserComplex\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" public EditCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" return parsePatient(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" return parseSpecialist(args);","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" private EditCommand parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_AGE);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" EditCommand.MESSAGE_USAGE_PATIENT), pe);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(ParserUtil.parseAge(argMultimap","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" .getValue(PREFIX_AGE).get()));","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":" parseMedicalHistoriesForEdit(argMultimap.getAllValues(PREFIX_MEDICALHISTORY))","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" .ifPresent(editPatientDescriptor::setMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPatientDescriptor::setTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":" if (!editPatientDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" return new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" private EditCommand parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"Kokseng1"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"Kokseng1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" Index index;","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" try {","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"Kokseng1"},"content":" EditCommand.MESSAGE_USAGE_SPECIALIST), pe);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":114,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"alvinlim277"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"alvinlim277"},"content":" editSpecialistDescriptor.setLocation(ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":122,"author":{"gitId":"Kokseng1"},"content":" if (argMultimap.getValue(PREFIX_SPECIALTY).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":123,"author":{"gitId":"Kokseng1"},"content":" editSpecialistDescriptor.setSpecialty(ParserUtil.parseSpecialty(","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"Kokseng1"},"content":" argMultimap.getValue(PREFIX_SPECIALTY).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":125,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":126,"author":{"gitId":"vansh284"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editSpecialistDescriptor::setTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" if (!editSpecialistDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":131,"author":{"gitId":"vansh284"},"content":" return new EditCommand(index, editSpecialistDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":149,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"angkyakdifp"},"content":" * Parses {@code Collection\u003cString\u003e medicalHistories} into a {@code Set\u003cMedicalHistory\u003e}","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"angkyakdifp"},"content":" * if {@code medicalHistories} is non-empty.","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"angkyakdifp"},"content":" * If {@code medicalHistories} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"angkyakdifp"},"content":" * {@code Set\u003cMedicalHistories\u003e} containing zero medical history.","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"angkyakdifp"},"content":" private Optional\u003cSet\u003cMedicalHistory\u003e\u003e parseMedicalHistoriesForEdit(Collection\u003cString\u003e medicalHistories)","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"angkyakdifp"},"content":" throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"angkyakdifp"},"content":" assert medicalHistories !\u003d null;","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistories.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"angkyakdifp"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"angkyakdifp"},"content":" Collection\u003cString\u003e medHistSet \u003d medicalHistories.size() \u003d\u003d 1 \u0026\u0026 medicalHistories.contains(\"\")","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"angkyakdifp"},"content":" ? Collections.emptySet()","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"angkyakdifp"},"content":" : medicalHistories;","lastModifiedDate":"2023-10-17"},{"lineNumber":165,"author":{"gitId":"angkyakdifp"},"content":" return Optional.of(ParserUtil.parseMedicalHistories(medHistSet));","lastModifiedDate":"2023-10-17"},{"lineNumber":166,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Kokseng1":13,"vansh284":42,"angkyakdifp":25,"-":80,"alvinlim277":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_TYPE;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" * Parses input arguments and creates a new FindCommand object.","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":"public class FindCommandParser implements ParserComplex\u003cFindCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public FindCommand parse(PersonType personType, String args) throws ParseException {","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" if (personType.equals(PersonType.PATIENT)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" return parsePatient(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" } else if (personType.equals(PersonType.SPECIALIST)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return parseSpecialist(args);","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" } else {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_INVALID_PERSON_TYPE));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" private FindCommand parsePatient(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" PREFIX_TAG, PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" if (!argMultimap.getPreamble().isBlank() \u0026\u0026 !args.isBlank()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_PATIENT));","lastModifiedDate":"2023-10-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonPredicates(argMultimap);","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" List\u003cString\u003e ageKeyWords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_AGE);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, new AgeContainsKeywordsPredicate(ageKeyWords));","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_MEDICALHISTORY).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e medHistKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY,","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":" new MedHistoryContainsKeywordsPredicate(medHistKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" return new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" private FindCommand parseSpecialist(String args) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"alvinlim277"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" PREFIX_TAG, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" if (!argMultimap.getPreamble().isBlank() \u0026\u0026 !args.isBlank()) {","lastModifiedDate":"2023-10-19"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST));","lastModifiedDate":"2023-10-19"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-19"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-19"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" PREFIX_LOCATION, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonPredicates(argMultimap);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" List\u003cString\u003e addressKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, new LocationContainsKeywordsPredicate(addressKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_SPECIALTY).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e specialtyKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_SPECIALTY);","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, new SpecialtyContainsKeywordsPredicate(specialtyKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" return new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" private List\u003cString\u003e splitKeywordsByWhitespace(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" String trimmedArgs \u003d argMultimap.getValue(prefix).get().trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" String[] keywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" return Arrays.asList(keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPersonPredicates(ArgumentMultimap argMultimap) {","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e nameKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_NAME);","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(nameKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e phoneKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_PHONE);","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, new PhoneContainsKeywordsPredicate(phoneKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e emailKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_EMAIL);","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, new EmailContainsKeywordsPredicate(emailKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e tagKeywords \u003d splitKeywordsByWhitespace(argMultimap, PREFIX_TAG);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, new TagsContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Kokseng1":2,"vansh284":7,"Gavino3o":89,"-":26,"alvinlim277":10}},{"path":"src/main/java/seedu/address/logic/parser/ParserBasic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":" * Represents a ParserBasic that is able to parse basic user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"public interface ParserBasic\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"-":14,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/ParserComplex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":" * Represents a ParserComplex that is able to parse complex user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"public interface ParserComplex\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" T parse(PersonType personType, String userInput) throws ParseException;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"vansh284":2,"-":13,"alvinlim277":2}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" * Contains utility methods used for parsing strings in the various *ParserComplex classes.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" * Parses a {@code String specialty} into a {@code Specialty}.","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" * @throws ParseException if the given {@code specialty} is invalid.","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" public static Specialty parseSpecialty(String specialty) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" requireNonNull(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":" String trimmedSpecialty \u003d specialty.trim();","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":" if (!Specialty.isValidSpecialty(trimmedSpecialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" throw new ParseException(Specialty.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"Kokseng1"},"content":" return new Specialty(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"angkyakdifp"},"content":" * Parses a {@code String medicalHistory} into a {@code MedicalHistory}.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" * @throws ParseException if the given {@code medicalHistory} is invalid.","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"angkyakdifp"},"content":" public static MedicalHistory parseMedicalHistory(String medicalHistory) throws ParseException {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"angkyakdifp"},"content":" String trimmedSpecialty \u003d medicalHistory.trim();","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" if (!Specialty.isValidSpecialty(trimmedSpecialty)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" throw new ParseException(MedicalHistory.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":" return new MedicalHistory(medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"angkyakdifp"},"content":" * Parses {@code Collection\u003cString\u003e medicalHistories} into a {@code Set\u003cMedicalHistory\u003e}.","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"angkyakdifp"},"content":" public static Set\u003cMedicalHistory\u003e parseMedicalHistories(Collection\u003cString\u003e medicalHistories) throws ParseException {","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistories);","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"angkyakdifp"},"content":" final Set\u003cMedicalHistory\u003e medHistSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"angkyakdifp"},"content":" for (String medicalhistory : medicalHistories) {","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"angkyakdifp"},"content":" medHistSet.add(parseMedicalHistory(medicalhistory));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":" return medHistSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"alvinlim277"},"content":" * Parses a {@code String location} into an {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"alvinlim277"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"alvinlim277"},"content":" public static Location parseLocation(String location) throws ParseException {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"alvinlim277"},"content":" String trimmedAddress \u003d location.trim();","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"alvinlim277"},"content":" if (!Location.isValidLocation(trimmedAddress)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"alvinlim277"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" return new Location(trimmedAddress);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":169,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":170,"author":{"gitId":"vansh284"},"content":" * Parses {@code String age} into a {@code Age}.","lastModifiedDate":"2023-10-15"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-15"},{"lineNumber":172,"author":{"gitId":"vansh284"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2023-10-15"},{"lineNumber":174,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":175,"author":{"gitId":"vansh284"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":176,"author":{"gitId":"vansh284"},"content":" requireNonNull(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":177,"author":{"gitId":"vansh284"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"vansh284"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":179,"author":{"gitId":"vansh284"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":180,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":181,"author":{"gitId":"vansh284"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2023-10-15"},{"lineNumber":182,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Kokseng1":16,"vansh284":16,"angkyakdifp":27,"-":114,"alvinlim277":10}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" /** {@code Predicate} that always evaluates to true */","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":86,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" // DoConnek Pro shows all patients on startup by default.","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":148,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class Age {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" \"Age should only contain numbers between 0 and 149 both inclusive.\";","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\b[0-9]|[1-9][0-9]|1[0-4][0-9]\\\\b\";","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public final String value;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * @param age A valid age.","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public Age(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" requireNonNull(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" value \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" return value;","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" return true;","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"vansh284":60}},{"path":"src/main/java/seedu/address/model/person/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":" * Represents a Person\u0027s location in the address book.","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidLocation(String)}","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"public class Location {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Locations can take any values, and it should not be blank\";","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" * The first character of the location must not be a whitespace,","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" * Constructs an {@code Location}.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" * @param location A valid location.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" public Location(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" requireNonNull(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" value \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" * Returns true if a given string is a valid location.","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" return value.equals(otherLocation.value);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":49,"alvinlim277":16}},{"path":"src/main/java/seedu/address/model/person/MedicalHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":" * Represents a Patient\u0027s medical history in the address book.","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"public class MedicalHistory {","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":" \"Medical History should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":" /*","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" * The first character of the Medical History must not be a whitespace,","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" public final String value;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" * @param medicalHistoryInput A valid medical history.","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" public MedicalHistory(String medicalHistoryInput) {","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" requireNonNull(medicalHistoryInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" checkArgument(isValidMedicalHistory(medicalHistoryInput), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" this.value \u003d medicalHistoryInput;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" * Returns true if a given string is a valid medical history.","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" public static boolean isValidMedicalHistory(String test) {","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" return value;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" if (!(other instanceof MedicalHistory)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" MedicalHistory otherMedicalHistory \u003d (MedicalHistory) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" return value.equals(otherMedicalHistory.value);","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"angkyakdifp"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"angkyakdifp":65}},{"path":"src/main/java/seedu/address/model/person/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"public class Patient extends Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" private final Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" private final Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" public Patient(Name name, Phone phone, Email email, Set\u003cTag\u003e tags, Age age,","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" public Age getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" public Set\u003cMedicalHistory\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" String stringToAdd \u003d \", age\u003d\" + age + \", medical history\u003d\" + medicalHistory;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" return super.equals(other)","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 age.equals(otherPatient.getAge())","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" \u0026\u0026 medicalHistory.equals(otherPatient.medicalHistory);","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":33,"angkyakdifp":20,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" * Represents a Person in the location book.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" public Person(Name name, Phone phone, Email email, Set\u003cTag\u003e tags) {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" requireAllNonNull(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" return Objects.hash(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"vansh284":1,"-":103,"alvinlim277":4}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":" * This enum encapsulates the types of people that the address book can deal with.","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"public enum PersonType {","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":" PATIENT(person -\u003e person instanceof Patient), SPECIALIST(person -\u003e person instanceof Specialist);","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" /** {@code Predicate} that evaluates to true when {@code Person} matches the {@code PersonType}*/","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" private final Predicate\u003cPerson\u003e searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" PersonType(Predicate\u003cPerson\u003e searchPredicate) {","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" this.searchPredicate \u003d searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" public Predicate\u003cPerson\u003e getSearchPredicate() {","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" return searchPredicate;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":7,"alvinlim277":15}},{"path":"src/main/java/seedu/address/model/person/Specialist.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" * Represents a Specialist in the address book.","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"public class Specialist extends Person {","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" private final Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" private final Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" * Every field must be present and not null.","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" public Specialist(Name name, Phone phone, Email email, Location location, Set\u003cTag\u003e tags, Specialty specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" String stringToAdd \u003d \", location\u003d\" + location + \", specialty\u003d\" + specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" return StringUtil.addFieldToPersonToString(stringToAdd, super.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" * Returns true if the other object is a specialist and have the same identity and data fields.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" if (!(other instanceof Specialist)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" Specialist otherSpecialist \u003d (Specialist) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" return super.equals(other)","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":" \u0026\u0026 location.equals(otherSpecialist.location)","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" \u0026\u0026 specialty.equals(otherSpecialist.specialty);","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" public Specialty getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":23,"vansh284":26,"alvinlim277":11}},{"path":"src/main/java/seedu/address/model/person/Specialty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":" * Represents a Specialist\u0027s specialty in the address book.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"public class Specialty {","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":" \"Specialty should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" /*","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" * The first character of the Specialty must not be a whitespace,","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" public final String value;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" * @param specialtyInput A valid specialty.","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" public Specialty(String specialtyInput) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" requireNonNull(specialtyInput);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" checkArgument(isValidSpecialty(specialtyInput), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" value \u003d specialtyInput;","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" * Returns true if a given string is a valid specialty.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" public static boolean isValidSpecialty(String test) {","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" return value;","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" if (!(other instanceof Specialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" Specialty otherSpecialty \u003d (Specialty) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" return value.equals(otherSpecialty.value);","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"Kokseng1"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" return value.hashCode();","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"Kokseng1"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Kokseng1":65}},{"path":"src/main/java/seedu/address/model/person/predicates/AgeContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * Tests that a {@code Patient}\u0027s {@code Age} matches any of the keywords given.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class AgeContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" public AgeContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" if (!(person instanceof Patient)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" // It is safe to type cast Person to Patient due to the guard clause above.","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getAge().value, keyword));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" if (!(other instanceof AgeContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" AgeContainsKeywordsPredicate otherAgeContainsKeywordsPredicate \u003d (AgeContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" return keywords.equals(otherAgeContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"vansh284":53}},{"path":"src/main/java/seedu/address/model/person/predicates/EmailContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Email} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class EmailContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" public EmailContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e StringUtil.wordsContainSubstringIgnoreCase(person.getEmail().value, keyword));","lastModifiedDate":"2023-10-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof EmailContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate otherEmailContainsKeywordsPredicate \u003d (EmailContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherEmailContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":11,"-":34,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/person/predicates/LocationContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" * Tests that a {@code Person}\u0027s {@code Location} matches any of the keywords given.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"public class LocationContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":" public LocationContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" if (!(person instanceof Specialist)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" // It is safe to type cast Person to Specialist due to the guard clause above.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" StringUtil.wordsContainSubstringIgnoreCase(specialist.getLocation().value, keyword));","lastModifiedDate":"2023-10-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" if (!(other instanceof LocationContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" LocationContainsKeywordsPredicate otherLocationContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" (LocationContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" return keywords.equals(otherLocationContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":10,"-":29,"alvinlim277":16}},{"path":"src/main/java/seedu/address/model/person/predicates/MedHistoryContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Patient}\u0027s {@code Medical History} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"public class MedHistoryContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" public MedHistoryContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" if (!(person instanceof Patient)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" // It is safe to type cast Person to Patient due to the guard clause above.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" Patient patient \u003d (Patient) person;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" return patient.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" .map(medicalHistory -\u003e keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e StringUtil.wordsContainSubstringIgnoreCase(medicalHistory.value, keyword)))","lastModifiedDate":"2023-10-24"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" .reduce(false, (x, y) -\u003e x || y);","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof MedHistoryContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" MedHistoryContainsKeywordsPredicate otherMedHistoryContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" (MedHistoryContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherMedHistoryContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":52,"angkyakdifp":5,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e StringUtil.wordsContainSubstringIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":2,"-":42,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/person/predicates/PhoneContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Phone} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class PhoneContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" public PhoneContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e StringUtil.wordsContainSubstringIgnoreCase(person.getPhone().value, keyword));","lastModifiedDate":"2023-10-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof PhoneContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate otherPhoneContainsKeywordsPredicate \u003d (PhoneContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherPhoneContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":14,"-":31,"alvinlim277":1}},{"path":"src/main/java/seedu/address/model/person/predicates/SpecialtyContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Specialist}\u0027s {@code Specialty} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"public class SpecialtyContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" public SpecialtyContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" if (!(person instanceof Specialist)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" // It is safe to type cast Person to Specialist due to the guard clause above.","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" Specialist specialist \u003d (Specialist) person;","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" return keywords.stream()","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2023-10-24"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" StringUtil.wordsContainSubstringIgnoreCase(specialist.getSpecialty().value, keyword));","lastModifiedDate":"2023-10-24"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof SpecialtyContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" SpecialtyContainsKeywordsPredicate otherSpecialtyContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" (SpecialtyContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherSpecialtyContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":55,"alvinlim277":2}},{"path":"src/main/java/seedu/address/model/person/predicates/TagsContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" * Tests that a {@code Person}\u0027s {@code Tags} matches any of the keywords given.","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"public class TagsContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" public TagsContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" public boolean test(Person person) {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" return person.getTags()","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" .stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" .map(tag -\u003e keywords","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" .stream()","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(tag.tagName, keyword)))","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" .reduce(false, (x, y) -\u003e x || y);","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" if (!(other instanceof TagsContainsKeywordsPredicate)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate otherTagsContainsKeywordsPredicate \u003d (TagsContainsKeywordsPredicate) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" return keywords.equals(otherTagsContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"Gavino3o":50}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"friends\"), new Age(\"24\"), getMedicalHistorySet(\"Diabetes\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"colleagues\", \"friends\"), new Specialty(\"Physiotherapist\")),","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"neighbours\"), new Age(\"114\"), getMedicalHistorySet(\"Anemia\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" new Patient(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" getTagSet(\"family\"), new Age(\"9\"), getMedicalHistorySet(\"Osteoporosis\")),","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"classmates\"), new Specialty(\"Orthopaedic\")),","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" new Specialist(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" new Location(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" getTagSet(\"colleagues\"), new Specialty(\"Dermatology\"))","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" * Returns a medical history set containing the list of strings given.","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" public static Set\u003cMedicalHistory\u003e getMedicalHistorySet(String... strings) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" .map(MedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kokseng1":6,"vansh284":7,"angkyakdifp":12,"-":41,"alvinlim277":4}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMedicalHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":" * Jackson-friendly version of {@link MedicalHistory}.","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"class JsonAdaptedMedicalHistory {","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" private final String medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" * Constructs a {@code JsonAdaptedMedicalHistory} with the given {@code medicalHistory}.","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" @JsonCreator","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" public JsonAdaptedMedicalHistory(String medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" * Converts a given {@code MedicalHistory} into this class for Jackson use.","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" public JsonAdaptedMedicalHistory(MedicalHistory source) {","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d source.value;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" @JsonValue","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public String getTagName() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" * Converts this Jackson-friendly adapted medical history object into the model\u0027s {@code MedicalHistory} object.","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" *","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted medical history.","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" public MedicalHistory toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" if (!MedicalHistory.isValidMedicalHistory(medicalHistory)) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" throw new IllegalValueException(MedicalHistory.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" return new MedicalHistory(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"angkyakdifp":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPatient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"class JsonAdaptedPatient extends JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" private final String age;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" private final List\u003cJsonAdaptedMedicalHistory\u003e medicalHistory \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" @JsonCreator","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public JsonAdaptedPatient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"age\") String age,","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" @JsonProperty(\"MedicalHistory\") List\u003cJsonAdaptedMedicalHistory\u003e medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" this.age \u003d age;","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistory !\u003d null) {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory.addAll(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public JsonAdaptedPatient(Patient source) {","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" super(source);","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" this.age \u003d source.getAge().value;","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory.addAll(source.getMedicalHistory().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" public List\u003cJsonAdaptedMedicalHistory\u003e getMedicalHistory() throws IllegalValueException {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public String getAge() throws IllegalValueException {","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" Age.class.getSimpleName()));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedTag tag : getTags()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" final List\u003cMedicalHistory\u003e patientMedicalHistory \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" for (JsonAdaptedMedicalHistory medicalHistory: getMedicalHistory()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" patientMedicalHistory.add(medicalHistory.toModelType());","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" final Name modelName \u003d new Name(getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" final Phone modelPhone \u003d new Phone(getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" final Email modelEmail \u003d new Email(getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" final Age age \u003d new Age(getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" final Set\u003cMedicalHistory\u003e medicalHistory \u003d new HashSet\u003c\u003e(patientMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" return new Patient(modelName, modelPhone, modelEmail, modelTags, age, medicalHistory);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":53,"angkyakdifp":23,"alvinlim277":5}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"abstract class JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" public abstract Person toModelType() throws IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public String getName() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" return name;","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" public String getPhone() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"vansh284"},"content":" return phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" public String getEmail() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" return email;","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" public List\u003cJsonAdaptedTag\u003e getTags() {","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" return tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":13,"-":83,"alvinlim277":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSpecialist.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"class JsonAdaptedSpecialist extends JsonAdaptedPerson {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" private final String specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":" private final String location;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" public JsonAdaptedSpecialist(Specialist source) {","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" super(source);","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d source.getSpecialty().value;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" location \u003d source.getLocation().value;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" public JsonAdaptedSpecialist(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"location\") String location,","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" @JsonProperty(\"Specialty\") String specialty) {","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" super(name, phone, email, tags);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d location;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public String getLocation() throws IllegalValueException {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" if (location \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" Location.class.getSimpleName()));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" if (!Location.isValidLocation(location)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" public String getSpecialty() throws IllegalValueException {","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" if (specialty \u003d\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" Specialty.class.getSimpleName()));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" if (!Specialty.isValidSpecialty(specialty)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" throw new IllegalValueException(Specialty.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" public Specialist toModelType() throws IllegalValueException {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedTag tag : getTags()) {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" final Name modelName \u003d new Name(getName());","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" final Phone modelPhone \u003d new Phone(getPhone());","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" final Email modelEmail \u003d new Email(getEmail());","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" final Location modelLocation \u003d new Location(getLocation());","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Kokseng1"},"content":" final Specialty modelSpecialty \u003d new Specialty(getSpecialty());","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(modelName, modelPhone, modelEmail, modelLocation, modelTags, modelSpecialty);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":27,"vansh284":28,"alvinlim277":19}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" private final List\u003cJsonAdaptedPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" private final List\u003cJsonAdaptedSpecialist\u003e specialists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"patients\") List\u003cJsonAdaptedPatient\u003e patients,","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" @JsonProperty(\"specialists\") List\u003cJsonAdaptedSpecialist\u003e specialists) {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" this.patients.addAll(patients);","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" this.specialists.addAll(specialists);","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" patients.addAll(source.getPersonList().stream()","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" .filter(p -\u003e p instanceof Patient)","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" .map(p -\u003e new JsonAdaptedPatient((Patient) p))","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" specialists.addAll(source.getPersonList().stream()","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" .filter(p -\u003e p instanceof Specialist)","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" .map(p -\u003e new JsonAdaptedSpecialist((Specialist) p))","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : patients) {","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : specialists) {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":24,"-":55}},{"path":"src/main/java/seedu/address/ui/PatientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Patient}.","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientCard extends PersonCard {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" private static final String card \u003d \"PatientListCard.fxml\";","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" private Label age;","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" private FlowPane medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" * Creates a {@code PatientCard} with the given {@code patient} and index to display.","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public PatientCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" super(patient, displayedIndex, card);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" age.setText(patient.getAge().value);","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" patient.getMedicalHistory().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" .sorted(Comparator.comparing(medicalHistory -\u003e medicalHistory.value))","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" .forEach(medicalHistory -\u003e this.medicalHistory.getChildren().add(new Label(medicalHistory.value)));","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":20,"angkyakdifp":12}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"public abstract class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" private Label personType;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" public PersonCard(Person person, int displayedIndex, String fxml) {","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" super(fxml);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"vansh284":6,"-":50}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" if (person instanceof Patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" setGraphic(new PatientCard((Patient) person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" } else {","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" setGraphic(new SpecialistCard((Specialist) person, getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"vansh284":7,"-":48}},{"path":"src/main/java/seedu/address/ui/SpecialistCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * A UI component that displays information of a {@code Specialist}.","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class SpecialistCard extends PersonCard {","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" private static final String card \u003d \"SpecialistListCard.fxml\";","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" private Label specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" // Label is named as such due to \u0027location\u0027 being a reserved keyword.","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" private Label spLocation;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" * Creates a {@code SpecialistCard} with the given {@code specialist} and index to display.","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public SpecialistCard(Specialist specialist, int displayedIndex) {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" super(specialist, displayedIndex, card);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" spLocation.setText(specialist.getLocation().value);","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" specialty.setText(specialist.getSpecialty().value);","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":6,"vansh284":17,"alvinlim277":5}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":354,"author":{"gitId":"angkyakdifp"},"content":"#medicalHistory {","lastModifiedDate":"2023-10-20"},{"lineNumber":355,"author":{"gitId":"angkyakdifp"},"content":" -fx-hgap: 7;","lastModifiedDate":"2023-10-20"},{"lineNumber":356,"author":{"gitId":"angkyakdifp"},"content":" -fx-vgap: 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":357,"author":{"gitId":"angkyakdifp"},"content":" -fx-width: 100%;","lastModifiedDate":"2023-10-20"},{"lineNumber":358,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-20"},{"lineNumber":359,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":360,"author":{"gitId":"angkyakdifp"},"content":"#medicalHistory .label {","lastModifiedDate":"2023-10-20"},{"lineNumber":361,"author":{"gitId":"angkyakdifp"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-20"},{"lineNumber":362,"author":{"gitId":"angkyakdifp"},"content":" -fx-background-color: #0a6a0c;","lastModifiedDate":"2023-10-20"},{"lineNumber":363,"author":{"gitId":"angkyakdifp"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-20"},{"lineNumber":364,"author":{"gitId":"angkyakdifp"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":365,"author":{"gitId":"angkyakdifp"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-20"},{"lineNumber":366,"author":{"gitId":"angkyakdifp"},"content":" -fx-font-size: 13;","lastModifiedDate":"2023-10-20"},{"lineNumber":367,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-20"}],"authorContributionMap":{"angkyakdifp":15,"-":352}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":" title\u003d\"DoConnek Pro\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":59,"alvinlim277":1}},{"path":"src/main/resources/view/PatientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"personType\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: aqua\" text\u003d\"Patient\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" \u003cFlowPane fx:id\u003d\"medicalHistory\"/\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"vansh284":2,"angkyakdifp":1,"-":35}},{"path":"src/main/resources/view/SpecialistListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"personType\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: greenyellow\" text\u003d\"Specialist\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" \u003cLabel fx:id\u003d\"spLocation\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" \u003cLabel fx:id\u003d\"specialty\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$specialty\" /\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":36,"alvinlim277":1}},{"path":"src/test/java/seedu/address/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2023-10-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", () -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":66,"author":{"gitId":"alvinlim277"},"content":" StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2023-10-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"alvinlim277"},"content":" //---------------- Tests for wordsContainSubstringIgnoreCase --------------------------------------","lastModifiedDate":"2023-10-23"},{"lineNumber":128,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":129,"author":{"gitId":"alvinlim277"},"content":" /*","lastModifiedDate":"2023-10-23"},{"lineNumber":130,"author":{"gitId":"alvinlim277"},"content":" * Invalid equivalence partitions for word: null, empty","lastModifiedDate":"2023-10-23"},{"lineNumber":131,"author":{"gitId":"alvinlim277"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2023-10-23"},{"lineNumber":132,"author":{"gitId":"alvinlim277"},"content":" * The three test cases below test one invalid input at a time.","lastModifiedDate":"2023-10-23"},{"lineNumber":133,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":134,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":135,"author":{"gitId":"alvinlim277"},"content":" public void wordsContainSubstringIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":136,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":137,"author":{"gitId":"alvinlim277"},"content":" StringUtil.wordsContainSubstringIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2023-10-23"},{"lineNumber":138,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":139,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":140,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":141,"author":{"gitId":"alvinlim277"},"content":" public void wordsContainSubstringIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":142,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalArgumentException.class, \"Substring parameter cannot be empty\", () -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":143,"author":{"gitId":"alvinlim277"},"content":" StringUtil.wordsContainSubstringIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2023-10-23"},{"lineNumber":144,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":145,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":146,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":147,"author":{"gitId":"alvinlim277"},"content":" public void wordsContainSubstringIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2023-10-23"},{"lineNumber":148,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2023-10-23"},{"lineNumber":149,"author":{"gitId":"alvinlim277"},"content":" StringUtil.wordsContainSubstringIgnoreCase(null, \"abc\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":150,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":151,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":152,"author":{"gitId":"alvinlim277"},"content":" /*","lastModifiedDate":"2023-10-23"},{"lineNumber":153,"author":{"gitId":"alvinlim277"},"content":" * Valid equivalence partitions for substring:","lastModifiedDate":"2023-10-23"},{"lineNumber":154,"author":{"gitId":"alvinlim277"},"content":" * - any substring","lastModifiedDate":"2023-10-23"},{"lineNumber":155,"author":{"gitId":"alvinlim277"},"content":" * - substrings containing symbols/numbers","lastModifiedDate":"2023-10-23"},{"lineNumber":156,"author":{"gitId":"alvinlim277"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2023-10-23"},{"lineNumber":157,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":158,"author":{"gitId":"alvinlim277"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2023-10-23"},{"lineNumber":159,"author":{"gitId":"alvinlim277"},"content":" * - empty string","lastModifiedDate":"2023-10-23"},{"lineNumber":160,"author":{"gitId":"alvinlim277"},"content":" * - one word","lastModifiedDate":"2023-10-23"},{"lineNumber":161,"author":{"gitId":"alvinlim277"},"content":" * - multiple words","lastModifiedDate":"2023-10-23"},{"lineNumber":162,"author":{"gitId":"alvinlim277"},"content":" * - sentence with extra spaces","lastModifiedDate":"2023-10-23"},{"lineNumber":163,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":164,"author":{"gitId":"alvinlim277"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2023-10-23"},{"lineNumber":165,"author":{"gitId":"alvinlim277"},"content":" * - matches first word in sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":166,"author":{"gitId":"alvinlim277"},"content":" * - last word in sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":167,"author":{"gitId":"alvinlim277"},"content":" * - middle word in sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":168,"author":{"gitId":"alvinlim277"},"content":" * - matches multiple words","lastModifiedDate":"2023-10-23"},{"lineNumber":169,"author":{"gitId":"alvinlim277"},"content":" * - matches part of a word","lastModifiedDate":"2023-10-23"},{"lineNumber":170,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":171,"author":{"gitId":"alvinlim277"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2023-10-23"},{"lineNumber":172,"author":{"gitId":"alvinlim277"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2023-10-23"},{"lineNumber":173,"author":{"gitId":"alvinlim277"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2023-10-23"},{"lineNumber":174,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-23"},{"lineNumber":175,"author":{"gitId":"alvinlim277"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2023-10-23"},{"lineNumber":176,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-23"},{"lineNumber":177,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":178,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-23"},{"lineNumber":179,"author":{"gitId":"alvinlim277"},"content":" public void wordsContainSubstringIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2023-10-23"},{"lineNumber":180,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":181,"author":{"gitId":"alvinlim277"},"content":" // Empty sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":182,"author":{"gitId":"alvinlim277"},"content":" assertFalse(StringUtil.wordsContainSubstringIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2023-10-23"},{"lineNumber":183,"author":{"gitId":"alvinlim277"},"content":" assertFalse(StringUtil.wordsContainSubstringIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":184,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":185,"author":{"gitId":"alvinlim277"},"content":" // Matches a partial word in the sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":186,"author":{"gitId":"alvinlim277"},"content":" // Sentence word bigger than query word","lastModifiedDate":"2023-10-23"},{"lineNumber":187,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"aaa bbb ccc\", \"bb\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":188,"author":{"gitId":"alvinlim277"},"content":" // Query word bigger than sentence word","lastModifiedDate":"2023-10-23"},{"lineNumber":189,"author":{"gitId":"alvinlim277"},"content":" assertFalse(StringUtil.wordsContainSubstringIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":190,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":191,"author":{"gitId":"alvinlim277"},"content":" // Matches partial word in the sentence, different upper/lower case letters","lastModifiedDate":"2023-10-23"},{"lineNumber":192,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"aaa bBb ccc\", \"Bb\")); // First word (boundary case)","lastModifiedDate":"2023-10-23"},{"lineNumber":193,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"aaa bBb ccc@1\", \"C@1\")); // Last word (boundary case)","lastModifiedDate":"2023-10-23"},{"lineNumber":194,"author":{"gitId":"alvinlim277"},"content":" // Sentence has extra spaces","lastModifiedDate":"2023-10-23"},{"lineNumber":195,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\" AAA bBb ccc \", \"aa\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":196,"author":{"gitId":"alvinlim277"},"content":" // Only one word in sentence (boundary case)","lastModifiedDate":"2023-10-23"},{"lineNumber":197,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"Aaa\", \"aa\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":198,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"aaa bbb ccc\", \" cc \")); // Leading/trailing spaces","lastModifiedDate":"2023-10-23"},{"lineNumber":199,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":200,"author":{"gitId":"alvinlim277"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2023-10-23"},{"lineNumber":201,"author":{"gitId":"alvinlim277"},"content":" assertTrue(StringUtil.wordsContainSubstringIgnoreCase(\"AAA bBb ccc bbb\", \"bB\"));","lastModifiedDate":"2023-10-23"},{"lineNumber":202,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-23"},{"lineNumber":203,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":218,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":140,"alvinlim277":81}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.parser.CliSyntax;","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(listCommand, ListCommand.PATIENT_MESSAGE_SUCCESS, model);","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + PERSON_TYPE_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-06"},{"lineNumber":172,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" Person expectedPerson \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"vansh284":7,"angkyakdifp":1,"-":168,"alvinlim277":2}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" public void execute_newPatient_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.PATIENT.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" public void execute_newSpecialist_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" Person validPerson \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"vansh284":2,"-":51,"alvinlim277":10}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" Person validPerson \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" Person alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" Person bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"alvinlim277"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"alvinlim277"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"alvinlim277"},"content":" // Allow this method to be called as AddCommand::execute now affects the filtered list.","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"alvinlim277"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"vansh284":5,"-":199,"alvinlim277":6}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_LOCATION_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_LOCATION_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" public static final String VALID_AGE_THIRTY \u003d \"30\";","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALID_MEDICAL_HISTORY_OSTEOPOROSIS \u003d \"Osteoporosis\";","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" public static final String VALID_MEDICAL_HISTORY_ANEMIA \u003d \"Anemia\";","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" public static final String VALID_SPECIALTY_DERMATOLOGY \u003d \"Dermatology\";","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" public static final String VALID_SPECIALTY_ORTHOPAEDIC \u003d \"orthopaedic\";","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" public static final String PERSON_TYPE_AMY \u003d \" \" + PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" public static final String PERSON_TYPE_BOB \u003d \" \" + SPECIALIST_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" public static final String LOCATION_DESC_AMY \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" public static final String LOCATION_DESC_BOB \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" public static final String MEDICAL_HISTORY_DESC_AMY \u003d \" \" + PREFIX_MEDICALHISTORY","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" + VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" public static final String SPECIALTY_DESC_BOB \u003d \" \" + PREFIX_SPECIALTY + VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"alvinlim277"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION; // empty string not allowed for addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" public static final String INVALID_SPECIALTY_DESC \u003d \" \" + PREFIX_SPECIALTY; // empty string invalid for specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" public static final String INVALID_AGE_DESC \u003d \" \" + PREFIX_AGE + \"67Y\"; // \u0027Y\u0027 not allowed in ages","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" public static final String INVALID_MEDICAL_HISTORY_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" + PREFIX_MEDICALHISTORY; // empty string invalid for medical history","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" public static final EditCommand.EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" public static final EditCommand.EditSpecialistDescriptor DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"alvinlim277"},"content":" DESC_AMY \u003d (EditCommand.EditPatientDescriptor) new EditPatientDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" .withMedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"alvinlim277"},"content":" DESC_BOB \u003d (EditCommand.EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_DERMATOLOGY)","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kokseng1":6,"vansh284":10,"angkyakdifp":8,"Gavino3o":1,"-":114,"alvinlim277":16}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"alvinlim277"},"content":" + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"vansh284":1,"-":119,"alvinlim277":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPatient);","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" model.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" PersonBuilder personInList \u003d new SpecialistBuilder((Specialist) lastPerson);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(PersonType.SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"alvinlim277"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPatientDescriptor());","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":" Person editedPerson \u003d new PatientBuilder((Patient) personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"alvinlim277"},"content":" showPersonAtIndex(expectedModel, INDEX_FIRST_PERSON);","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder((Patient) firstPerson).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder((Patient) personInList).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"alvinlim277"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPatientDescriptor((EditPatientDescriptor) DESC_AMY);","lastModifiedDate":"2023-10-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2023-10-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"vansh284":13,"-":166,"alvinlim277":13}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptorBuilder(DESC_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" .withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" // different medical history -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" .withMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" editedAmy \u003d (EditPatientDescriptor) new EditPatientDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"alvinlim277"},"content":" + editPatientDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getTags().orElse(null) + \", age\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" + editPatientDescriptor.getAge().orElse(null) + \", medical history\u003d\"","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" + editPatientDescriptor.getMedicalHistory().orElse(null) + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, editPatientDescriptor.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"vansh284":19,"angkyakdifp":1,"-":50,"alvinlim277":7}},{"path":"src/test/java/seedu/address/logic/commands/EditSpecialistDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"public class EditSpecialistDescriptorTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor descriptorWithSameValues \u003d new EditSpecialistDescriptorBuilder(DESC_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" assertTrue(DESC_BOB.equals(descriptorWithSameValues));","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" assertTrue(DESC_BOB.equals(DESC_BOB));","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(null));","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(5));","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(DESC_AMY));","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" // different name -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" // different email -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" // different location -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" editedBob \u003d new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_AMY).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" // different specialty -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":" editedBob \u003d new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_ORTHOPAEDIC).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" editedBob \u003d (EditSpecialistDescriptor) new EditSpecialistDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" assertFalse(DESC_BOB.equals(editedBob));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" String expected \u003d EditSpecialistDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" + editSpecialistDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" + editSpecialistDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getTags().orElse(null) + \", location\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":" + editSpecialistDescriptor.getLocation().orElse(null) + \", specialty\u003d\"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"Kokseng1"},"content":" + editSpecialistDescriptor.getSpecialty().orElse(null) + \"}\";","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, editSpecialistDescriptor.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":68,"alvinlim277":14}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" private static final String WHITESPACE_REGEX \u003d \"\\\\s+\";","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" //TODO: Change equals method, remember to do the tags.","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" public void findCommandEquals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap1 \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap2 \u003d setupSpecialistFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand1 \u003d new FindCommand(findPredicateMap1, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand2 \u003d new FindCommand(findPredicateMap2, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findCommand1.equals(findCommand1));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(findPredicateMap1, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findCommand1.equals(findFirstCommandCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" // different person type -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findCommand1.equals(findCommand2));","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" public void findPredicateMapEquals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap smallerFindPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" smallerFindPredicateMap.put(PREFIX_NAME,","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Lopez\")));","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findPredicateMap.equals(findPredicateMap));","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" // same values -\u003e return true;","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMapCopy \u003d setupPatientFindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" assertTrue(findPredicateMap.equals(findPredicateMapCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" // different size -\u003e short circuits and returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" assertFalse(findPredicateMap.equals(smallerFindPredicateMap));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPatientFindPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":" // Find Predicates for a Patient","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" NameContainsKeywordsPredicate nameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Fabio\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate phoneContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" new PhoneContainsKeywordsPredicate(Collections.singletonList(\"89934991\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate emailContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" new EmailContainsKeywordsPredicate(Collections.singletonList(\"patient@gmail.com\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" AgeContainsKeywordsPredicate ageContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" new AgeContainsKeywordsPredicate(Arrays.asList(\"35\", \"40\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate tagsContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(\"tag1\", \"tag2\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" MedHistoryContainsKeywordsPredicate medHistoryContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Bronchitis\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, nameContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, phoneContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, emailContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, ageContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, tagsContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, medHistoryContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupSpecialistFindPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" // Find Predicates for a Specialist","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" NameContainsKeywordsPredicate nameContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Selena\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" PhoneContainsKeywordsPredicate phoneContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" new PhoneContainsKeywordsPredicate(Collections.singletonList(\"90237753\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"Gavino3o"},"content":" EmailContainsKeywordsPredicate emailContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" new EmailContainsKeywordsPredicate(Collections.singletonList(\"specialist@gmail.com\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"Gavino3o"},"content":" LocationContainsKeywordsPredicate locationContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"Gavino3o"},"content":" new LocationContainsKeywordsPredicate(Collections.singletonList(\"311, Clementi Ave 2, #02-25\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"Gavino3o"},"content":" TagsContainsKeywordsPredicate tagsContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"Gavino3o"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(\"tag2\", \"tag3\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"Gavino3o"},"content":" SpecialtyContainsKeywordsPredicate specialtyContainsKeywordsPredicate \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"Gavino3o"},"content":" new SpecialtyContainsKeywordsPredicate(Arrays.asList(\"Surgery\", \"Haematology\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, nameContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, phoneContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, emailContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, locationContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, tagsContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, specialtyContainsKeywordsPredicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":154,"author":{"gitId":"Gavino3o"},"content":" public void execute_zeroKeywords_allPatientsListed() {","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":156,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonZeroKeywordsPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, prepareAgePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, prepareMedHistPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":159,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":167,"author":{"gitId":"Gavino3o"},"content":" public void execute_zeroKeywords_allSpecialistsListed() {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d setupPersonZeroKeywordsPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":170,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, prepareLocationPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":171,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"Gavino3o"},"content":" public void execute_multipleSpecialtyKeywordsOnly_multipleSpecialistFound() {","lastModifiedDate":"2023-10-17"},{"lineNumber":181,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":183,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\"Orthopaedic Physiotherapy\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":184,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"Gavino3o"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":188,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Arrays.asList(FIONA, GEORGE), model.getFilteredPersonList());","lastModifiedDate":"2023-10-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"Gavino3o"},"content":" public void execute_multipleNameKeywordsOnly_multiplePatientsFound() {","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"Gavino3o"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":195,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\"Alice Kunz Daniel\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":196,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d combinePersonPredicates(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":197,"author":{"gitId":"Gavino3o"},"content":" FindCommand command \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":198,"author":{"gitId":"Gavino3o"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2023-10-17"},{"lineNumber":199,"author":{"gitId":"Gavino3o"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"Gavino3o"},"content":" assertEquals(Arrays.asList(ALICE, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"Gavino3o"},"content":" public void nameContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":206,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":207,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":208,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":209,"author":{"gitId":"vansh284"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"Gavino3o"},"content":" public void phoneContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, preparePhonePredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":218,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":219,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":223,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"Gavino3o"},"content":" public void emailContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":226,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, prepareEmailPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":227,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":228,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":229,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"Gavino3o"},"content":" public void tagsContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, prepareTagsPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":237,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":238,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":239,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"Gavino3o"},"content":" public void medHistContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":246,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, prepareMedHistPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":247,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":248,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":249,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.PATIENT + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"Gavino3o"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":251,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":254,"author":{"gitId":"Gavino3o"},"content":" public void specialtyContainsKeywordsPredicateToStringMethod() {","lastModifiedDate":"2023-10-16"},{"lineNumber":255,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":256,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, prepareSpecialtyPredicate(\"keyword\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":257,"author":{"gitId":"Gavino3o"},"content":" FindCommand findCommand \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":258,"author":{"gitId":"Gavino3o"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + findPredicateMap","lastModifiedDate":"2023-10-17"},{"lineNumber":259,"author":{"gitId":"Gavino3o"},"content":" + \", personType\u003d\" + PersonType.SPECIALIST + \"}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":266,"author":{"gitId":"Gavino3o"},"content":" private NameContainsKeywordsPredicate prepareNamePredicate(String userInput) {","lastModifiedDate":"2023-10-14"},{"lineNumber":267,"author":{"gitId":"Gavino3o"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code PhoneContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"Gavino3o"},"content":" private PhoneContainsKeywordsPredicate preparePhonePredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"Gavino3o"},"content":" return new PhoneContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code EmailContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"Gavino3o"},"content":" private EmailContainsKeywordsPredicate prepareEmailPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"Gavino3o"},"content":" return new EmailContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":284,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code TagsContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"Gavino3o"},"content":" private TagsContainsKeywordsPredicate prepareTagsPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"Gavino3o"},"content":" return new TagsContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code MedHistoryContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":293,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":294,"author":{"gitId":"Gavino3o"},"content":" private MedHistoryContainsKeywordsPredicate prepareMedHistPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":295,"author":{"gitId":"Gavino3o"},"content":" return new MedHistoryContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":296,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":297,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":298,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":299,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":300,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code SpecialtyContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-16"},{"lineNumber":301,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":302,"author":{"gitId":"Gavino3o"},"content":" private SpecialtyContainsKeywordsPredicate prepareSpecialtyPredicate(String userInput) {","lastModifiedDate":"2023-10-16"},{"lineNumber":303,"author":{"gitId":"Gavino3o"},"content":" return new SpecialtyContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-16"},{"lineNumber":304,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":305,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":306,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":307,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code AgeContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-17"},{"lineNumber":308,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":309,"author":{"gitId":"Gavino3o"},"content":" private AgeContainsKeywordsPredicate prepareAgePredicate(String userInput) {","lastModifiedDate":"2023-10-17"},{"lineNumber":310,"author":{"gitId":"Gavino3o"},"content":" return new AgeContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-17"},{"lineNumber":311,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":312,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":313,"author":{"gitId":"Gavino3o"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":314,"author":{"gitId":"Gavino3o"},"content":" * Parses {@code userInput} into a {@code LocationContainsKeywordsPredicate}.","lastModifiedDate":"2023-10-17"},{"lineNumber":315,"author":{"gitId":"Gavino3o"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":316,"author":{"gitId":"Gavino3o"},"content":" private LocationContainsKeywordsPredicate prepareLocationPredicate(String userInput) {","lastModifiedDate":"2023-10-17"},{"lineNumber":317,"author":{"gitId":"Gavino3o"},"content":" return new LocationContainsKeywordsPredicate(Arrays.asList(userInput.split(WHITESPACE_REGEX)));","lastModifiedDate":"2023-10-17"},{"lineNumber":318,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":319,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":320,"author":{"gitId":"Gavino3o"},"content":" private Predicate\u003cPerson\u003e combinePersonPredicates(FindPredicateMap findPredicateMap, PersonType personType) {","lastModifiedDate":"2023-10-17"},{"lineNumber":321,"author":{"gitId":"Gavino3o"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e findPredicateMap.getAllPredicates().stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":322,"author":{"gitId":"Gavino3o"},"content":" .map(pred -\u003e pred.test(person))","lastModifiedDate":"2023-10-17"},{"lineNumber":323,"author":{"gitId":"Gavino3o"},"content":" .reduce(true, (x, y) -\u003e x \u0026\u0026 y);","lastModifiedDate":"2023-10-16"},{"lineNumber":324,"author":{"gitId":"Gavino3o"},"content":" return predicate.and(personType.getSearchPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":325,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":326,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":327,"author":{"gitId":"Gavino3o"},"content":" private FindPredicateMap setupPersonZeroKeywordsPredicateMap() {","lastModifiedDate":"2023-10-17"},{"lineNumber":328,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":329,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, prepareNamePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, preparePhonePredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":331,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, prepareEmailPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":332,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, prepareTagsPredicate(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":333,"author":{"gitId":"Gavino3o"},"content":" return findPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":334,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":258,"vansh284":2,"-":75}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.model.person.PersonType.PATIENT;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.model.person.PersonType.SPECIALIST;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" public void executePatient_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(PATIENT), model, ListCommand.PATIENT_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" public void executeSpecialist_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" expectedModel.updateFilteredPersonList(SPECIALIST.getSearchPredicate());","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(SPECIALIST), model, ListCommand.SPECIALIST_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" public void executePatient_listIsFiltered_showsEverything() {","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" assertCommandSuccess(new ListCommand(PATIENT), model, ListCommand.PATIENT_MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":35,"alvinlim277":12}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MEDICAL_HISTORY_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SPECIALTY_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public void parse_allFieldsPresentPatient_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" Person expectedPatient \u003d new PatientBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + TAG_DESC_FRIEND + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" new AddCommand(expectedPatient), PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" // multiple tags - all accepted","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" Person expectedPatientMultipleTags \u003d new PatientBuilder(AMY).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"alvinlim277"},"content":" NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedPatientMultipleTags), PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" public void parse_allFieldsPresentSpecialist_success() {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" Person expectedSpecialist \u003d new SpecialistBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":" // whitespace only preamble","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + LOCATION_DESC_BOB + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" new AddCommand(expectedSpecialist),","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"Kokseng1"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" Person expectedSpecialistMultipleTags \u003d new SpecialistBuilder(BOB).withTags(VALID_TAG_FRIEND,","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":" VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":97,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"angkyakdifp"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedSpecialistMultipleTags), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"Kokseng1"},"content":" String validExpectedSpecialistString \u003d validExpectedPersonString + SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" String validExpectedPatientString \u003d validExpectedPersonString + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":114,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, PHONE_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":118,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, EMAIL_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, LOCATION_DESC_AMY + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"vansh284"},"content":" // multiple ages","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, AGE_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"angkyakdifp"},"content":" validExpectedSpecialistString + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"alvinlim277"},"content":" + NAME_DESC_AMY + LOCATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"angkyakdifp"},"content":" PREFIX_EMAIL, PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_EMAIL_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_PHONE_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_LOCATION_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"vansh284"},"content":" // invalid specialty","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, INVALID_SPECIALTY_DESC + validExpectedSpecialistString,","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SPECIALTY), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, INVALID_AGE_DESC + validExpectedPatientString,","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_NAME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":169,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":177,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_LOCATION_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":183,"author":{"gitId":"Kokseng1"},"content":" // invalid specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":184,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, validExpectedSpecialistString + INVALID_SPECIALTY_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":185,"author":{"gitId":"Kokseng1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SPECIALTY), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":186,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":187,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, validExpectedPatientString + INVALID_AGE_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"vansh284"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"vansh284"},"content":" Person expectedPerson \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":196,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-13"},{"lineNumber":197,"author":{"gitId":"alvinlim277"},"content":" + AGE_DESC_AMY + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"vansh284"},"content":" new AddCommand(expectedPerson), PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"Kokseng1"},"content":" String expectedMessageSpecialist \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"Kokseng1"},"content":" String expectedMessagePatient \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"Kokseng1"},"content":" AddCommand.MESSAGE_USAGE_PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":211,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":215,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":223,"author":{"gitId":"Kokseng1"},"content":" + VALID_LOCATION_BOB + SPECIALTY_DESC_BOB, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":224,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"vansh284"},"content":" // missing specialty prefix","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_BOB + VALID_SPECIALTY_DERMATOLOGY, expectedMessageSpecialist, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":228,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"vansh284"},"content":" // missing age prefix","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, VALID_AGE_THIRTY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"Kokseng1"},"content":" + LOCATION_DESC_AMY, expectedMessagePatient, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":234,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":235,"author":{"gitId":"Kokseng1"},"content":" + VALID_LOCATION_BOB, expectedMessagePatient, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":242,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"Kokseng1"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":247,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"Kokseng1"},"content":" Phone.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":251,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-13"},{"lineNumber":252,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"Kokseng1"},"content":" Email.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":256,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":257,"author":{"gitId":"alvinlim277"},"content":" + INVALID_LOCATION_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"alvinlim277"},"content":" Location.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":261,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":262,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"Kokseng1"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-10"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"vansh284"},"content":" // invalid specialty","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-10-16"},{"lineNumber":267,"author":{"gitId":"alvinlim277"},"content":" + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + INVALID_SPECIALTY_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":268,"author":{"gitId":"vansh284"},"content":" Specialty.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + INVALID_AGE_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"vansh284"},"content":" + MEDICAL_HISTORY_DESC_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"vansh284"},"content":" Age.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"vansh284"},"content":" // invalid age","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"vansh284"},"content":" assertParseComplexFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + AGE_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"vansh284"},"content":" + INVALID_MEDICAL_HISTORY_DESC,","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"vansh284"},"content":" MedicalHistory.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":284,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + INVALID_LOCATION_DESC + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"vansh284"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":288,"author":{"gitId":"angkyakdifp"},"content":" assertParseComplexFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2023-10-13"},{"lineNumber":289,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_BOB + LOCATION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"angkyakdifp"},"content":" + SPECIALTY_DESC_BOB,","lastModifiedDate":"2023-10-13"},{"lineNumber":291,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE_SPECIALIST),","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"angkyakdifp"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kokseng1":25,"vansh284":70,"angkyakdifp":27,"-":125,"alvinlim277":47}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.TagsContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public void parseCommand_add_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":" public void parseCommand_add_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" Specialist specialist \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(SpecialistUtil.getAddCommand(specialist));","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" assertEquals(new AddCommand(specialist), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" public void parseCommand_delete_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public void parseCommand_delete_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" public void parseCommand_edit_patient() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":" + \" \" + CliSyntax.PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PatientUtil.getEditPatientDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" public void parseCommand_edit_specialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"vansh284"},"content":" Specialist person \u003d new SpecialistBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder(person).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"Kokseng1"},"content":" + \" \" + CliSyntax.SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"vansh284"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" + \" \" + SpecialistUtil.getEditSpecialistDescriptorDetails(descriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" public void parseCommand_find_patientByName() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" assertEquals(findPredicateMap, command.getPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" assertEquals(PersonType.PATIENT, command.getPersonType());","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" public void parseCommand_find_specialistByNameAndTags() throws Exception {","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e nameKeywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e tagKeywords \u003d Arrays.asList(\"tag1\", \"tag2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"vansh284"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.SPECIALIST_TAG + \" \"","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_NAME","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" + nameKeywords.stream().collect(Collectors.joining(\" \")) + \" \"","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" + PREFIX_TAG","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" + tagKeywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(nameKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_TAG, new TagsContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" assertEquals(findPredicateMap, command.getPredicate());","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" assertEquals(PersonType.SPECIALIST, command.getPersonType());","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"vansh284"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2023-10-06"},{"lineNumber":143,"author":{"gitId":"vansh284"},"content":" ListCommand.COMMAND_WORD + \" \" + CliSyntax.PATIENT_TAG) instanceof ListCommand);","lastModifiedDate":"2023-10-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"angkyakdifp"},"content":" HelpCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, ()","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"angkyakdifp"},"content":" -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kokseng1":1,"Gavino3o":24,"vansh284":49,"angkyakdifp":6,"-":75,"alvinlim277":2}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseComplexSuccess(ParserComplex\u003c? extends Command\u003e parserComplex, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" Command expectedCommand, PersonType personType) {","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" Command command \u003d parserComplex.parse(personType, userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseComplexFailure(ParserComplex\u003c? extends Command\u003e parserComplex,","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" String userInput, String expectedMessage,","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" PersonType personType) {","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" parserComplex.parse(personType, userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseBasicSuccess(ParserBasic\u003c? extends Command\u003e parserBasic, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" Command expectedCommand) {","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" Command command \u003d parserBasic.parse(userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" * Asserts that the parsing of {@code userInput} by {@code parserComplex} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" public static void assertParseBasicFailure(ParserBasic\u003c? extends Command\u003e parserBasic, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage) {","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":" parserBasic.parse(userInput);","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"vansh284":3,"Gavino3o":1,"-":45,"alvinlim277":22}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseBasicFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseBasicSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" assertParseBasicSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" assertParseBasicFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":28,"alvinlim277":5}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.EditSpecialistDescriptorBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_INVALID_SPECIALIST \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE_SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" private static final String MESSAGE_INVALID_PATIENT \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE_PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"1 some random string\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":87,"author":{"gitId":"Kokseng1"},"content":" assertParseComplexFailure(parser, \"1 i/ string\", MESSAGE_INVALID_SPECIALIST, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid name","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid phone","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid email","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT); // invalid tag","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS,","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":" PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND,","lastModifiedDate":"2023-10-13"},{"lineNumber":110,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2023-10-13"},{"lineNumber":112,"author":{"gitId":"vansh284"},"content":" Tag.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":116,"author":{"gitId":"alvinlim277"},"content":" \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"vansh284"},"content":" Name.MESSAGE_CONSTRAINTS, PersonType.PATIENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" + EMAIL_DESC_AMY + LOCATION_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + SPECIALTY_DESC_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"Kokseng1"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder()","lastModifiedDate":"2023-10-10"},{"lineNumber":127,"author":{"gitId":"alvinlim277"},"content":" .withSpecialty(VALID_SPECIALTY_DERMATOLOGY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"alvinlim277"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"alvinlim277"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":165,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":167,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":171,"author":{"gitId":"vansh284"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":173,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":186,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE),","lastModifiedDate":"2023-10-13"},{"lineNumber":192,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"alvinlim277"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + LOCATION_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"alvinlim277"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + LOCATION_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"alvinlim277"},"content":" + PHONE_DESC_BOB + LOCATION_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":200,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION),","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"alvinlim277"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_LOCATION_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"alvinlim277"},"content":" + INVALID_PHONE_DESC + INVALID_LOCATION_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexFailure(parser, userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":208,"author":{"gitId":"alvinlim277"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_LOCATION),","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"vansh284"},"content":" PersonType.SPECIALIST);","lastModifiedDate":"2023-10-06"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"vansh284"},"content":" EditPersonDescriptor descriptor \u003d new EditSpecialistDescriptorBuilder().withTags().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2023-10-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"alvinlim277"},"content":" assertParseComplexSuccess(parser, userInput, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Kokseng1":14,"vansh284":22,"-":146,"alvinlim277":40}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexFailure;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseComplexSuccess;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":"import java.util.List;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.logic.commands.FindPredicateMap;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.AgeContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.EmailContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.LocationContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.PhoneContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.SpecialtyContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" public void parse_invalidPreambleOnly_throwsParseException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":" FindCommand.MESSAGE_USAGE_PATIENT), PersonType.PATIENT);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-19"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" public void parse_invalidPreambleValidPrefix_throwsParseException() {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input n/Alex\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_PATIENT), PersonType.PATIENT);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexFailure(parser, \" invalid input p/98736621\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" FindCommand.MESSAGE_USAGE_SPECIALIST), PersonType.SPECIALIST);","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" public void parse_validNameArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"Alice\", \"Bob\");","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_NAME, new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_NAME + \" Alice Bob\", expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_NAME + \" \\n Alice \\n \\t Bob \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" public void parse_validPhoneArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"92773291\", \"88765321\");","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_PHONE, new PhoneContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_PHONE + \" 92773291 88765321\",","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_PHONE + \" \\n 92773291 \\n \\t 88765321 \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" public void parse_validEmailArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"timothy@gmail.com\", \"neumann@hotmail.com\");","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_EMAIL, new EmailContainsKeywordsPredicate(keywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_EMAIL + \" timothy@gmail.com neumann@hotmail.com\",","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, \" \" + PREFIX_EMAIL + \" \\n timothy@gmail.com \\n \\t neumann@hotmail.com \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" public void parse_validAgeAndMedHistArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e ageKeywords \u003d Arrays.asList(\"21\", \"37\");","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e medHistKeywords \u003d Arrays.asList(\"Bronchitis\", \"ADHD\", \"Diabetes\");","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_AGE, new AgeContainsKeywordsPredicate(ageKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_MEDICALHISTORY, new MedHistoryContainsKeywordsPredicate(medHistKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs1 \u003d String.format(\" %s 21 37 %s Bronchitis ADHD Diabetes\",","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs2 \u003d String.format(\" %s 21 \\n 37 \\t %s Bronchitis \\n ADHD \\t Diabetes \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" PREFIX_AGE, PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs1, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs2, expectedCommand, PersonType.PATIENT);","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" public void parse_validSpecialtyAndLocationArgs_returnsFindCommand() {","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e specialtyKeywords \u003d Arrays.asList(\"Orthopaedic\", \"Neurology\");","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" List\u003cString\u003e locationKeywords \u003d Arrays.asList(\"Clementi\", \"Bukit\", \"Timah\");","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" FindPredicateMap findPredicateMap \u003d new FindPredicateMap();","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_SPECIALTY, new SpecialtyContainsKeywordsPredicate(specialtyKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" findPredicateMap.put(PREFIX_LOCATION, new LocationContainsKeywordsPredicate(locationKeywords));","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs1 \u003d String.format(\" %s Orthopaedic Neurology %s Clementi Bukit Timah\",","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" PREFIX_SPECIALTY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" String userInputArgs2 \u003d String.format(\" %s Orthopaedic \\n Neurology \\t %s Clementi \\n Bukit \\t Timah \\t\",","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" PREFIX_SPECIALTY, PREFIX_LOCATION);","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" FindCommand expectedCommand \u003d new FindCommand(findPredicateMap, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs1, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" assertParseComplexSuccess(parser, userInputArgs2, expectedCommand, PersonType.SPECIALIST);","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Kokseng1":3,"Gavino3o":100,"vansh284":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLocation((String) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"alvinlim277"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLocation(INVALID_ADDRESS));","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"alvinlim277"},"content":" Location expectedLocation \u003d new Location(VALID_ADDRESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(VALID_ADDRESS));","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"alvinlim277"},"content":" Location expectedLocation \u003d new Location(VALID_ADDRESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"alvinlim277"},"content":" assertEquals(expectedLocation, ParserUtil.parseLocation(addressWithWhitespace));","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"-":189,"alvinlim277":7}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"vansh284":1,"-":104,"alvinlim277":2}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Gavino3o":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"public class AgeTest {","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public void isValidAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" // null Age","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" // invalid ages","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative numbers","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"150\")); // absurdly high age","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"9p1\")); // alphabets within digits","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"3 4\")); // spaces within digits","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" assertFalse(Age.isValidAge(\"34a\")); // trailing alphabets","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" // valid phone numbers","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"0\")); // edge case","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"6\")); // single digit","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"91\")); // double digits","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"114\")); // triple digits","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" assertTrue(Age.isValidAge(\"149\")); // edge case","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" Age age \u003d new Age(\"30\");","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" assertTrue(age.equals(new Age(\"30\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" assertFalse(age.equals(new Age(\"95\")));","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"vansh284":64}},{"path":"src/test/java/seedu/address/model/person/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinlim277"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"alvinlim277"},"content":"public class LocationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":" public void constructor_invalidLocation_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"alvinlim277"},"content":" String invalidLocation \u003d \"\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Location(invalidLocation));","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"alvinlim277"},"content":" public void isValidLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" // null address","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"alvinlim277"},"content":" // invalid addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"alvinlim277"},"content":" assertFalse(Location.isValidLocation(\"\")); // empty string","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"alvinlim277"},"content":" assertFalse(Location.isValidLocation(\" \")); // spaces only","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" // valid addresses","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"-\")); // one character","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" assertTrue(Location.isValidLocation(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" public void equals() {","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" Location location \u003d new Location(\"Valid Location\");","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" assertTrue(location.equals(new Location(\"Valid Location\")));","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" assertTrue(location.equals(location));","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(null));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(5.0f));","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"alvinlim277"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" assertFalse(location.equals(new Location(\"Other Valid Location\")));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"alvinlim277":56}},{"path":"src/test/java/seedu/address/model/person/MedHistoryContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Collections;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import java.util.List;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.predicates.MedHistoryContainsKeywordsPredicate;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":"public class MedHistoryContainsKeywordsPredicateTest {","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" public void equals() {","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":" public void test_medicalHistoryContainsKeywords_returnsTrue() {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" // One keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Collections.singletonList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" // Multiple keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Diabetes\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" // One Keyword with Multiple Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Collections.singletonList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder().withMedicalHistory(\"Diabetes\", \"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"angkyakdifp"},"content":" // Multiple Keyword with Multiple Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Asthma\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Diabetes\", \"Osteoporosis\", \"Asthma\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" // Only one matching keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\", \"Diabetes\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis primary type 1\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" // Mixed-case keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"oSteOpoROsis\", \"dIaBeTeS\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(predicate.test(new PatientBuilder()","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis\", \"Diabetes\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"angkyakdifp"},"content":" public void test_medicalHistoryDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"angkyakdifp"},"content":" // Zero keywords","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Osteoporosis\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"angkyakdifp"},"content":" // Non-matching keyword","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"Osteoporosis\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Anemia\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"angkyakdifp"},"content":" // Keywords match phone, email and address, but does not match Medical History","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"angkyakdifp"},"content":" predicate \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"angkyakdifp"},"content":" new MedHistoryContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(predicate.test(new PatientBuilder().withMedicalHistory(\"Anemia\").withPhone(\"12345\")","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"angkyakdifp"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"angkyakdifp"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"angkyakdifp"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"angkyakdifp"},"content":" MedHistoryContainsKeywordsPredicate predicate \u003d new MedHistoryContainsKeywordsPredicate(keywords);","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"angkyakdifp"},"content":" String expected \u003d MedHistoryContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"angkyakdifp"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"angkyakdifp":104}},{"path":"src/test/java/seedu/address/model/person/MedicalHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"angkyakdifp"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"angkyakdifp"},"content":"public class MedicalHistoryTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(NullPointerException.class, () -\u003e new MedicalHistory(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":" public void constructor_invalidMedicalHistory_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" String invalidMedicalHistory \u003d \"\";","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidMedicalHistory));","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" public void isValidMedicalHistory() {","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" // null specialty","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(NullPointerException.class, () -\u003e MedicalHistory.isValidMedicalHistory(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" // invalid specialties","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(MedicalHistory.isValidMedicalHistory(\"\")); // empty string","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(MedicalHistory.isValidMedicalHistory(\" \")); // spaces only","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" // valid medical history","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(MedicalHistory.isValidMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS));","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" public void equals() {","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" MedicalHistory medicalHistory \u003d new MedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS);","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(medicalHistory.equals(new MedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS)));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":" assertTrue(medicalHistory.equals(medicalHistory));","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(null));","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(VALID_MEDICAL_HISTORY_OSTEOPOROSIS));","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" assertFalse(medicalHistory.equals(new MedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)));","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"angkyakdifp":54}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" assertTrue(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Gavino3o":1,"vansh284":8,"-":76,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_OSTEOPOROSIS;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" assertTrue(true);","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" // different age -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withAge(VALID_AGE_THIRTY).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" // different medical history -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withMedicalHistory(VALID_MEDICAL_HISTORY_OSTEOPOROSIS).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" + \", age\u003d\" + ALICE.getAge()","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" + \", medical history\u003d\" + ALICE.getMedicalHistory() + \"}\";","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":28,"angkyakdifp":6,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" Person person \u003d new PatientBuilder().build();","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" Person editedBob \u003d new SpecialistBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" editedBob \u003d new SpecialistBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" Person aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"vansh284":12,"-":75,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/SpecialistTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.SpecialistBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"public class SpecialistTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public void equals() {","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" assertTrue(true);","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" // different speciality -\u003e returns false","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" Person editedBob \u003d new SpecialistBuilder(BOB).withSpecialty(VALID_SPECIALTY_ORTHOPAEDIC).build();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" assertFalse(BOB.equals(editedBob));","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" String expected \u003d Specialist.class.getCanonicalName() + \"{name\u003d\" + BOB.getName() + \", phone\u003d\" + BOB.getPhone()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" + \", email\u003d\" + BOB.getEmail() + \", tags\u003d\" + BOB.getTags() + \", location\u003d\" + BOB.getLocation()","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" + \", specialty\u003d\" + BOB.getSpecialty() + \"}\";","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" assertEquals(expected, BOB.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":1,"vansh284":27,"alvinlim277":1}},{"path":"src/test/java/seedu/address/model/person/SpecialtyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kokseng1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"Kokseng1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_ORTHOPAEDIC;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":"public class SpecialtyTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Specialty(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":" public void constructor_invalidSpecialty_throwsIllegalArgumentException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"Kokseng1"},"content":" String invalidSpecialty \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidSpecialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" public void isValidSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" // null specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" assertThrows(NullPointerException.class, () -\u003e Specialty.isValidSpecialty(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" // invalid specialties","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" assertFalse(Specialty.isValidSpecialty(\"\")); // empty string","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" assertFalse(Specialty.isValidSpecialty(\" \")); // spaces only","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" // valid specialties","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" assertTrue(Specialty.isValidSpecialty(VALID_SPECIALTY_DERMATOLOGY));","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"Kokseng1"},"content":" public void equals() {","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"Kokseng1"},"content":" Specialty specialty \u003d new Specialty(VALID_SPECIALTY_ORTHOPAEDIC);","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" assertTrue(specialty.equals(new Specialty(VALID_SPECIALTY_ORTHOPAEDIC)));","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" assertTrue(specialty.equals(specialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(null));","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(VALID_SPECIALTY_ORTHOPAEDIC));","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" assertFalse(specialty.equals(new Specialty(VALID_SPECIALTY_DERMATOLOGY)));","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"Kokseng1":54}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"alvinlim277"},"content":" Person editedAlice \u003d new PatientBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"vansh284":1,"-":171,"alvinlim277":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"angkyakdifp"},"content":" private static final List\u003cJsonAdaptedMedicalHistory\u003e VALID_MEDICAL_HISTORY \u003d BENSON.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList());;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"angkyakdifp"},"content":" private static final String INVALID_MEDICAL_HISTORY \u003d \"#anemia\";","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" private static final String INVALID_AGE \u003d \"-1\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public void toModelType_invalidMedicalHistory_throwsIllegalValueException() {","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" List\u003cJsonAdaptedMedicalHistory\u003e invalidMedicalHistory \u003d new ArrayList\u003c\u003e(VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" invalidMedicalHistory.add(new JsonAdaptedMedicalHistory(INVALID_MEDICAL_HISTORY));","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":" VALID_AGE, invalidMedicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" @Test","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, INVALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, null, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":36,"angkyakdifp":16,"alvinlim277":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"angkyakdifp"},"content":" private static final List\u003cJsonAdaptedMedicalHistory\u003e VALID_MEDICAL_HISTORY \u003d BENSON.getMedicalHistory()","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" .stream()","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .map(JsonAdaptedMedicalHistory::new)","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" .collect(Collectors.toList());;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedPatient(VALID_NAME, VALID_PHONE, VALID_EMAIL, invalidTags,","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" VALID_AGE, VALID_MEDICAL_HISTORY);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"vansh284":8,"angkyakdifp":4,"-":77,"alvinlim277":8}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedSpecialistTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.storage;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import java.util.List;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":"public class JsonAdaptedSpecialistTest {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"alvinlim277"},"content":" private static final String INVALID_LOCATION \u003d \" \";","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" private static final String INVALID_SPECIALTY \u003d \"\";","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_NAME \u003d GEORGE.getName().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_PHONE \u003d GEORGE.getPhone().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_EMAIL \u003d GEORGE.getEmail().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"alvinlim277"},"content":" private static final String VALID_LOCATION \u003d GEORGE.getLocation().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" private static final String VALID_SPECIALTY \u003d GEORGE.getSpecialty().toString();","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d GEORGE.getTags().stream()","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_LOCATION, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" VALID_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"alvinlim277"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public void toModelType_nullLocation_throwsIllegalValueException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" VALID_SPECIALTY);","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"alvinlim277"},"content":" Location.class.getSimpleName());","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"alvinlim277"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":" public void toModelType_validSpecialistDetails_returnsSpecialist() throws Exception {","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" JsonAdaptedSpecialist specialist \u003d new JsonAdaptedSpecialist(GEORGE);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"Kokseng1"},"content":" assertEquals(GEORGE, specialist.toModelType());","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"Kokseng1"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"Kokseng1"},"content":" public void toModelType_invalidSpecialty_throwsIllegalValueException() {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"Kokseng1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_LOCATION, VALID_TAGS,","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"Kokseng1"},"content":" INVALID_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"Kokseng1"},"content":" String expectedMessage \u003d Specialty.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"Kokseng1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public void toModelType_nullSpeciality_throwsIllegalValueException() {","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"alvinlim277"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedSpecialist(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_LOCATION,","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" VALID_TAGS, null);","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"vansh284"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Specialty.class.getSimpleName());","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"vansh284"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":28,"vansh284":18,"alvinlim277":27}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" AddressBook addressBookFromFile \u003d dataFromFile","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" .toModelType();","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Kokseng1":2,"-":46}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building EditPatientDescriptor objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"public class EditPatientDescriptorBuilder extends EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditPatientDescriptor());","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditPatientDescriptor(editPatientDescriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" * Returns an {@code EditPatientDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"vansh284"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" setDescriptor(editPatientDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" editPersonDescriptorSetFields(patient);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(patient.getAge());","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setMedicalHistory(patient.getMedicalHistory());","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" * Sets the {@code Age} of the {@code EditAgeDescriptor} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" public EditPersonDescriptorBuilder withAge(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"vansh284"},"content":" EditCommand.EditPatientDescriptor editPatientDescriptor \u003d","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"vansh284"},"content":" (EditCommand.EditPatientDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" editPatientDescriptor.setAge(new Age(age));","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"angkyakdifp"},"content":" * Sets the {@code MedicalHistory} of the {@code EditMedicalHistoryDescriptor} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"angkyakdifp"},"content":" public EditPersonDescriptorBuilder withMedicalHistory(String... medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" EditCommand.EditPatientDescriptor editPatientDescriptor \u003d","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" (EditCommand.EditPatientDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medHistSet \u003d Stream.of(medicalHistory).map(MedicalHistory::new).collect(Collectors.toSet());","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" editPatientDescriptor.setMedicalHistory(medHistSet);","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" return (EditPatientDescriptor) getDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":45,"angkyakdifp":18}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" * Sets the descriptor fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" public void editPersonDescriptorSetFields(Person person) {","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" public abstract EditPersonDescriptor build();","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"vansh284"},"content":" public EditPersonDescriptor getDescriptor() {","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" public void setDescriptor(EditPersonDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" this.descriptor \u003d descriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"vansh284":12,"-":64}},{"path":"src/test/java/seedu/address/testutil/EditSpecialistDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building EditSpecialistDescriptor objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"public class EditSpecialistDescriptorBuilder extends EditPersonDescriptorBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptorBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditSpecialistDescriptor());","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptorBuilder(EditSpecialistDescriptor editSpecialistDescriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":" setDescriptor(new EditSpecialistDescriptor(editSpecialistDescriptor));","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":" * Returns an {@code EditSpecialistDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" public EditSpecialistDescriptorBuilder(Specialist specialist) {","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d new EditSpecialistDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" setDescriptor(editSpecialistDescriptor);","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":" editPersonDescriptorSetFields(specialist);","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" editSpecialistDescriptor.setSpecialty(specialist.getSpecialty());","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"alvinlim277"},"content":" * Sets the {@code Location} of the {@code EditSpecialtyDescriptor} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" public EditSpecialistDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"alvinlim277"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d (EditSpecialistDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":" editSpecialistDescriptor.setLocation(new Location(location));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" * Sets the {@code Specialty} of the {@code EditSpecialtyDescriptor} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"alvinlim277"},"content":" public EditSpecialistDescriptorBuilder withSpecialty(String specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" EditSpecialistDescriptor editSpecialistDescriptor \u003d (EditSpecialistDescriptor) super.getDescriptor();","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" editSpecialistDescriptor.setSpecialty(new Specialty(specialty));","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"Kokseng1"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public EditSpecialistDescriptor build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" return (EditSpecialistDescriptor) getDescriptor();","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":52,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":12,"vansh284":30,"alvinlim277":10}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"angkyakdifp"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"angkyakdifp"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"public class PatientBuilder extends PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":" public static final String DEFAULT_AGE \u003d \"30\";","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":" private Age age;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"angkyakdifp"},"content":" private Set\u003cMedicalHistory\u003e medicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":" public PatientBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":" super();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"vansh284"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" super(patientToCopy);","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" age \u003d patientToCopy.getAge();","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory \u003d patientToCopy.getMedicalHistory();","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" public Age getAge() {","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" return age;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" public Set\u003cMedicalHistory\u003e getMedicalHistory() {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"angkyakdifp"},"content":" return medicalHistory;","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"angkyakdifp"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"vansh284"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"vansh284"},"content":" * Sets the {@code Age} of the {@code Patient} that we are building.","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public PatientBuilder withAge(String age) {","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" return this;","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"angkyakdifp"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"angkyakdifp"},"content":" * Sets the {@code MedicalHistory} of the {@code Patient} that we are building.","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"angkyakdifp"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"angkyakdifp"},"content":" public PatientBuilder withMedicalHistory(String ... medicalHistory) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"angkyakdifp"},"content":" this.medicalHistory \u003d SampleDataUtil.getMedicalHistorySet(medicalHistory);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"angkyakdifp"},"content":" return this;","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public Patient build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"alvinlim277"},"content":" return new Patient(getName(), getPhone(), getEmail(), getTags(), getAge(), getMedicalHistory());","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"vansh284":39,"angkyakdifp":25,"alvinlim277":1}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PATIENT_TAG;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"angkyakdifp"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICALHISTORY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditPatientDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"angkyakdifp"},"content":"import seedu.address.model.person.MedicalHistory;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"vansh284"},"content":" * A utility class for Patient.","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"vansh284"},"content":"public class PatientUtil {","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"vansh284"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" return AddCommand.COMMAND_WORD + \" \" + PATIENT_TAG + \" \" + getPatientDetails(patient);","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"vansh284"},"content":" public static String getPatientDetails(Patient patient) {","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_PHONE + patient.getPhone().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_EMAIL + patient.getEmail().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" patient.getMedicalHistory().stream().forEach(s -\u003e sb.append(PREFIX_MEDICALHISTORY + s.value + \" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_AGE + patient.getAge().value + \" \");","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"vansh284"},"content":" patient.getTags().stream().forEach(","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code EditPatientDescriptor}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"vansh284"},"content":" public static String getEditPatientDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" descriptor.getAge().ifPresent(age -\u003e sb.append(PREFIX_AGE).append(age.value).append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"angkyakdifp"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"angkyakdifp"},"content":" if (descriptor.getMedicalHistory().isPresent()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"angkyakdifp"},"content":" Set\u003cMedicalHistory\u003e medicalHistory \u003d descriptor.getMedicalHistory().get();","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"angkyakdifp"},"content":" if (medicalHistory.isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"angkyakdifp"},"content":" sb.append(PREFIX_MEDICALHISTORY);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"angkyakdifp"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"angkyakdifp"},"content":" medicalHistory.forEach(s -\u003e sb.append(PREFIX_MEDICALHISTORY).append(s.value).append(\" \"));","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"angkyakdifp"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"vansh284":19,"angkyakdifp":12,"-":43}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"vansh284"},"content":"public abstract class PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"vansh284"},"content":" public abstract Person build();","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"vansh284"},"content":" public Name getName() {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"vansh284"},"content":" return name;","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"vansh284"},"content":" public Phone getPhone() {","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"vansh284"},"content":" return phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"vansh284"},"content":" public Email getEmail() {","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"vansh284"},"content":" return email;","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"vansh284"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"vansh284"},"content":" return tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"vansh284":18,"-":83,"alvinlim277":4}},{"path":"src/test/java/seedu/address/testutil/SpecialistBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"vansh284"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"import seedu.address.model.person.Location;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import seedu.address.model.person.Specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"vansh284"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"vansh284"},"content":" * A utility class to help with building Specialist objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"vansh284"},"content":"public class SpecialistBuilder extends PersonBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"Kokseng1"},"content":" public static final String DEFAULT_SPECIALTY \u003d \"Dermatology\";","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"alvinlim277"},"content":" public static final String DEFAULT_LOCATION \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"Kokseng1"},"content":" private Specialty specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"alvinlim277"},"content":" private Location location;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" * Creates a {@code SpecialistBuilder} with the default details.","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"Kokseng1"},"content":" public SpecialistBuilder() {","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"Kokseng1"},"content":" super();","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d new Specialty(DEFAULT_SPECIALTY);","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"alvinlim277"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"vansh284"},"content":" * Initializes the SpecialistBuilder with the data of {@code specialistToCopy}.","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"Kokseng1"},"content":" public SpecialistBuilder(Specialist specialistToCopy) {","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"Kokseng1"},"content":" super(specialistToCopy);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"Kokseng1"},"content":" specialty \u003d specialistToCopy.getSpecialty();","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"alvinlim277"},"content":" location \u003d specialistToCopy.getLocation();","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"alvinlim277"},"content":" public Location getLocation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"alvinlim277"},"content":" return location;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"Kokseng1"},"content":" public Specialty getSpecialty() {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"Kokseng1"},"content":" return specialty;","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"Kokseng1"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"Kokseng1"},"content":" * Sets the {@code Specialty} of the {@code Specialist} that we are building.","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"alvinlim277"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"Kokseng1"},"content":" * @param specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"Kokseng1"},"content":" * @return PersonBuilder with specialty","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"Kokseng1"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" public SpecialistBuilder withSpecialty(String specialty) {","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" this.specialty \u003d new Specialty(specialty);","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"Kokseng1"},"content":" return this;","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"Kokseng1"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" * Sets the {@code Location} of the {@code Specialist} that we are building.","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"alvinlim277"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" public SpecialistBuilder withLocation(String location) {","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"alvinlim277"},"content":" return this;","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"alvinlim277"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" @Override","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" public Specialist build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" return new Specialist(getName(), getPhone(), getEmail(), getLocation(), getTags(), getSpecialty());","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"vansh284"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"Kokseng1":29,"vansh284":16,"alvinlim277":22}},{"path":"src/test/java/seedu/address/testutil/SpecialistUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SPECIALTY;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"Kokseng1"},"content":"import static seedu.address.logic.parser.CliSyntax.SPECIALIST_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"Kokseng1"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"vansh284"},"content":"import seedu.address.logic.commands.EditCommand.EditSpecialistDescriptor;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"vansh284"},"content":" * A utility class for Specialist.","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"vansh284"},"content":"public class SpecialistUtil {","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"vansh284"},"content":" * Returns an add command string for adding the {@code specialist}.","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"vansh284"},"content":" public static String getAddCommand(Specialist specialist) {","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"Kokseng1"},"content":" return AddCommand.COMMAND_WORD + \" \" + SPECIALIST_TAG + \" \" + getSpecialistDetails(specialist);","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code specialist}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"vansh284"},"content":" public static String getSpecialistDetails(Specialist specialist) {","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_NAME + specialist.getName().fullName + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_PHONE + specialist.getPhone().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"vansh284"},"content":" sb.append(PREFIX_EMAIL + specialist.getEmail().value + \" \");","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"alvinlim277"},"content":" sb.append(PREFIX_LOCATION + specialist.getLocation().value + \" \");","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"vansh284"},"content":" specialist.getTags().stream().forEach(","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"Kokseng1"},"content":" sb.append(PREFIX_SPECIALTY + specialist.getSpecialty().value + \" \");","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" * Returns the part of command string for the given {@code EditSpecialistDescriptor}\u0027s details.","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"vansh284"},"content":" public static String getEditSpecialistDescriptorDetails(EditSpecialistDescriptor descriptor) {","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" descriptor.getLocation().ifPresent(address -\u003e sb.append(PREFIX_LOCATION).append(address.value).append(\" \"));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"vansh284"},"content":" descriptor.getSpecialty().ifPresent(specialty -\u003e sb.append(PREFIX_SPECIALTY).append(specialty.value)","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"vansh284"},"content":" .append(\" \"));","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Kokseng1":9,"vansh284":16,"-":39,"alvinlim277":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_THIRTY;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"vansh284"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICAL_HISTORY_ANEMIA;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"alvinlim277"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SPECIALTY_DERMATOLOGY;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"vansh284"},"content":"import seedu.address.model.person.Specialist;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient ALICE \u003d (Patient) new PatientBuilder().withAge(\"17\")","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Anemia\", \"Osteoporosis\")","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"angkyakdifp"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient BENSON \u003d (Patient) new PatientBuilder().withAge(\"29\")","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"angkyakdifp"},"content":" .withMedicalHistory(\"Osteoporosis\")","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"angkyakdifp"},"content":" public static final Patient CARL \u003d (Patient) new PatientBuilder().withAge(\"47\")","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"alvinlim277"},"content":" .build();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"vansh284"},"content":" public static final Patient DANIEL \u003d (Patient) new PatientBuilder().withAge(\"78\").withMedicalHistory(\"Asthma\")","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"angkyakdifp"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"alvinlim277"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist ELLE \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Dermatology\")","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"michegan ave\").withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"werner@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist FIONA \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Orthopaedic\")","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"little tokyo\").withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"lydia@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"Kokseng1"},"content":" public static final Specialist GEORGE \u003d (Specialist) new SpecialistBuilder().withSpecialty(\"Physiotherapy\")","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"alvinlim277"},"content":" .withLocation(\"4th street\").withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"anna@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"vansh284"},"content":" public static final Patient HOON \u003d (Patient) new PatientBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"vansh284"},"content":" .withAge(\"79\").withMedicalHistory(\"Diabetes\")","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"vansh284"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"stefan@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"alvinlim277"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"vansh284"},"content":" public static final Specialist IDA \u003d (Specialist) new SpecialistBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"vansh284"},"content":" .withSpecialty(\"Gynaecology\")","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"vansh284"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"alvinlim277"},"content":" .withEmail(\"hans@example.com\").build();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":72,"author":{"gitId":"vansh284"},"content":" public static final Patient AMY \u003d (Patient) new PatientBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":73,"author":{"gitId":"vansh284"},"content":" .withAge(VALID_AGE_THIRTY).withMedicalHistory(VALID_MEDICAL_HISTORY_ANEMIA)","lastModifiedDate":"2023-10-15"},{"lineNumber":74,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"alvinlim277"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"angkyakdifp"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"vansh284"},"content":" public static final Specialist BOB \u003d (Specialist) new SpecialistBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"alvinlim277"},"content":" .withLocation(VALID_LOCATION_BOB).withSpecialty(VALID_SPECIALTY_DERMATOLOGY)","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"vansh284"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"alvinlim277"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Kokseng1":3,"vansh284":16,"angkyakdifp":11,"-":52,"alvinlim277":19}}] diff --git a/AY2324S1-CS2103T-W13-1_tp_master/commits.json b/AY2324S1-CS2103T-W13-1_tp_master/commits.json index 8f470dc5..987b2062 100644 --- a/AY2324S1-CS2103T-W13-1_tp_master/commits.json +++ b/AY2324S1-CS2103T-W13-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kokseng1":[{"date":"2023-09-25","commitResults":[{"hash":"5aa5a7ca0a8a9c04346b7c4295c35d063a7114bd","isMergeCommit":false,"messageTitle":"Update AboutUs.md. Add kokseng1.png and kokseng1.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":5}}},{"hash":"7366af756b3845b4e1527773d13136efbbbec4f0","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"44deeae6c5436ae631ebf530cf0fefcf6fb1b690","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"56337199c6dc53790c3697d88bd517e8813ba9cc","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c93db4167746d17ac4cf1e67ad9ef666d763f68","isMergeCommit":true,"messageTitle":"Merge pull request #32 from vansh284/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs and add skeletal PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"3557aff181e8e0ec0d9587b003bd22009844a65d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":4}}},{"hash":"2e3bfdd394bdd5b9a3fdaa772e21a9babb2836c1","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-28","commitResults":[{"hash":"78cd65af3708352cbbf45157ababea3ed965c246","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Corrected mistakes brought up in Gavin and Vansh\u0027s comments","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8ea8e72a8a9c720defb173753b256acc3644f599","isMergeCommit":true,"messageTitle":"Merge pull request #42 from alvinlim277/documentation-34-UpdateDeveloperGuide","messageBody":"Add \u0027exit program\u0027 use case in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"5ff1ecc8d3651dcb7136a44eb9435f7193db644e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include patient management user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":13}}},{"hash":"edd1860c018a202a6552663c4cadfb4355c81a9c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include patient management user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"f84c1f1e48ec2e8621f5bf624fc92e4870d736f9","isMergeCommit":true,"messageTitle":"merge changes from remote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5e912fc0e3adfcb0088b70f16e3d0ff2803e9e7b","isMergeCommit":false,"messageTitle":"add patient management user stories to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":13}}}]},{"date":"2023-10-09","commitResults":[{"hash":"f685e634889d4c3c4bee22dd1f67b48c503f8c9f","isMergeCommit":true,"messageTitle":"merge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"adb10800385b94a08871b67f605b21ff3cbadfe3","isMergeCommit":false,"messageTitle":"Add \"Specialty\" field for specialists. Wherever a Specialist object is present, it should have a non null Specialty field. Users can now add or edit any specialist\u0027s specialty.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":202,"deletions":74},"test-code":{"insertions":77,"deletions":74}}},{"hash":"4888d10b2921cf0ddeb5df9b92f095f1f5689862","isMergeCommit":false,"messageTitle":"resolved checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":41},"test-code":{"insertions":44,"deletions":4}}},{"hash":"1c89b2b0fbe6b09103ee05b94645025acce7c202","isMergeCommit":false,"messageTitle":"resolved more checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":25}}},{"hash":"6844a9819cf217b337c4832ddfc3881cb3e9c553","isMergeCommit":false,"messageTitle":"update tests to meet codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":97,"deletions":9}}}]},{"date":"2023-10-12","commitResults":[{"hash":"fc3382d7d06d1ebd71d7787e95b61be55e408eae","isMergeCommit":false,"messageTitle":"updated toString methods to be less repetitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":17}}},{"hash":"63c9c32602126196fd24f37632acc7ca6911a629","isMergeCommit":false,"messageTitle":"Update StringUtil.java","messageBody":"corrected javadoc","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"975ff79008266862f7a4f0d4b6c960fb60b90d1f","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":67},"test-code":{"insertions":25,"deletions":18}}}]},{"date":"2023-10-17","commitResults":[{"hash":"eab88efcb395dd6f258431c8473f44ff789c82cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-65-ErrorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3502d864bae56f5bd78819e16f636606427a0509","isMergeCommit":false,"messageTitle":"conflict management","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12},"test-code":{"insertions":7,"deletions":7}}},{"hash":"c3193d1246c24c006ac8659776734d34ae1a2bf3","isMergeCommit":false,"messageTitle":"add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"cd89326acb51d05da40c5512be8d1ce62b0af596","isMergeCommit":false,"messageTitle":"change unused strings in add, edit and find to private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":13}}},{"hash":"3c0ab12dae402a2b2e90ef37deec809187dc0c8b","isMergeCommit":true,"messageTitle":"Merge pull request #76 from angkyakdifp/branch-med-history-2","messageBody":"Enable Medical History to be optional and Multiple value","fileTypesAndContributionMap":{}},{"hash":"49022a819f7f87e5a4b74c3efb8e0b8a4a963520","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-65-ErrorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ec942fb2eea556cdc7eb17579304f8b03184d6a","isMergeCommit":false,"messageTitle":"merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"11b6740f64151c1c6e19bf5245487dd87af93380","isMergeCommit":false,"messageTitle":"checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]}],"vansh284":[{"date":"2023-09-25","commitResults":[{"hash":"d97740beb4d0b14be685f1a744ec53559f98340c","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"58891d6677bc5243754a43f4e2f74afa04ac3c1e","isMergeCommit":false,"messageTitle":"Add skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}},{"hash":"7165a173e342e4a6f291976425aacd8e7205184c","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Kokseng1/documentation-18-UpdateUserGuide","messageBody":"Update UserGuide.md. and add Uimockup.png","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"22ab15fd6210c06c026b8666d6f470192d7c6331","isMergeCommit":false,"messageTitle":"Update user guide delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":43}}},{"hash":"950409b4ccae5abf0853786479a53ab05e4729d4","isMergeCommit":false,"messageTitle":"Add NFRs, target user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":22}}}]},{"date":"2023-09-27","commitResults":[{"hash":"8b47cafbf2239aecc6d41c5db4d5ada5aee3211b","isMergeCommit":false,"messageTitle":"Rectify grammatical error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10d8b1a2bad6944fef0d70dbd62cc2f6a91ed82d","isMergeCommit":false,"messageTitle":"Rectify grammatical errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"9e62bd58ea11f5d630f5defac0f4ee64908d0687","isMergeCommit":true,"messageTitle":"Merge pull request #39 from alvinlim277/documentation-18-UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"318f82ea2b323af572e86276cce42e129f7de5a2","isMergeCommit":true,"messageTitle":"Merge pull request #35 from vansh284/documentation-18-UpdateDeleteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92354751a60e1a0d480610f7c4f8426c97f10676","isMergeCommit":true,"messageTitle":"Merge pull request #36 from vansh284/documentation-34-nfr","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"e664a2463e58fe7c94311e3e66f82f2bf4091aa7","isMergeCommit":false,"messageTitle":"Add some user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"2ed61efff239dbd0e80ddfa8fb4397de28d46199","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Gavino3o/documentation-34-AddUserStories","messageBody":"Add Customization and Shortcut User Stories","fileTypesAndContributionMap":{}},{"hash":"06fb05f348e4630dbed6ccc67b92f4efb3951e05","isMergeCommit":true,"messageTitle":"Make minor changes","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"0699c1b1f1b75857f82ce8b1bbe6263ae3321d9e","isMergeCommit":true,"messageTitle":"Merge pull request #46 from alvinlim277/documentation-34-UpdateDeveloperGuide","messageBody":"Add data management User Stories to Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"92e8454ce3c2b7f2bcab7e6fc194d666f4425b96","isMergeCommit":true,"messageTitle":"Merge pull request #47 from alvinlim277/documentation-19-UpdateReadMe","messageBody":"Add Ui mockup to README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"fe0d6d4d04951613b8623a081ac4ea8912b100f6","isMergeCommit":true,"messageTitle":"Merge pull request #50 from angkyakdifp/master","messageBody":"Edit the Quick Start for the User Guide","fileTypesAndContributionMap":{}},{"hash":"2e5f9fe5deb9f0a059c49952b4da4fb77b81385b","isMergeCommit":true,"messageTitle":"Merge pull request #57 from alvinlim277/documentation-56-UpdateConfig","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"67293a5bdb4e4021db61c61e60ff052609dfe803","isMergeCommit":false,"messageTitle":"Separate people into patients and specialist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":607,"deletions":109},"other":{"insertions":40,"deletions":33},"test-code":{"insertions":567,"deletions":164}}},{"hash":"61146a50c1c8f760e343d89b1c8c4ede89fd0e9f","isMergeCommit":false,"messageTitle":"Add tests to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":71}}}]},{"date":"2023-10-07","commitResults":[{"hash":"ea1494d0d78455ad4cfaeebafaa7dd5bcaf4b565","isMergeCommit":false,"messageTitle":"Add tests to cover edit command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-09","commitResults":[{"hash":"939afeb730a036473899425a2c4f3a0563a85d0c","isMergeCommit":true,"messageTitle":"Merge pull request #58 from vansh284/story-38-PeopleTypes","messageBody":"Deal with patients and specialist records separately in the address book","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"f249bb1321574386848a4678701b422fdd6f7da9","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Kokseng1/story-54-AddSpecialistFields","messageBody":"Track specialist by specialty","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"1be617bbf51156c2305ce2c425b0b2ec44ef76d5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from alvinlim277/feature-61-DisplayRecordsSeparately","messageBody":"Display patient and specialist records separately when listing","fileTypesAndContributionMap":{}},{"hash":"44fde4673d8c7c883e825dc1bcba8906b0e3a517","isMergeCommit":true,"messageTitle":"Merge pull request #64 from angkyakdifp/branch-addMedicalHistory","messageBody":"Add medical history field for patient","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"e32ec5e735ed08f133a62e44eea881ccc5bf51ad","isMergeCommit":false,"messageTitle":"Add age field to patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":46},"test-code":{"insertions":224,"deletions":62}}}]},{"date":"2023-10-16","commitResults":[{"hash":"a887af64ecd34f878cd4fd459eb7e76f2a150651","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:vansh284/tp into story-37-PatientAge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1c405b302f68d1d43394265c7b52749faf3b1ce","isMergeCommit":false,"messageTitle":"Add predicate to allow finding patient by age","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":4}}},{"hash":"53322ce50e5115ff8c6c203980c72f157c33af20","isMergeCommit":false,"messageTitle":"Add tests for parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":5}}},{"hash":"21516fecd8eb78dc14548ac115a6d39c1bfc1e84","isMergeCommit":false,"messageTitle":"Fix error in header comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"646455340d15fb1fef475fa3f86517e566479584","isMergeCommit":true,"messageTitle":"Merge pull request #72 from vansh284/story-37-PatientAge","messageBody":"Add age field to patients","fileTypesAndContributionMap":{}},{"hash":"3c19509461357ca01d7e380e7a3a465b50449a30","isMergeCommit":true,"messageTitle":"Merge pull request #73 from alvinlim277/feature-67-LocationField","messageBody":"Change address to location and make it exclusive to specialists","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"2ec56a4684bb1d0f35b85c909824751a7cf99e17","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Gavino3o/test-71-FindCommandCodeCov","messageBody":"Improve Code Coverage of Find Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"c75845fee715c90ca97d07ee39b3d2c15a42214b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Kokseng1/feature-65-ErrorMessages","messageBody":"Improve error messages","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"3c1e92fd45d0ed17b7453b9af10520b04649ed5c","isMergeCommit":true,"messageTitle":"Merge pull request #82 from angkyakdifp/master","messageBody":"Fix bug for medical history display.","fileTypesAndContributionMap":{}},{"hash":"1d81005ab03082b504656a4fbab7b7333005db3f","isMergeCommit":false,"messageTitle":"Update version number for trial JAR release","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"caac94588a5b79342dcc9ccafd3cab715898d7cf","isMergeCommit":true,"messageTitle":"Merge pull request #81 from Gavino3o/bugfix-78-FindCommandInvalidArgParseError","messageBody":"Fix find command invalid argument parsing","fileTypesAndContributionMap":{}}]}],"Gavino3o":[{"date":"2023-09-25","commitResults":[{"hash":"4738c4459f4effb014394d3e8963d1874d7ad31d","isMergeCommit":false,"messageTitle":"Update AboutUs.md and add skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"6f0c5fa67010d1dc33928611b6439266b8f17e52","isMergeCommit":false,"messageTitle":"Update \u0027list\u0027 feature information in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"7f2a4def51f799cf8bb67954d1341b4b13e251c3","isMergeCommit":true,"messageTitle":"Merge pull request #21 from alvinlim277/documentation-19-UpdateReadMe","messageBody":"Update README, AboutUs and skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"8002797e6569a98ecc2fb140c3b7f1a176b0e844","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Gavino3o/documentation-18-InitialUG","messageBody":"Update \u0027list\u0027 feature information in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-09-27","commitResults":[{"hash":"13b5156b7ecf9e97b539a616911e53b0d7bf6a73","isMergeCommit":false,"messageTitle":"Add list command use case in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}}]},{"date":"2023-09-29","commitResults":[{"hash":"f10a677f701833c96a17036ac52862a25cad4840","isMergeCommit":false,"messageTitle":"Add Customization and Shortcut User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":8}}}]},{"date":"2023-10-13","commitResults":[{"hash":"ed5e08b18c9c09b496fd5f614e8e3f94b32bdc03","isMergeCommit":false,"messageTitle":"Implement Find Specialist by prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":4},"other":{"insertions":2,"deletions":1},"test-code":{"insertions":6,"deletions":5}}},{"hash":"2a7f1afeb7ae897f8d06e441d5514097de156885","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-10-FindByPrefix","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"741ab0c60991e3c49532b513c37d73582a6bec99","isMergeCommit":false,"messageTitle":"Implement parsePatient for FindCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":33}}},{"hash":"9b822f1ec5ca2f16cc9513ffb1ab4fe4dddd230e","isMergeCommit":false,"messageTitle":"Add JavaDocs and Checkstyle for Predicates and FindCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":30}}},{"hash":"b746b054d18eb4b9f8eabf0ac9271f5fcce0413b","isMergeCommit":false,"messageTitle":"Fix import order in TagContainsKeywordsPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"2fe2ed92a95d98ad895c1d691c83965cafa44c83","isMergeCommit":false,"messageTitle":"Fix incorrect import order in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"4c27f61c3bd2d27413c730ab36efe0aeb3e45cde","isMergeCommit":false,"messageTitle":"Modify tests for new FindCommand Syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":84,"deletions":20}}}]},{"date":"2023-10-16","commitResults":[{"hash":"80f0802f8a83cd9f25837bc22d31174e668e4e72","isMergeCommit":false,"messageTitle":"Improve readability of Lambda Functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"531c2a60455896d80860ef716f2163b0e1975c42","isMergeCommit":false,"messageTitle":"Add toString and empty argument tests for Find Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":5}}},{"hash":"9f01a6558f09a65529cf5bbe5bf5070e4c893447","isMergeCommit":false,"messageTitle":"Add FindPredicateMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0}}},{"hash":"6ba7d07c5f3648c439247b9f5bedc29b6c2bd3c5","isMergeCommit":false,"messageTitle":"Implement Partial FindCommand Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":63,"deletions":5}}},{"hash":"ffd78b111d0119ee37daf96ad422945980653cf6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into test-71-FindCommandCodeCov","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"e07868bcba10bd9395df4fe4ad479b50d252a713","isMergeCommit":false,"messageTitle":"Incorporate new FindPredicateMap into tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":49},"test-code":{"insertions":132,"deletions":136}}},{"hash":"3c60313ee7386378d7abb2396fdac84eab00d798","isMergeCommit":false,"messageTitle":"Fix Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":13}}},{"hash":"716c07d51a85ad3b728d5ff2257e39f4f39561c3","isMergeCommit":false,"messageTitle":"Empty Commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"13b9702f3cecbcd3ba573c3f09a308b35b8775be","isMergeCommit":false,"messageTitle":"Add FindCommandParser Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":116,"deletions":11}}},{"hash":"6dac05d58fd6d44aaf9be94619629dad44ba8242","isMergeCommit":false,"messageTitle":"Update FindCommand in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"b728a48bcd869aa2a5b7ffb5a7c029b4fda8740c","isMergeCommit":false,"messageTitle":"Modify FindCommandParserTest to use existing Parsing Util","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":34}}},{"hash":"55b5e2a04ba48560a90a570cfa431cbc3f6cea7a","isMergeCommit":false,"messageTitle":"Remove unused imports in tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"41e7f4b43d1ad53e0ce9e6ecb7bf52184999761f","isMergeCommit":false,"messageTitle":"Fix Find Command Invalid Argument Parsing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"22ce7c1ddaa23178fa9ff38ca49a96b36e8ea6be","isMergeCommit":false,"messageTitle":"Add Invalid Preamble Test for Find Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"f3372dbca040160322272f4c450240930f3b1d7d","isMergeCommit":true,"messageTitle":"Merge pull request #83 from vansh284/update-version-number","messageBody":"Update version number for trial JAR release","tags":["v1.2.1"],"fileTypesAndContributionMap":{}},{"hash":"c0104fd284c1237b6f3dbbdc95a8d5cea8a91554","isMergeCommit":false,"messageTitle":"Update FindCommand Expected Behavior in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]}],"angkyakdifp":[{"date":"2023-10-04","commitResults":[{"hash":"2655a71c363ba4e72daf0e7b6f14da6e913f0b1a","isMergeCommit":false,"messageTitle":"Add Skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":51}}},{"hash":"daa4c38a78e8686aa83303f7bdc2d0de78d0f086","isMergeCommit":false,"messageTitle":"Add Quick Start Use Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}},{"hash":"622f97245909e1a1ed015c3cbfe590637ac8b06d","isMergeCommit":false,"messageTitle":"Edit Quick Start for the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":30}}},{"hash":"e8204d0636e52282f33fad0730ea652784cd4efb","isMergeCommit":false,"messageTitle":"Add a Use Case: Searching for Patients.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2023-10-05","commitResults":[{"hash":"bae5f4236479c06ecd960c440d56a8740d76d03c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a48eabde62546ac7fa2b3714c669545fe356645a","isMergeCommit":false,"messageTitle":"Add Specialist Management User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":25}}},{"hash":"0bb8941d763e0e5878d90fb0d949da14f0156123","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"f14ec9680cb63148fcdeb2ed53f5a83c1d3264b3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S1-CS2103T-W13-1/master","messageBody":"Updating team code","fileTypesAndContributionMap":{}},{"hash":"db9c238958ccfdc80aeddd43cee62d8f5d67a48e","isMergeCommit":false,"messageTitle":"Add Medical History Field for Patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":191,"deletions":34},"test-code":{"insertions":138,"deletions":23}}},{"hash":"95b839ac983214400049c717a3b7f88a194f7519","isMergeCommit":false,"messageTitle":"Fixing bugs in equal method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":3}}},{"hash":"2abf324116b508f27db8c05faaaeb39159e77104","isMergeCommit":false,"messageTitle":"Resolving Conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":13}}},{"hash":"e5848bcda6052b2fd5b61724e17115da50d0c360","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S1-CS2103T-W13-1/master","messageBody":"Updating the Team Code","fileTypesAndContributionMap":{}},{"hash":"7b184ac23b2ae6cac868c444c8e005053a06a44d","isMergeCommit":false,"messageTitle":"Fix Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"51959ad445b06755053fe2a0732423b881c95255","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":40}}},{"hash":"a6fd480a136921eaf0ed6e642df0c4cd964e6f9a","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":7}}},{"hash":"996257a37b8f2e9af76fae0405fc4c532ad5aab1","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":27}}},{"hash":"275afb032f67be30d5d7259ae73c3c9f05c8779e","isMergeCommit":false,"messageTitle":"Fixing Build Failure","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":7,"deletions":6}}},{"hash":"d87802e46f685e8032dd0bb4360271dd6432a977","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}},{"hash":"f77ca31ec867b080ea7573faa33d6fdb738a4b2c","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"53134411a6ec1ded07799967dbc110560525d536","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"09785f2e14394f724cdb984ec3e56be8eef5abe5","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"c83f4fb24466ce8eb52e3dec490afb1205cc0830","isMergeCommit":false,"messageTitle":"Adding Equals Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":7}}}]},{"date":"2023-10-17","commitResults":[{"hash":"fc0bce9f06237b7dd60250e769f22a096d4d0997","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2324S1-CS2103T-W13-1/master","messageBody":"Update Team Code","fileTypesAndContributionMap":{}},{"hash":"0fcf04d748f8407740dac8a8934f3eda64a613cc","isMergeCommit":false,"messageTitle":"Change the Property of Medical History","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":46},"test-code":{"insertions":41,"deletions":49}}},{"hash":"b639284af36c5adc3b4bb1cbc1726a30770fae5d","isMergeCommit":false,"messageTitle":"Change the Property of Medical History","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"0f4013d25c151aa6f6e7f2c1c2ad9def3c5acb64","isMergeCommit":false,"messageTitle":"Add Testing for MedHistoryContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":93,"deletions":0}}},{"hash":"7d89954a13ed0dc9ad4575a1b940831620ae00e1","isMergeCommit":false,"messageTitle":"Fixing Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":16}}},{"hash":"382873ba95d686099cee76987e8f76e894217b10","isMergeCommit":false,"messageTitle":"Add Testing for JsonAdaptedMedicalHistory Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"d5baf28b38807d38b3f2f31382735cb2fadfed15","isMergeCommit":false,"messageTitle":"Add Testing for MedHistoryContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"7dfa1a8b8ba42f2978cc4967069477803d876d35","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2324S1-CS2103T-W13-1/master","messageBody":"Merging Team Code","fileTypesAndContributionMap":{}},{"hash":"cf399aacd186dfcfc01ee893c23a7a66808948f1","isMergeCommit":false,"messageTitle":"Fixing Bug for Medical History display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}}]}],"alvinlim277":[{"date":"2023-09-25","commitResults":[{"hash":"b4f38f944a87a0e991fd89db6f0305cfaba86816","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Gavino3o/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs.md and add skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"698cab997809f404530e4cf3d054786767e9f710","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":9}}},{"hash":"50e1abc2d48d9ec2cf3ef96bbaa5a4656c7ae150","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-19-UpdateReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b56c54ec5cd7388c3d1ebba4cf45e338371c9c97","isMergeCommit":false,"messageTitle":"Update AboutUs and skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":4}}},{"hash":"08e86788be5929df9c644a39155428951e4018c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027documentation-19-UpdateReadMe\u0027 into documentation-11-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0bd8ab42323122001a69841afd781ee8469944bf","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"95c21d36962b9c0824351e9b465484e7666064ae","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Kokseng1/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs.md. Add kokseng1.png and kokseng1.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"b7b9646eb626dd3b2b6af8d6fca3031bfaec3351","isMergeCommit":false,"messageTitle":"Update \u0027add\u0027 command in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2023-09-27","commitResults":[{"hash":"47a60ff93f00c381d192557f753cc7026506d130","isMergeCommit":false,"messageTitle":"Add command summary for \u0027add\u0027 command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"3a3d1529ca44089414c7b91b46aa0812546042b1","isMergeCommit":false,"messageTitle":"Add \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"bdf440da327ccbe277db543bf67fa6e01e456978","isMergeCommit":false,"messageTitle":"Update \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2023-09-28","commitResults":[{"hash":"bfaed00304abf2661894b5f0060f7716e60a85a6","isMergeCommit":false,"messageTitle":"Fix \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c37db398ccfa44946ddf3969977f7ca4cbe6a19e","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Kokseng1/documentation-34-updateDeveloperGuide","messageBody":"Add \u0027add a patient\u0027 use case in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"dfa5c91cd5189aba1e10ebbbc93ba64112359b9d","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Gavino3o/documentation-34-ListUseCase","messageBody":"Add list command use case in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"4125393661cf77a67079de9503b13bbaac416396","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-34-UpdateDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"1350bea0bace71f87542446a45331e3f41bef9ed","isMergeCommit":true,"messageTitle":"Merge pull request #43 from vansh284/documentation-34-UserStories","messageBody":"Add some user stories in dev guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"c450e63ef751935f90344d133aea158ad6103ce4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Kokseng1/documentation-34-updateDeveloperGuide","messageBody":"update DeveloperGuide to include patient management user stories","fileTypesAndContributionMap":{}},{"hash":"b17ca9ebf59f10560920c3417d319bd02ca813d3","isMergeCommit":false,"messageTitle":"Add data management User Stories to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":19}}}]},{"date":"2023-10-03","commitResults":[{"hash":"2f2e29de3d8105f054783533233ff77cda22dc1c","isMergeCommit":false,"messageTitle":"Add Ui mockup to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"82b1dd24fe2dce03dc3628dde205b169d223380a","isMergeCommit":true,"messageTitle":"Merge pull request #52 from angkyakdifp/branch-user-guide","messageBody":"Add Specialist Management User Guide","fileTypesAndContributionMap":{}},{"hash":"34bfdc830fa98c4469cb710a24bc4abf458b03d8","isMergeCommit":false,"messageTitle":"Update _config.yml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-12","commitResults":[{"hash":"8713685321720f101fec03fef699b9315936c339","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6},"test-code":{"insertions":4,"deletions":3}}},{"hash":"befbb5cb7fd41e24231290b6fc63d5bd4b26f30f","isMergeCommit":false,"messageTitle":"Update PersonType enum and change DeleteCommand","messageBody":"DeleteCommand now executes based on the last/currently\ndisplayed list and is unaffected by personType tags.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":20},"test-code":{"insertions":24,"deletions":22}}},{"hash":"9a809a90b64a72525838de9ddd5bb5accbfda1b3","isMergeCommit":false,"messageTitle":"Fix test failures related to EditCommand","messageBody":"Changes made to the ModelManager class resulted in testcase\nfailures. This commit rectifies them by editing the EditCommand\nclass to update the filtered list appropriately in the model on\nexecution.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":13},"test-code":{"insertions":26,"deletions":25}}},{"hash":"9cf91f1866a9ab07cf5921063413761a70430d88","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"921f43ca2aea65ca7c5cb8ad0ddbd5df5bd5fde4","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"3141d9d0cb8670d7c00ad7753a9b63c816489a6e","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":12,"deletions":4}}}]},{"date":"2023-10-13","commitResults":[{"hash":"fdb461e50f8c8732cb27f77a85264a9870a30241","isMergeCommit":false,"messageTitle":"Rectify Edit and Delete implementation","messageBody":"EditCommand was erroneously edited to take personType as a parameter\nin the previous commits. Its syntax and implementation remain an issue,\nbut the errors have been undone at surface level for now.\n\nDeleteCommand was being parsed with a personType, which is unused in\nimplementation. To resolve this, ParserBasic and ParserComplex classes\nhave been written to better suit the needs as well as aid in testing.\n- Basic commands do not require specifying personType\n- Complex commands require a personType tag\nIt is very likely that we will add more basic commands in the future as\nwell, for example changing user settings, exporting data etc.\n\nAlso fix some bugs with the parsing of different command Patterns\n- Previously Basic commands could also be parsed as Complex\n- This has been fixed by altering the Complex command regex to be more\nrestrictive.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":26},"other":{"insertions":2,"deletions":2},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":139,"deletions":116}}}]},{"date":"2023-10-16","commitResults":[{"hash":"3ddf917bbb0d44f7214d6b0ce950a4b85b01dbb2","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Gavino3o/feature-10-FindByPrefix","messageBody":"Implement FindCommand to search using prefixes","fileTypesAndContributionMap":{}},{"hash":"a4d0fa75ef7164f674db8d2d57fe9c5be2baadea","isMergeCommit":false,"messageTitle":"Change Address to Location","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":113},"other":{"insertions":16,"deletions":16},"test-code":{"insertions":186,"deletions":186}}},{"hash":"49d8cf7d3f81060cf877d751960cb72b66aadb92","isMergeCommit":false,"messageTitle":"Start making Location exclusive to Specialists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":78},"other":{"insertions":14,"deletions":7},"test-code":{"insertions":97,"deletions":131}}},{"hash":"1788e7d84fcb4334ae585c137c60bf95ef4d630d","isMergeCommit":false,"messageTitle":"Fix AddCommand bug and checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1},"test-code":{"insertions":47,"deletions":24}}},{"hash":"af3dc9d922bcf989f21e3532705253bb035b2c6d","isMergeCommit":false,"messageTitle":"Fix command help messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"71fc7db77c0f3cb6fee866930ec2e5b5bd9063f7","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":2}}},{"hash":"8f7e8284ee311cdb08b91f0bb70a884119ef802d","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d43ece44087706b2c4bba07d2be95b4d8430061","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Kokseng1":{"docs":56,"functional-code":343,"test-code":188},"vansh284":{"docs":74,"functional-code":660,"test-code":686},"Gavino3o":{"docs":90,"functional-code":393,"test-code":386},"angkyakdifp":{"docs":66,"functional-code":299,"test-code":293},"alvinlim277":{"docs":76,"functional-code":211,"test-code":364}},"authorContributionVariance":{"Kokseng1":22105.656,"vansh284":98403.26,"Gavino3o":22986.861,"angkyakdifp":21373.938,"alvinlim277":45922.62},"authorDisplayNameMap":{"Kokseng1":"CS2103T-W13-1 NG K..SENG","vansh284":"CS2103T-W13-1 VANS..NATH","Gavino3o":"CS2103T-W13-1 GAVI.. ZHE","angkyakdifp":"CS2103T-W13-1 ANGK..LANA","alvinlim277":"CS2103T-W13-1 LIM ..LVIN"}} +{"authorDailyContributionsMap":{"Kokseng1":[{"date":"2023-09-25","commitResults":[{"hash":"5aa5a7ca0a8a9c04346b7c4295c35d063a7114bd","isMergeCommit":false,"messageTitle":"Update AboutUs.md. Add kokseng1.png and kokseng1.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":5}}},{"hash":"7366af756b3845b4e1527773d13136efbbbec4f0","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"44deeae6c5436ae631ebf530cf0fefcf6fb1b690","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"56337199c6dc53790c3697d88bd517e8813ba9cc","isMergeCommit":false,"messageTitle":"Update UserGuide.md. Add Uimockup.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c93db4167746d17ac4cf1e67ad9ef666d763f68","isMergeCommit":true,"messageTitle":"Merge pull request #32 from vansh284/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs and add skeletal PPP","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"3557aff181e8e0ec0d9587b003bd22009844a65d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":4}}},{"hash":"2e3bfdd394bdd5b9a3fdaa772e21a9babb2836c1","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-28","commitResults":[{"hash":"78cd65af3708352cbbf45157ababea3ed965c246","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Corrected mistakes brought up in Gavin and Vansh\u0027s comments","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8ea8e72a8a9c720defb173753b256acc3644f599","isMergeCommit":true,"messageTitle":"Merge pull request #42 from alvinlim277/documentation-34-UpdateDeveloperGuide","messageBody":"Add \u0027exit program\u0027 use case in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"5ff1ecc8d3651dcb7136a44eb9435f7193db644e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include patient management user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":13}}},{"hash":"edd1860c018a202a6552663c4cadfb4355c81a9c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include patient management user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"f84c1f1e48ec2e8621f5bf624fc92e4870d736f9","isMergeCommit":true,"messageTitle":"merge changes from remote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5e912fc0e3adfcb0088b70f16e3d0ff2803e9e7b","isMergeCommit":false,"messageTitle":"add patient management user stories to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":13}}}]},{"date":"2023-10-09","commitResults":[{"hash":"f685e634889d4c3c4bee22dd1f67b48c503f8c9f","isMergeCommit":true,"messageTitle":"merge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"adb10800385b94a08871b67f605b21ff3cbadfe3","isMergeCommit":false,"messageTitle":"Add \"Specialty\" field for specialists. Wherever a Specialist object is present, it should have a non null Specialty field. Users can now add or edit any specialist\u0027s specialty.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":202,"deletions":74},"test-code":{"insertions":77,"deletions":74}}},{"hash":"4888d10b2921cf0ddeb5df9b92f095f1f5689862","isMergeCommit":false,"messageTitle":"resolved checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":41},"test-code":{"insertions":44,"deletions":4}}},{"hash":"1c89b2b0fbe6b09103ee05b94645025acce7c202","isMergeCommit":false,"messageTitle":"resolved more checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":25}}},{"hash":"6844a9819cf217b337c4832ddfc3881cb3e9c553","isMergeCommit":false,"messageTitle":"update tests to meet codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":97,"deletions":9}}}]},{"date":"2023-10-12","commitResults":[{"hash":"fc3382d7d06d1ebd71d7787e95b61be55e408eae","isMergeCommit":false,"messageTitle":"updated toString methods to be less repetitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":17}}},{"hash":"63c9c32602126196fd24f37632acc7ca6911a629","isMergeCommit":false,"messageTitle":"Update StringUtil.java","messageBody":"corrected javadoc","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-16","commitResults":[{"hash":"975ff79008266862f7a4f0d4b6c960fb60b90d1f","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":67},"test-code":{"insertions":25,"deletions":18}}}]},{"date":"2023-10-17","commitResults":[{"hash":"eab88efcb395dd6f258431c8473f44ff789c82cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-65-ErrorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3502d864bae56f5bd78819e16f636606427a0509","isMergeCommit":false,"messageTitle":"conflict management","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12},"test-code":{"insertions":7,"deletions":7}}},{"hash":"c3193d1246c24c006ac8659776734d34ae1a2bf3","isMergeCommit":false,"messageTitle":"add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"cd89326acb51d05da40c5512be8d1ce62b0af596","isMergeCommit":false,"messageTitle":"change unused strings in add, edit and find to private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":13}}},{"hash":"3c0ab12dae402a2b2e90ef37deec809187dc0c8b","isMergeCommit":true,"messageTitle":"Merge pull request #76 from angkyakdifp/branch-med-history-2","messageBody":"Enable Medical History to be optional and Multiple value","fileTypesAndContributionMap":{}},{"hash":"49022a819f7f87e5a4b74c3efb8e0b8a4a963520","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-65-ErrorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ec942fb2eea556cdc7eb17579304f8b03184d6a","isMergeCommit":false,"messageTitle":"merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"11b6740f64151c1c6e19bf5245487dd87af93380","isMergeCommit":false,"messageTitle":"checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]}],"vansh284":[{"date":"2023-09-25","commitResults":[{"hash":"d97740beb4d0b14be685f1a744ec53559f98340c","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"58891d6677bc5243754a43f4e2f74afa04ac3c1e","isMergeCommit":false,"messageTitle":"Add skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}},{"hash":"7165a173e342e4a6f291976425aacd8e7205184c","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Kokseng1/documentation-18-UpdateUserGuide","messageBody":"Update UserGuide.md. and add Uimockup.png","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"22ab15fd6210c06c026b8666d6f470192d7c6331","isMergeCommit":false,"messageTitle":"Update user guide delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":43}}},{"hash":"950409b4ccae5abf0853786479a53ab05e4729d4","isMergeCommit":false,"messageTitle":"Add NFRs, target user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":22}}}]},{"date":"2023-09-27","commitResults":[{"hash":"8b47cafbf2239aecc6d41c5db4d5ada5aee3211b","isMergeCommit":false,"messageTitle":"Rectify grammatical error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10d8b1a2bad6944fef0d70dbd62cc2f6a91ed82d","isMergeCommit":false,"messageTitle":"Rectify grammatical errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"9e62bd58ea11f5d630f5defac0f4ee64908d0687","isMergeCommit":true,"messageTitle":"Merge pull request #39 from alvinlim277/documentation-18-UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"318f82ea2b323af572e86276cce42e129f7de5a2","isMergeCommit":true,"messageTitle":"Merge pull request #35 from vansh284/documentation-18-UpdateDeleteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92354751a60e1a0d480610f7c4f8426c97f10676","isMergeCommit":true,"messageTitle":"Merge pull request #36 from vansh284/documentation-34-nfr","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"e664a2463e58fe7c94311e3e66f82f2bf4091aa7","isMergeCommit":false,"messageTitle":"Add some user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"2ed61efff239dbd0e80ddfa8fb4397de28d46199","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Gavino3o/documentation-34-AddUserStories","messageBody":"Add Customization and Shortcut User Stories","fileTypesAndContributionMap":{}},{"hash":"06fb05f348e4630dbed6ccc67b92f4efb3951e05","isMergeCommit":true,"messageTitle":"Make minor changes","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"0699c1b1f1b75857f82ce8b1bbe6263ae3321d9e","isMergeCommit":true,"messageTitle":"Merge pull request #46 from alvinlim277/documentation-34-UpdateDeveloperGuide","messageBody":"Add data management User Stories to Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"92e8454ce3c2b7f2bcab7e6fc194d666f4425b96","isMergeCommit":true,"messageTitle":"Merge pull request #47 from alvinlim277/documentation-19-UpdateReadMe","messageBody":"Add Ui mockup to README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-05","commitResults":[{"hash":"fe0d6d4d04951613b8623a081ac4ea8912b100f6","isMergeCommit":true,"messageTitle":"Merge pull request #50 from angkyakdifp/master","messageBody":"Edit the Quick Start for the User Guide","fileTypesAndContributionMap":{}},{"hash":"2e5f9fe5deb9f0a059c49952b4da4fb77b81385b","isMergeCommit":true,"messageTitle":"Merge pull request #57 from alvinlim277/documentation-56-UpdateConfig","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2023-10-06","commitResults":[{"hash":"67293a5bdb4e4021db61c61e60ff052609dfe803","isMergeCommit":false,"messageTitle":"Separate people into patients and specialist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":607,"deletions":109},"other":{"insertions":40,"deletions":33},"test-code":{"insertions":567,"deletions":164}}},{"hash":"61146a50c1c8f760e343d89b1c8c4ede89fd0e9f","isMergeCommit":false,"messageTitle":"Add tests to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":71}}}]},{"date":"2023-10-07","commitResults":[{"hash":"ea1494d0d78455ad4cfaeebafaa7dd5bcaf4b565","isMergeCommit":false,"messageTitle":"Add tests to cover edit command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-09","commitResults":[{"hash":"939afeb730a036473899425a2c4f3a0563a85d0c","isMergeCommit":true,"messageTitle":"Merge pull request #58 from vansh284/story-38-PeopleTypes","messageBody":"Deal with patients and specialist records separately in the address book","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"f249bb1321574386848a4678701b422fdd6f7da9","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Kokseng1/story-54-AddSpecialistFields","messageBody":"Track specialist by specialty","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"1be617bbf51156c2305ce2c425b0b2ec44ef76d5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from alvinlim277/feature-61-DisplayRecordsSeparately","messageBody":"Display patient and specialist records separately when listing","fileTypesAndContributionMap":{}},{"hash":"44fde4673d8c7c883e825dc1bcba8906b0e3a517","isMergeCommit":true,"messageTitle":"Merge pull request #64 from angkyakdifp/branch-addMedicalHistory","messageBody":"Add medical history field for patient","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"e32ec5e735ed08f133a62e44eea881ccc5bf51ad","isMergeCommit":false,"messageTitle":"Add age field to patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":166,"deletions":46},"test-code":{"insertions":224,"deletions":62}}}]},{"date":"2023-10-16","commitResults":[{"hash":"a887af64ecd34f878cd4fd459eb7e76f2a150651","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:vansh284/tp into story-37-PatientAge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1c405b302f68d1d43394265c7b52749faf3b1ce","isMergeCommit":false,"messageTitle":"Add predicate to allow finding patient by age","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":4}}},{"hash":"53322ce50e5115ff8c6c203980c72f157c33af20","isMergeCommit":false,"messageTitle":"Add tests for parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":5}}},{"hash":"21516fecd8eb78dc14548ac115a6d39c1bfc1e84","isMergeCommit":false,"messageTitle":"Fix error in header comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"646455340d15fb1fef475fa3f86517e566479584","isMergeCommit":true,"messageTitle":"Merge pull request #72 from vansh284/story-37-PatientAge","messageBody":"Add age field to patients","fileTypesAndContributionMap":{}},{"hash":"3c19509461357ca01d7e380e7a3a465b50449a30","isMergeCommit":true,"messageTitle":"Merge pull request #73 from alvinlim277/feature-67-LocationField","messageBody":"Change address to location and make it exclusive to specialists","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"2ec56a4684bb1d0f35b85c909824751a7cf99e17","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Gavino3o/test-71-FindCommandCodeCov","messageBody":"Improve Code Coverage of Find Command","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"c75845fee715c90ca97d07ee39b3d2c15a42214b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Kokseng1/feature-65-ErrorMessages","messageBody":"Improve error messages","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"3c1e92fd45d0ed17b7453b9af10520b04649ed5c","isMergeCommit":true,"messageTitle":"Merge pull request #82 from angkyakdifp/master","messageBody":"Fix bug for medical history display.","fileTypesAndContributionMap":{}},{"hash":"1d81005ab03082b504656a4fbab7b7333005db3f","isMergeCommit":false,"messageTitle":"Update version number for trial JAR release","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"caac94588a5b79342dcc9ccafd3cab715898d7cf","isMergeCommit":true,"messageTitle":"Merge pull request #81 from Gavino3o/bugfix-78-FindCommandInvalidArgParseError","messageBody":"Fix find command invalid argument parsing","fileTypesAndContributionMap":{}}]}],"Gavino3o":[{"date":"2023-09-25","commitResults":[{"hash":"4738c4459f4effb014394d3e8963d1874d7ad31d","isMergeCommit":false,"messageTitle":"Update AboutUs.md and add skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"6f0c5fa67010d1dc33928611b6439266b8f17e52","isMergeCommit":false,"messageTitle":"Update \u0027list\u0027 feature information in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"7f2a4def51f799cf8bb67954d1341b4b13e251c3","isMergeCommit":true,"messageTitle":"Merge pull request #21 from alvinlim277/documentation-19-UpdateReadMe","messageBody":"Update README, AboutUs and skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"8002797e6569a98ecc2fb140c3b7f1a176b0e844","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Gavino3o/documentation-18-InitialUG","messageBody":"Update \u0027list\u0027 feature information in UG","fileTypesAndContributionMap":{}}]},{"date":"2023-09-27","commitResults":[{"hash":"13b5156b7ecf9e97b539a616911e53b0d7bf6a73","isMergeCommit":false,"messageTitle":"Add list command use case in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}}]},{"date":"2023-09-29","commitResults":[{"hash":"f10a677f701833c96a17036ac52862a25cad4840","isMergeCommit":false,"messageTitle":"Add Customization and Shortcut User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":8}}}]},{"date":"2023-10-13","commitResults":[{"hash":"ed5e08b18c9c09b496fd5f614e8e3f94b32bdc03","isMergeCommit":false,"messageTitle":"Implement Find Specialist by prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":4},"other":{"insertions":2,"deletions":1},"test-code":{"insertions":6,"deletions":5}}},{"hash":"2a7f1afeb7ae897f8d06e441d5514097de156885","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-10-FindByPrefix","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"741ab0c60991e3c49532b513c37d73582a6bec99","isMergeCommit":false,"messageTitle":"Implement parsePatient for FindCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":33}}},{"hash":"9b822f1ec5ca2f16cc9513ffb1ab4fe4dddd230e","isMergeCommit":false,"messageTitle":"Add JavaDocs and Checkstyle for Predicates and FindCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":30}}},{"hash":"b746b054d18eb4b9f8eabf0ac9271f5fcce0413b","isMergeCommit":false,"messageTitle":"Fix import order in TagContainsKeywordsPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"2fe2ed92a95d98ad895c1d691c83965cafa44c83","isMergeCommit":false,"messageTitle":"Fix incorrect import order in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":4}}}]},{"date":"2023-10-14","commitResults":[{"hash":"4c27f61c3bd2d27413c730ab36efe0aeb3e45cde","isMergeCommit":false,"messageTitle":"Modify tests for new FindCommand Syntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":3},"test-code":{"insertions":84,"deletions":20}}}]},{"date":"2023-10-16","commitResults":[{"hash":"80f0802f8a83cd9f25837bc22d31174e668e4e72","isMergeCommit":false,"messageTitle":"Improve readability of Lambda Functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"531c2a60455896d80860ef716f2163b0e1975c42","isMergeCommit":false,"messageTitle":"Add toString and empty argument tests for Find Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":5}}},{"hash":"9f01a6558f09a65529cf5bbe5bf5070e4c893447","isMergeCommit":false,"messageTitle":"Add FindPredicateMap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0}}},{"hash":"6ba7d07c5f3648c439247b9f5bedc29b6c2bd3c5","isMergeCommit":false,"messageTitle":"Implement Partial FindCommand Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":63,"deletions":5}}},{"hash":"ffd78b111d0119ee37daf96ad422945980653cf6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into test-71-FindCommandCodeCov","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"e07868bcba10bd9395df4fe4ad479b50d252a713","isMergeCommit":false,"messageTitle":"Incorporate new FindPredicateMap into tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":49},"test-code":{"insertions":132,"deletions":136}}},{"hash":"3c60313ee7386378d7abb2396fdac84eab00d798","isMergeCommit":false,"messageTitle":"Fix Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":13}}},{"hash":"716c07d51a85ad3b728d5ff2257e39f4f39561c3","isMergeCommit":false,"messageTitle":"Empty Commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"13b9702f3cecbcd3ba573c3f09a308b35b8775be","isMergeCommit":false,"messageTitle":"Add FindCommandParser Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":116,"deletions":11}}},{"hash":"6dac05d58fd6d44aaf9be94619629dad44ba8242","isMergeCommit":false,"messageTitle":"Update FindCommand in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"b728a48bcd869aa2a5b7ffb5a7c029b4fda8740c","isMergeCommit":false,"messageTitle":"Modify FindCommandParserTest to use existing Parsing Util","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":34}}},{"hash":"55b5e2a04ba48560a90a570cfa431cbc3f6cea7a","isMergeCommit":false,"messageTitle":"Remove unused imports in tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2023-10-19","commitResults":[{"hash":"41e7f4b43d1ad53e0ce9e6ecb7bf52184999761f","isMergeCommit":false,"messageTitle":"Fix Find Command Invalid Argument Parsing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-20","commitResults":[{"hash":"22ce7c1ddaa23178fa9ff38ca49a96b36e8ea6be","isMergeCommit":false,"messageTitle":"Add Invalid Preamble Test for Find Command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}}]},{"date":"2023-10-21","commitResults":[{"hash":"f3372dbca040160322272f4c450240930f3b1d7d","isMergeCommit":true,"messageTitle":"Merge pull request #83 from vansh284/update-version-number","messageBody":"Update version number for trial JAR release","tags":["v1.2.1"],"fileTypesAndContributionMap":{}},{"hash":"c0104fd284c1237b6f3dbbdc95a8d5cea8a91554","isMergeCommit":false,"messageTitle":"Update FindCommand Expected Behavior in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]}],"angkyakdifp":[{"date":"2023-10-04","commitResults":[{"hash":"2655a71c363ba4e72daf0e7b6f14da6e913f0b1a","isMergeCommit":false,"messageTitle":"Add Skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":51}}},{"hash":"daa4c38a78e8686aa83303f7bdc2d0de78d0f086","isMergeCommit":false,"messageTitle":"Add Quick Start Use Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}},{"hash":"622f97245909e1a1ed015c3cbfe590637ac8b06d","isMergeCommit":false,"messageTitle":"Edit Quick Start for the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":30}}},{"hash":"e8204d0636e52282f33fad0730ea652784cd4efb","isMergeCommit":false,"messageTitle":"Add a Use Case: Searching for Patients.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2023-10-05","commitResults":[{"hash":"bae5f4236479c06ecd960c440d56a8740d76d03c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a48eabde62546ac7fa2b3714c669545fe356645a","isMergeCommit":false,"messageTitle":"Add Specialist Management User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":25}}},{"hash":"0bb8941d763e0e5878d90fb0d949da14f0156123","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2023-10-13","commitResults":[{"hash":"f14ec9680cb63148fcdeb2ed53f5a83c1d3264b3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S1-CS2103T-W13-1/master","messageBody":"Updating team code","fileTypesAndContributionMap":{}},{"hash":"db9c238958ccfdc80aeddd43cee62d8f5d67a48e","isMergeCommit":false,"messageTitle":"Add Medical History Field for Patient","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":191,"deletions":34},"test-code":{"insertions":138,"deletions":23}}},{"hash":"95b839ac983214400049c717a3b7f88a194f7519","isMergeCommit":false,"messageTitle":"Fixing bugs in equal method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":3}}},{"hash":"2abf324116b508f27db8c05faaaeb39159e77104","isMergeCommit":false,"messageTitle":"Resolving Conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":13}}},{"hash":"e5848bcda6052b2fd5b61724e17115da50d0c360","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S1-CS2103T-W13-1/master","messageBody":"Updating the Team Code","fileTypesAndContributionMap":{}},{"hash":"7b184ac23b2ae6cac868c444c8e005053a06a44d","isMergeCommit":false,"messageTitle":"Fix Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"51959ad445b06755053fe2a0732423b881c95255","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":40}}},{"hash":"a6fd480a136921eaf0ed6e642df0c4cd964e6f9a","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":7}}},{"hash":"996257a37b8f2e9af76fae0405fc4c532ad5aab1","isMergeCommit":false,"messageTitle":"Improving Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":27}}},{"hash":"275afb032f67be30d5d7259ae73c3c9f05c8779e","isMergeCommit":false,"messageTitle":"Fixing Build Failure","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":7,"deletions":6}}},{"hash":"d87802e46f685e8032dd0bb4360271dd6432a977","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}},{"hash":"f77ca31ec867b080ea7573faa33d6fdb738a4b2c","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"53134411a6ec1ded07799967dbc110560525d536","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"09785f2e14394f724cdb984ec3e56be8eef5abe5","isMergeCommit":false,"messageTitle":"Fixing Minor Error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"c83f4fb24466ce8eb52e3dec490afb1205cc0830","isMergeCommit":false,"messageTitle":"Adding Equals Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":7}}}]},{"date":"2023-10-17","commitResults":[{"hash":"fc0bce9f06237b7dd60250e769f22a096d4d0997","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2324S1-CS2103T-W13-1/master","messageBody":"Update Team Code","fileTypesAndContributionMap":{}},{"hash":"0fcf04d748f8407740dac8a8934f3eda64a613cc","isMergeCommit":false,"messageTitle":"Change the Property of Medical History","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":46},"test-code":{"insertions":41,"deletions":49}}},{"hash":"b639284af36c5adc3b4bb1cbc1726a30770fae5d","isMergeCommit":false,"messageTitle":"Change the Property of Medical History","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"0f4013d25c151aa6f6e7f2c1c2ad9def3c5acb64","isMergeCommit":false,"messageTitle":"Add Testing for MedHistoryContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":93,"deletions":0}}},{"hash":"7d89954a13ed0dc9ad4575a1b940831620ae00e1","isMergeCommit":false,"messageTitle":"Fixing Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":16}}},{"hash":"382873ba95d686099cee76987e8f76e894217b10","isMergeCommit":false,"messageTitle":"Add Testing for JsonAdaptedMedicalHistory Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"d5baf28b38807d38b3f2f31382735cb2fadfed15","isMergeCommit":false,"messageTitle":"Add Testing for MedHistoryContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-20","commitResults":[{"hash":"7dfa1a8b8ba42f2978cc4967069477803d876d35","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2324S1-CS2103T-W13-1/master","messageBody":"Merging Team Code","fileTypesAndContributionMap":{}},{"hash":"cf399aacd186dfcfc01ee893c23a7a66808948f1","isMergeCommit":false,"messageTitle":"Fixing Bug for Medical History display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}}]}],"alvinlim277":[{"date":"2023-09-25","commitResults":[{"hash":"b4f38f944a87a0e991fd89db6f0305cfaba86816","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Gavino3o/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs.md and add skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"698cab997809f404530e4cf3d054786767e9f710","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":9}}},{"hash":"50e1abc2d48d9ec2cf3ef96bbaa5a4656c7ae150","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-19-UpdateReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b56c54ec5cd7388c3d1ebba4cf45e338371c9c97","isMergeCommit":false,"messageTitle":"Update AboutUs and skeletal PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":4}}},{"hash":"08e86788be5929df9c644a39155428951e4018c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027documentation-19-UpdateReadMe\u0027 into documentation-11-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0bd8ab42323122001a69841afd781ee8469944bf","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"95c21d36962b9c0824351e9b465484e7666064ae","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Kokseng1/documentation-11-UpdateAboutUs","messageBody":"Update AboutUs.md. Add kokseng1.png and kokseng1.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-26","commitResults":[{"hash":"b7b9646eb626dd3b2b6af8d6fca3031bfaec3351","isMergeCommit":false,"messageTitle":"Update \u0027add\u0027 command in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2023-09-27","commitResults":[{"hash":"47a60ff93f00c381d192557f753cc7026506d130","isMergeCommit":false,"messageTitle":"Add command summary for \u0027add\u0027 command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"3a3d1529ca44089414c7b91b46aa0812546042b1","isMergeCommit":false,"messageTitle":"Add \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"bdf440da327ccbe277db543bf67fa6e01e456978","isMergeCommit":false,"messageTitle":"Update \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2023-09-28","commitResults":[{"hash":"bfaed00304abf2661894b5f0060f7716e60a85a6","isMergeCommit":false,"messageTitle":"Fix \u0027exit program\u0027 use case in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c37db398ccfa44946ddf3969977f7ca4cbe6a19e","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Kokseng1/documentation-34-updateDeveloperGuide","messageBody":"Add \u0027add a patient\u0027 use case in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"dfa5c91cd5189aba1e10ebbbc93ba64112359b9d","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Gavino3o/documentation-34-ListUseCase","messageBody":"Add list command use case in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"4125393661cf77a67079de9503b13bbaac416396","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-34-UpdateDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"1350bea0bace71f87542446a45331e3f41bef9ed","isMergeCommit":true,"messageTitle":"Merge pull request #43 from vansh284/documentation-34-UserStories","messageBody":"Add some user stories in dev guide","fileTypesAndContributionMap":{}}]},{"date":"2023-10-02","commitResults":[{"hash":"c450e63ef751935f90344d133aea158ad6103ce4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Kokseng1/documentation-34-updateDeveloperGuide","messageBody":"update DeveloperGuide to include patient management user stories","fileTypesAndContributionMap":{}},{"hash":"b17ca9ebf59f10560920c3417d319bd02ca813d3","isMergeCommit":false,"messageTitle":"Add data management User Stories to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":19}}}]},{"date":"2023-10-03","commitResults":[{"hash":"2f2e29de3d8105f054783533233ff77cda22dc1c","isMergeCommit":false,"messageTitle":"Add Ui mockup to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-05","commitResults":[{"hash":"82b1dd24fe2dce03dc3628dde205b169d223380a","isMergeCommit":true,"messageTitle":"Merge pull request #52 from angkyakdifp/branch-user-guide","messageBody":"Add Specialist Management User Guide","fileTypesAndContributionMap":{}},{"hash":"34bfdc830fa98c4469cb710a24bc4abf458b03d8","isMergeCommit":false,"messageTitle":"Update _config.yml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2023-10-12","commitResults":[{"hash":"8713685321720f101fec03fef699b9315936c339","isMergeCommit":false,"messageTitle":"Update ListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6},"test-code":{"insertions":4,"deletions":3}}},{"hash":"befbb5cb7fd41e24231290b6fc63d5bd4b26f30f","isMergeCommit":false,"messageTitle":"Update PersonType enum and change DeleteCommand","messageBody":"DeleteCommand now executes based on the last/currently\ndisplayed list and is unaffected by personType tags.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":20},"test-code":{"insertions":24,"deletions":22}}},{"hash":"9a809a90b64a72525838de9ddd5bb5accbfda1b3","isMergeCommit":false,"messageTitle":"Fix test failures related to EditCommand","messageBody":"Changes made to the ModelManager class resulted in testcase\nfailures. This commit rectifies them by editing the EditCommand\nclass to update the filtered list appropriately in the model on\nexecution.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":13},"test-code":{"insertions":26,"deletions":25}}},{"hash":"9cf91f1866a9ab07cf5921063413761a70430d88","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"921f43ca2aea65ca7c5cb8ad0ddbd5df5bd5fde4","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"3141d9d0cb8670d7c00ad7753a9b63c816489a6e","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":12,"deletions":4}}}]},{"date":"2023-10-13","commitResults":[{"hash":"fdb461e50f8c8732cb27f77a85264a9870a30241","isMergeCommit":false,"messageTitle":"Rectify Edit and Delete implementation","messageBody":"EditCommand was erroneously edited to take personType as a parameter\nin the previous commits. Its syntax and implementation remain an issue,\nbut the errors have been undone at surface level for now.\n\nDeleteCommand was being parsed with a personType, which is unused in\nimplementation. To resolve this, ParserBasic and ParserComplex classes\nhave been written to better suit the needs as well as aid in testing.\n- Basic commands do not require specifying personType\n- Complex commands require a personType tag\nIt is very likely that we will add more basic commands in the future as\nwell, for example changing user settings, exporting data etc.\n\nAlso fix some bugs with the parsing of different command Patterns\n- Previously Basic commands could also be parsed as Complex\n- This has been fixed by altering the Complex command regex to be more\nrestrictive.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":26},"other":{"insertions":2,"deletions":2},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":139,"deletions":116}}}]},{"date":"2023-10-16","commitResults":[{"hash":"3ddf917bbb0d44f7214d6b0ce950a4b85b01dbb2","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Gavino3o/feature-10-FindByPrefix","messageBody":"Implement FindCommand to search using prefixes","fileTypesAndContributionMap":{}},{"hash":"a4d0fa75ef7164f674db8d2d57fe9c5be2baadea","isMergeCommit":false,"messageTitle":"Change Address to Location","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":113},"other":{"insertions":16,"deletions":16},"test-code":{"insertions":186,"deletions":186}}},{"hash":"49d8cf7d3f81060cf877d751960cb72b66aadb92","isMergeCommit":false,"messageTitle":"Start making Location exclusive to Specialists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":78},"other":{"insertions":14,"deletions":7},"test-code":{"insertions":97,"deletions":131}}},{"hash":"1788e7d84fcb4334ae585c137c60bf95ef4d630d","isMergeCommit":false,"messageTitle":"Fix AddCommand bug and checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1},"test-code":{"insertions":47,"deletions":24}}},{"hash":"af3dc9d922bcf989f21e3532705253bb035b2c6d","isMergeCommit":false,"messageTitle":"Fix command help messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"71fc7db77c0f3cb6fee866930ec2e5b5bd9063f7","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":2}}},{"hash":"8f7e8284ee311cdb08b91f0bb70a884119ef802d","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d43ece44087706b2c4bba07d2be95b4d8430061","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":2}}}]},{"date":"2023-10-23","commitResults":[{"hash":"e9a9416d447364186d07952c3dc45812ca2915a6","isMergeCommit":false,"messageTitle":"Improve find command flexibility","messageBody":"Change find command so that it does a substring search for\ncertain parameters that are inconvenient to query by whole words.\n\nSpecifically:\n- Name (Searching by short forms of long names)\n- Email (Searching for emails without having to type out domain\nnames)\n- Location (Searching for long addresses made easier)\n- Phone (Searching for people by phone possible even if the\nwhole phone number is not memorised)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":4},"docs":{"insertions":18,"deletions":11},"test-code":{"insertions":71,"deletions":0}}},{"hash":"a27a4cec4387103216e00e58be4685f36a057cf7","isMergeCommit":false,"messageTitle":"Fix usage message error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"917ca1d9259f495af08abb3646c1b99b430fa65f","isMergeCommit":false,"messageTitle":"Fix testing and checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":18,"deletions":11}}}]},{"date":"2023-10-24","commitResults":[{"hash":"dc4d32fdcf75549a2b51013718da616d9f698716","isMergeCommit":false,"messageTitle":"Update substring search behaviour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"docs":{"insertions":6,"deletions":6}}},{"hash":"b08cfd16e8e325fcf9b4754755b0cb3148de505f","isMergeCommit":true,"messageTitle":"Merge pull request #88 from alvinlim277/enhancement-87-FindCommand","messageBody":"Improve find command flexibility","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kokseng1":{"docs":56,"functional-code":337,"test-code":188},"vansh284":{"docs":74,"functional-code":660,"test-code":686},"Gavino3o":{"docs":88,"functional-code":390,"test-code":386},"angkyakdifp":{"docs":66,"functional-code":298,"test-code":293},"alvinlim277":{"docs":90,"functional-code":249,"test-code":445}},"authorContributionVariance":{"Kokseng1":20261.424,"vansh284":90042.95,"Gavino3o":21174.521,"angkyakdifp":19604.469,"alvinlim277":42326.35},"authorDisplayNameMap":{"Kokseng1":"CS2103T-W13-1 NG K..SENG","vansh284":"CS2103T-W13-1 VANS..NATH","Gavino3o":"CS2103T-W13-1 GAVI.. ZHE","angkyakdifp":"CS2103T-W13-1 ANGK..LANA","alvinlim277":"CS2103T-W13-1 LIM ..LVIN"}} diff --git a/AY2324S1-CS2103T-W15-2_tp_master/authorship.json b/AY2324S1-CS2103T-W15-2_tp_master/authorship.json index 3be90443..9fc63380 100644 --- a/AY2324S1-CS2103T-W15-2_tp_master/authorship.json +++ b/AY2324S1-CS2103T-W15-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"# ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions)","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"## Introducing our product - ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"ProfBook provides easy management of tasks, group schedules, and notes for every tutorial slot and group. A CS professor friendly platform to keep updated and informed with notifications and profile pictures of your students for a personal touch and easy recognition of students during lessons. ","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"* This is an application for CS professor to manage tasks, group schedules, and notes of every tutorial slot and group effectively.","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"* It is named `ProfBook` because it aims to help professors to keep track of the many tutorial groups as well as the many deadlines and submission.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"**Features**","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"* Create Todo task for student or group of student","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"* Create Deadline task for student or group of student","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"* Create a group and move student into a group","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"* Mark task done for every student in a group","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"* Add profile pictures of students","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"* Store notes or links related to each group or tutorial","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"NgChunMan":20,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" archiveFileName \u003d \u0027profbook.jar\u0027","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"mingyuanc":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"You can reach us at the email `nidhish.k[at]comp.nus.edu.sg`","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"### Nidhish Krishnan","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/nid21cs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/nid21cs)]","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/nid21cs.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"* Role: Developer","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Team lead + Scheduling and tracking","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"### Ng Chun Man","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/ngchunman.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/ngchunman)]","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/ngchunman.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Documentation + Deliverables and deadlines","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"### Ching Ming Yuan","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/mingyuanc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/mingyuanc)] ","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/mingyuanc.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Testing + IntelliJ expert","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"### Loo Mei Lin Zann","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/zannloo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/zannloo)]","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/zannloo.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Code quality + General admin","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"### Nereus Ng Wei Bin","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/nereuswb922.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/nereuswb922)]","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/nereuswb922.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Integration + Git expert","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":27,"-":33}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"Nid21cs"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"Nid21cs"},"content":"* has a need to manage various tutorial groups","lastModifiedDate":"2023-09-27"},{"lineNumber":262,"author":{"gitId":"Nid21cs"},"content":"* has to keep track of deadlines and assign tasks to groups as well as individual students","lastModifiedDate":"2023-09-27"},{"lineNumber":263,"author":{"gitId":"Nid21cs"},"content":"* prefer and is used to using cli and linux commands","lastModifiedDate":"2023-09-27"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"Nid21cs"},"content":"**Value proposition**: Keep track of tutorial groups and students deadlines and tasks efficiently with an interface that will be faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-09-27"},{"lineNumber":268,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":269,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"Nid21cs"},"content":"| Priority level | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2023-09-27"},{"lineNumber":277,"author":{"gitId":"Nid21cs"},"content":"|----------------|------------------|-----------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | take advantage of existing linux skills | be more efficient in using the application |","lastModifiedDate":"2023-09-27"},{"lineNumber":280,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | delete a student | remove students that I no longer need |","lastModifiedDate":"2023-09-27"},{"lineNumber":281,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create deadlines for student | keep track of when assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":282,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo task for student | keep track of which label they are at |","lastModifiedDate":"2023-09-27"},{"lineNumber":283,"author":{"gitId":"Nid21cs"},"content":" | `* * *` | new user | create deadline for a group | keep track of when group specific assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":284,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo for a group | keep track of the progress of each group relative to others |","lastModifiedDate":"2023-09-27"},{"lineNumber":285,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create deadline for a tutorial group | keep track of when tutorial specific assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":286,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo tasks for a tutorial group | keep track of the progress of each tutorial group relative to others |","lastModifiedDate":"2023-09-27"},{"lineNumber":287,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | add time to a task | i can record when a task needs to be done |","lastModifiedDate":"2023-09-27"},{"lineNumber":288,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | set alerts and notification | I can receive the notifications of the task |","lastModifiedDate":"2023-09-27"},{"lineNumber":289,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | see the pending task that has the next earliest deadline | i can know what do do next |","lastModifiedDate":"2023-09-27"},{"lineNumber":290,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the profile picture of students | I can better remember them |","lastModifiedDate":"2023-09-27"},{"lineNumber":291,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the profile picture of students | I can better remember them |","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the matriculation number of students | I can update their grade based on the matriculation number |","lastModifiedDate":"2023-09-27"},{"lineNumber":293,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create student profile | manage information of a specific student |","lastModifiedDate":"2023-09-27"},{"lineNumber":294,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create group | manage information of a specific group |","lastModifiedDate":"2023-09-27"},{"lineNumber":295,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create tutorial slot | manage information fo a specific tutorial slot |","lastModifiedDate":"2023-09-27"},{"lineNumber":296,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | search for a student/tutorial group by name | pull up students/tutorial groups without having to go through the entire list |","lastModifiedDate":"2023-09-27"},{"lineNumber":297,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Mark task done for every student in a group | I do not need to mark each task manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":298,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in the book | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":299,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in a tutorial group | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":300,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in a group | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":301,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Be able to see an brief overview of last week | Can see deadlines that have passed etc |","lastModifiedDate":"2023-09-27"},{"lineNumber":302,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Easily edit the student/tutorial groups | Information is applicable throughout time |","lastModifiedDate":"2023-09-27"},{"lineNumber":303,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Move students around, edit which group they are in | I can be flexible with the groupings |","lastModifiedDate":"2023-09-27"},{"lineNumber":304,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Expert user | Check last week\u0027s deadline have been met or not | I would not miss any deadline |","lastModifiedDate":"2023-09-27"},{"lineNumber":305,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Expert user | Upload text file contains tutorial groups and students | I do not need to manually add students and tutorial groups |","lastModifiedDate":"2023-09-27"},{"lineNumber":306,"author":{"gitId":"Nid21cs"},"content":"| `*` | Experienced user | Sync with google calendar | To keep information easily accessible |","lastModifiedDate":"2023-09-27"},{"lineNumber":307,"author":{"gitId":"Nid21cs"},"content":"| `* ` | Experienced user | Sync with nusmods | To make it easier to take note of tutorial venues |","lastModifiedDate":"2023-09-27"},{"lineNumber":308,"author":{"gitId":"Nid21cs"},"content":"| `*` | Experienced user | Use addressbook to track attendance for each tutorial book | I can easily write down attendance in one area |","lastModifiedDate":"2023-09-27"},{"lineNumber":309,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | View a dashboard that provides the overview of the progress of each tutorial group and their respecective tasks | I can easily and quickly focus on areas that require my attention |","lastModifiedDate":"2023-09-27"},{"lineNumber":310,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Let the program generate a detailed report on the performace of each tutorial group | I can easily identify the areas of strengths and weaknesses of each students |","lastModifiedDate":"2023-09-27"},{"lineNumber":311,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Incorporate my own scripts to customise my own experience | I can improve productivity and tailor fit the software for myself |","lastModifiedDate":"2023-09-27"},{"lineNumber":312,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | make the program support customizable templates for tutorials and student profiles | I can make it more aesthetically pleasing |","lastModifiedDate":"2023-09-27"},{"lineNumber":313,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Make use of the feature to archive certain task | I can keep track of the history and not focus on unimportant task. |","lastModifiedDate":"2023-09-27"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Nid21cs"},"content":"(For all use cases below, the **System** is the `ProfBook` and the **Professor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-09-27"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"Nid21cs"},"content":"1. User requests to delete a student/group/task with specific id for each one","lastModifiedDate":"2023-09-27"},{"lineNumber":326,"author":{"gitId":"Nid21cs"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2023-09-27"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Nid21cs"},"content":"* 2a. The given id is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":333,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":334,"author":{"gitId":"Nid21cs"},"content":" * 2a1. ProfBook shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":335,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":336,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":337,"author":{"gitId":"Nid21cs"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"Nid21cs"},"content":"**Use case: Move student into/out of group**","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":341,"author":{"gitId":"Nid21cs"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":343,"author":{"gitId":"Nid21cs"},"content":"1. User requests to move a specific student from a source group to destination group with an id","lastModifiedDate":"2023-09-27"},{"lineNumber":344,"author":{"gitId":"Nid21cs"},"content":"2. AddressBook moves the student from a source group to destination group","lastModifiedDate":"2023-09-27"},{"lineNumber":345,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"Nid21cs"},"content":"* 2a. The given StudentID is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":351,"author":{"gitId":"Nid21cs"},"content":" * 2a1. ProfBook shows an error message. ","lastModifiedDate":"2023-09-27"},{"lineNumber":352,"author":{"gitId":"Nid21cs"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":353,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":356,"author":{"gitId":"Nid21cs"},"content":"* 3a. The given groupID is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"Nid21cs"},"content":" * 3a1. ProfBook shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"Nid21cs"},"content":"1. The application should be platform-independent and should run on all major operating systems as long as it has Java `11` or above installed.","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"Nid21cs"},"content":"* **Root**: Folder which contains all students, groups as well","lastModifiedDate":"2023-09-27"},{"lineNumber":376,"author":{"gitId":"Nid21cs"},"content":"* **Group**: Folder which contains Students within the specific group","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Nid21cs":69,"-":360}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"# ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"## Overview","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"ProfBook is a **student management system** specially made for **CS2103T tutors**, built by CS2103T students. As current students of CS2103T, we understand that CS2103T tutors have a high administrative workload on top of their existing tutor duties. On top of that, any administrative mistakes or oversights can increase that workload exponentially and may adversely impact student\u0027s learning. To address the aforementioned issues, Profbook was designed as a student management system which can **dramatically decrease administrative mistakes and workload**.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"It is optimized for tutors use via a **familiar Command Line Interface (CLI) that uses linux-styled commands** while still having the benefits of a Graphical User Interface (GUI). If you can type fast, ProfBook can track and manage your student\u0027s progress and tasks much faster than traditional GUI apps with a gentle learning curve.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"## Features overview","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"### Consolidated Information","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"As a project based module, CS2103T tutors have to juggle multiple groups **within** multiple tutorial slots. ProfBook aims to expedite this process by allowing tutors to keep track of all their tutorial groups and all the project groups within that in a centralised location. Tutors are able to traverse between tutorial slots and groups quickly through familiar linux commands.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"#### Student Information Management","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"ProfBook aids with the **management of student information**. Student\u0027s information can be **readily** added, edited, deleted quickly. In addition, ProfBook supports the managment of additional information vital for a tutor. Tutors can track their student progress through creating various tasks such as Todo and Deadline. Furthermore, Tutors can store short description of a student or links to their GitHub Repository if desired.","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"#### Tutorial and Groups Information Management","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"ProfBook aids with the **management of Tutorial and Groups information**. Profbook efficiently encapsulates information of every tutorial group and every project group so that tutors can management their progress and relevant information **seamlessly**. Tutors can easily add, move, delete students from groups. Similiar to students, tutors are able to track each group progress through tasks. In addition, Tutors can store short description of the groups or links to their GitHub Repository if desired.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"- Table of Contents","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"## Quick start (//TODO Change)","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"1. Download the latest `ProfBook.jar` from [here](https://github.com/AY2324S1-CS2103T-W15-2/tp/releases).","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your ProfBook.","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar ProfBook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" - `list` : Lists all contacts.","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" - `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" - `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" - `clear` : Deletes all contacts.","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" - `exit` : Exits the app.","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"(//TODO Change)","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"- Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":"- Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"- Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"- Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"- Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":"- If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"# General Commands","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":"### Viewing help : `help` (//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":"// TODO Update","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":"### Listing all persons : `ls`","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":"Format: `ls`","lastModifiedDate":"2023-09-27"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":"Clears all entries from the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"Format: `clear`","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2023-09-27"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":"Exits the program.","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":"Format: `exit`","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"# Student/Group commands","lastModifiedDate":"2023-09-27"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":"### Adding a student: `touch`","lastModifiedDate":"2023-09-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":"Adds a student to the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"Format: `touch student -n [name] -id [StudentId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":"name:","lastModifiedDate":"2023-09-27"},{"lineNumber":131,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":132,"author":{"gitId":"mingyuanc"},"content":"- must be a non-empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":"StudentId:","lastModifiedDate":"2023-09-27"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"- must be a 4 digits number follow with any letter","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":139,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":140,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating non valid param/ invalid site of student creation","lastModifiedDate":"2023-09-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":143,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":144,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating successful creation together with created student with student id","lastModifiedDate":"2023-09-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":"`touch student -n Gary -id 1234Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":155,"author":{"gitId":"mingyuanc"},"content":"- Command creates a student within the tutorial group if command is used from within the tutorial group.","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"mingyuanc"},"content":"- If a command is executed outside of a specific group, students are added into an ungrouped folder and can be moved into a group later.","lastModifiedDate":"2023-09-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"mingyuanc"},"content":"### Deleting a Student : `rm`","lastModifiedDate":"2023-09-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"mingyuanc"},"content":"Delete task, student or group.","lastModifiedDate":"2023-09-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":162,"author":{"gitId":"mingyuanc"},"content":"Format: `rm -type [targetType] -target [targetId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":165,"author":{"gitId":"mingyuanc"},"content":"type:","lastModifiedDate":"2023-09-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":167,"author":{"gitId":"mingyuanc"},"content":"- \"student\", \"task\" or \"group\"","lastModifiedDate":"2023-09-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"mingyuanc"},"content":"target:","lastModifiedDate":"2023-09-27"},{"lineNumber":170,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":171,"author":{"gitId":"mingyuanc"},"content":"- A valid non-empty String","lastModifiedDate":"2023-09-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":174,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":175,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when remove target","lastModifiedDate":"2023-09-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate target successfully removed","lastModifiedDate":"2023-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":"`rm -type student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":"- This command will delete the student profile with id 0123Y","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":186,"author":{"gitId":"mingyuanc"},"content":"### Move students into/out of the group: `mv`","lastModifiedDate":"2023-09-27"},{"lineNumber":187,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":188,"author":{"gitId":"mingyuanc"},"content":"Moves student from a group to another group","lastModifiedDate":"2023-09-27"},{"lineNumber":189,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":190,"author":{"gitId":"mingyuanc"},"content":"Format `mv [StudentID] -source [source group] -dest [destination group]`","lastModifiedDate":"2023-09-27"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":193,"author":{"gitId":"mingyuanc"},"content":"StudentID:","lastModifiedDate":"2023-09-27"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":"- must be a 4 digits number follow with any letter","lastModifiedDate":"2023-10-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"mingyuanc"},"content":"source group:","lastModifiedDate":"2023-09-27"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":199,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"mingyuanc"},"content":"destination group:","lastModifiedDate":"2023-09-27"},{"lineNumber":202,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":203,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":"- pop up message indicate error when moving student with id 0123Y from grp-1 to grp-2","lastModifiedDate":"2023-10-21"},{"lineNumber":208,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":209,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":210,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":"- pop up message indicates successfully moving student with id 0123Y from grp-1 to grp-2","lastModifiedDate":"2023-10-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":"`mv 0123Y -source grp-1 -dest grp-2`","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":"- This command will move a student with value id 0123Y within the groups or from Ungroup to Group.","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":218,"author":{"gitId":"mingyuanc"},"content":"### Create Group : `mkdir`","lastModifiedDate":"2023-09-27"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"mingyuanc"},"content":"Creates a group consists of a maximum of five students","lastModifiedDate":"2023-09-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"mingyuanc"},"content":"Format: `mkdir [groupId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":225,"author":{"gitId":"mingyuanc"},"content":"groupId:","lastModifiedDate":"2023-09-27"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":227,"author":{"gitId":"mingyuanc"},"content":"- groupId must be a non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":230,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":231,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates error when creating new group","lastModifiedDate":"2023-09-27"},{"lineNumber":232,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":233,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":234,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":235,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates group with specific groupId was created successfully.","lastModifiedDate":"2023-09-27"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"mingyuanc"},"content":"`mkdir grp-1`","lastModifiedDate":"2023-09-27"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":240,"author":{"gitId":"mingyuanc"},"content":"- This command will create a group with groupId which is a string called 1 and only consists the creator at that instance of creating the group","lastModifiedDate":"2023-09-27"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":244,"author":{"gitId":"mingyuanc"},"content":"# Tasks command","lastModifiedDate":"2023-09-27"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"mingyuanc"},"content":"### Create Todo Task : `todo`","lastModifiedDate":"2023-09-27"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"mingyuanc"},"content":"Creates todo tasks for specific students or groups.","lastModifiedDate":"2023-09-27"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"mingyuanc"},"content":"Format: `todo -desc [task] -level [student/group] -target [StudentID/group Id/tutorialId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":251,"author":{"gitId":"mingyuanc"},"content":"-desc / -d : Description of the todo task","lastModifiedDate":"2023-09-27"},{"lineNumber":252,"author":{"gitId":"mingyuanc"},"content":"-level / -l : The level of the task (student or group)","lastModifiedDate":"2023-09-27"},{"lineNumber":253,"author":{"gitId":"mingyuanc"},"content":"-target / -t : The target id (StudentID/groupId/tutorialId)","lastModifiedDate":"2023-09-27"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":256,"author":{"gitId":"mingyuanc"},"content":"Task:","lastModifiedDate":"2023-09-27"},{"lineNumber":257,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":258,"author":{"gitId":"mingyuanc"},"content":"- Non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"mingyuanc"},"content":"Level:","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":262,"author":{"gitId":"mingyuanc"},"content":"- the level only can be lower than current level","lastModifiedDate":"2023-09-27"},{"lineNumber":263,"author":{"gitId":"mingyuanc"},"content":" -- E.g., if my current level is group (i.e I am in a specific group), I only can create a task for the group or a student","lastModifiedDate":"2023-09-27"},{"lineNumber":264,"author":{"gitId":"mingyuanc"},"content":"- If a -level flag is not present, the app will by default create task for current level","lastModifiedDate":"2023-09-27"},{"lineNumber":265,"author":{"gitId":"mingyuanc"},"content":" -- E.g., command “todo -d ps1” will create todo for current level (specific group or student)","lastModifiedDate":"2023-09-27"},{"lineNumber":266,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":267,"author":{"gitId":"mingyuanc"},"content":"Target:","lastModifiedDate":"2023-09-27"},{"lineNumber":268,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":269,"author":{"gitId":"mingyuanc"},"content":"- Need to specify a valid id for indicated level","lastModifiedDate":"2023-09-27"},{"lineNumber":270,"author":{"gitId":"mingyuanc"},"content":" -- E.g., Need to specify a valid student id if want to create a student level task","lastModifiedDate":"2023-09-27"},{"lineNumber":271,"author":{"gitId":"mingyuanc"},"content":"- If -target flag is not present, app will by default create task for every items under current level","lastModifiedDate":"2023-09-27"},{"lineNumber":272,"author":{"gitId":"mingyuanc"},"content":" -- E.g, command “todo -d ps1 -level student” will create todo “ps1” for every students under current group","lastModifiedDate":"2023-09-27"},{"lineNumber":273,"author":{"gitId":"mingyuanc"},"content":"- Target flag is allowed only if level flag is provided","lastModifiedDate":"2023-09-27"},{"lineNumber":274,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":275,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":276,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":277,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when creating new todo.","lastModifiedDate":"2023-09-27"},{"lineNumber":278,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":279,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":280,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":281,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate todo created successfully","lastModifiedDate":"2023-09-27"},{"lineNumber":282,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":283,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":284,"author":{"gitId":"NereusWB922"},"content":"`todo -desc ps1 -level student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":285,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":286,"author":{"gitId":"NereusWB922"},"content":"- This command will create a todo task called “ps 1” for the student with id 0123Y","lastModifiedDate":"2023-10-21"},{"lineNumber":287,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":288,"author":{"gitId":"mingyuanc"},"content":"### Create Deadline task : `Deadline`","lastModifiedDate":"2023-09-27"},{"lineNumber":289,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":290,"author":{"gitId":"mingyuanc"},"content":"Creates task with a deadline for specific student or group or tutorial slot","lastModifiedDate":"2023-09-27"},{"lineNumber":291,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"mingyuanc"},"content":"Format `deadline -desc [task] -level [student/group] -target [StudentID/groupId/tutorialId] -byDate[dd/MM/yyyy]`","lastModifiedDate":"2023-09-27"},{"lineNumber":293,"author":{"gitId":"mingyuanc"},"content":"-desc / -d : Description of the deadline task","lastModifiedDate":"2023-09-27"},{"lineNumber":294,"author":{"gitId":"mingyuanc"},"content":"-level / -l : The level of the task (student or group)","lastModifiedDate":"2023-09-27"},{"lineNumber":295,"author":{"gitId":"mingyuanc"},"content":"-target / -t : The target id (StudentID/groupId/tutorialId)","lastModifiedDate":"2023-09-27"},{"lineNumber":296,"author":{"gitId":"mingyuanc"},"content":"-byDate/ -b : the deadline for the task","lastModifiedDate":"2023-09-27"},{"lineNumber":297,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":298,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":299,"author":{"gitId":"mingyuanc"},"content":"Task:","lastModifiedDate":"2023-09-27"},{"lineNumber":300,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":301,"author":{"gitId":"mingyuanc"},"content":"- non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":302,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":303,"author":{"gitId":"mingyuanc"},"content":"Level:","lastModifiedDate":"2023-09-27"},{"lineNumber":304,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":305,"author":{"gitId":"mingyuanc"},"content":"- The level only can be lower than current level","lastModifiedDate":"2023-09-27"},{"lineNumber":306,"author":{"gitId":"mingyuanc"},"content":" -- E.g., if my current level is group (i.e I am in a specific group), I can create a deadline task for the group or a student","lastModifiedDate":"2023-09-27"},{"lineNumber":307,"author":{"gitId":"mingyuanc"},"content":"- If a -level flag is not present, app will by default create deadline task for current level","lastModifiedDate":"2023-09-27"},{"lineNumber":308,"author":{"gitId":"mingyuanc"},"content":" -- E.g., command “deadline -d grade proposal 1-byDate 20/10/2023” will create deadline task for current level (specific group or student)","lastModifiedDate":"2023-09-27"},{"lineNumber":309,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":310,"author":{"gitId":"mingyuanc"},"content":"Target:","lastModifiedDate":"2023-09-27"},{"lineNumber":311,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":312,"author":{"gitId":"mingyuanc"},"content":"- Need to specify a valid id for indicated level","lastModifiedDate":"2023-09-27"},{"lineNumber":313,"author":{"gitId":"mingyuanc"},"content":" -- E.g., Need to specify a valid student id if want to create a student level task","lastModifiedDate":"2023-09-27"},{"lineNumber":314,"author":{"gitId":"mingyuanc"},"content":"- If a -target flag is not present, app will by default create task for every items under current level","lastModifiedDate":"2023-09-27"},{"lineNumber":315,"author":{"gitId":"mingyuanc"},"content":" -- E.g, command “deadline -d grade proposal 1 -level student” will create deadline task “grade proposal 1” for every student under current group","lastModifiedDate":"2023-09-27"},{"lineNumber":316,"author":{"gitId":"mingyuanc"},"content":"- Target flag is allowed only if level flag is provided","lastModifiedDate":"2023-09-27"},{"lineNumber":317,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":318,"author":{"gitId":"mingyuanc"},"content":"byDate:","lastModifiedDate":"2023-09-27"},{"lineNumber":319,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":320,"author":{"gitId":"mingyuanc"},"content":"- In the format of dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":321,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":322,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":323,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":324,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when creating new deadline task.","lastModifiedDate":"2023-09-27"},{"lineNumber":325,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":326,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":327,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":328,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate deadline task created successfully.","lastModifiedDate":"2023-09-27"},{"lineNumber":329,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":330,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":331,"author":{"gitId":"mingyuanc"},"content":"`deadline -d grade proposal 1 -level group -target tut-1 -byDate 20/10/2023`","lastModifiedDate":"2023-09-27"},{"lineNumber":332,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":333,"author":{"gitId":"mingyuanc"},"content":"- This command will create a task with a deadline on 20/10/2023 for the task called grade proposal 1, allocated to students from tut-1.","lastModifiedDate":"2023-09-27"},{"lineNumber":334,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":335,"author":{"gitId":"mingyuanc"},"content":"### Mark/Unmark tasks as completed: `mark`","lastModifiedDate":"2023-09-27"},{"lineNumber":336,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":337,"author":{"gitId":"mingyuanc"},"content":"Marks specific tasks as done for each student/tutorial group","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"mingyuanc"},"content":"Format: `mark -d [task] -level [student/group] -target [StudentID/groupId] `","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"mingyuanc"},"content":"Acceptable parameter should be:","lastModifiedDate":"2023-09-27"},{"lineNumber":342,"author":{"gitId":"mingyuanc"},"content":"task:","lastModifiedDate":"2023-09-27"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":344,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non empty String","lastModifiedDate":"2023-09-27"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":346,"author":{"gitId":"mingyuanc"},"content":"student:","lastModifiedDate":"2023-09-27"},{"lineNumber":347,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":348,"author":{"gitId":"mingyuanc"},"content":"- String should be \"student\" or \"group\"","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"mingyuanc"},"content":"StudentID:","lastModifiedDate":"2023-09-27"},{"lineNumber":351,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":352,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non empty String starting with","lastModifiedDate":"2023-09-27"},{"lineNumber":353,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":354,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":355,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":356,"author":{"gitId":"mingyuanc"},"content":"- pop up message saying mark is not done as well as specific task that is unchanged","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":358,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":360,"author":{"gitId":"mingyuanc"},"content":"- pop up message saying mark is done successfully as well as specific task that is marked","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":362,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":363,"author":{"gitId":"NereusWB922"},"content":"`mark -d Assignment 1 -level student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":364,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":365,"author":{"gitId":"NereusWB922"},"content":"- This command will mark 0123Y\u0027s Assignment 1 as done","lastModifiedDate":"2023-10-21"},{"lineNumber":366,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"mingyuanc"},"content":"### Search for Tasks: `find`","lastModifiedDate":"2023-09-27"},{"lineNumber":368,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":369,"author":{"gitId":"mingyuanc"},"content":"Searches for tasks depending on the environment.","lastModifiedDate":"2023-09-27"},{"lineNumber":370,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":371,"author":{"gitId":"mingyuanc"},"content":"Format `find [task]`","lastModifiedDate":"2023-09-27"},{"lineNumber":372,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":373,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":374,"author":{"gitId":"mingyuanc"},"content":"task:","lastModifiedDate":"2023-09-27"},{"lineNumber":375,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":376,"author":{"gitId":"mingyuanc"},"content":"- Non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":378,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":379,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":380,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates error when finding for the task.","lastModifiedDate":"2023-09-27"},{"lineNumber":381,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":382,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":383,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":384,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating the list of tasks matching the user’s input or that there is no task matching user input.","lastModifiedDate":"2023-09-27"},{"lineNumber":385,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":386,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":387,"author":{"gitId":"mingyuanc"},"content":"`find grade proposal`","lastModifiedDate":"2023-09-27"},{"lineNumber":388,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":389,"author":{"gitId":"mingyuanc"},"content":"- This command will search for the task, grade proposal, depending on the environment the user is in, it will search for task(s) allocated to a tutorial group or student.","lastModifiedDate":"2023-09-29"},{"lineNumber":390,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":391,"author":{"gitId":"mingyuanc"},"content":"### Save the data (//TODO update)","lastModifiedDate":"2023-09-27"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"mingyuanc"},"content":"ProfBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-09-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"mingyuanc"},"content":"### Edit the data file (//TODO update)","lastModifiedDate":"2023-09-27"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":397,"author":{"gitId":"mingyuanc"},"content":"ProfBook data are saved automatically as a JSON file `[JAR file location]/data/ProfBook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":399,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":400,"author":{"gitId":"mingyuanc"},"content":"If your changes to the data file makes its format invalid, ProfBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":403,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":404,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":405,"author":{"gitId":"mingyuanc"},"content":"### Archive data files `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":406,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":407,"author":{"gitId":"mingyuanc"},"content":"### Locate persons by name: `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":408,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":409,"author":{"gitId":"mingyuanc"},"content":"### Delete a person : `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":417,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"mingyuanc"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous ProfBook home folder.","lastModifiedDate":"2023-09-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":426,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":430,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":432,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2023-09-29"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":436,"author":{"gitId":"mingyuanc"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-09-29"},{"lineNumber":437,"author":{"gitId":"mingyuanc"},"content":"| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |","lastModifiedDate":"2023-09-29"},{"lineNumber":438,"author":{"gitId":"mingyuanc"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-09-29"},{"lineNumber":439,"author":{"gitId":"mingyuanc"},"content":"| **List** | `ls` |","lastModifiedDate":"2023-09-29"},{"lineNumber":440,"author":{"gitId":"mingyuanc"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2023-09-29"},{"lineNumber":441,"author":{"gitId":"mingyuanc"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2023-09-29"},{"lineNumber":442,"author":{"gitId":"NereusWB922"},"content":"| **Add** | `touch student -n [name] -id [StudentId]` \u003cbr\u003e e.g., `touch student -n Gary -id 1234Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":443,"author":{"gitId":"mingyuanc"},"content":"| **Create Group** | `mkdir [groupId]` \u003cbr\u003e e.g., `mkdir grp-1` |","lastModifiedDate":"2023-09-29"},{"lineNumber":444,"author":{"gitId":"NereusWB922"},"content":"| **Delete** | `rm [StudentId]` \u003cbr\u003e e.g., `touch student -n Gary -id 1234Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":445,"author":{"gitId":"NereusWB922"},"content":"| **Create Todo** | `todo -desc [task] -level [student/group] -target [StudentID/group Id/tutorialId]` \u003cbr\u003e e.g., `todo -desc ps1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":446,"author":{"gitId":"mingyuanc"},"content":"| **Create Deadline** | `deadline -desc [task] -level [student/group] -target [StudentID/groupId/tutorialId] -byDate[dd/MM/yyyy]`\u003cbr\u003e e.g., `deadline -d grade proposal 1 -level group -target tut-1 -byDate 20/10/2023` |","lastModifiedDate":"2023-09-29"},{"lineNumber":447,"author":{"gitId":"NereusWB922"},"content":"| **Mark** | `mark -d [task] -level [student/group] -target [StudentID/groupId]`\u003cbr\u003e e.g.,`mark -d Assignment 1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":448,"author":{"gitId":"NereusWB922"},"content":"| **Mark** | `unmark -d [task] -level [student/group] -target [StudentID/groupId]`\u003cbr\u003e e.g.,`unmark -d Assignment 1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":449,"author":{"gitId":"mingyuanc"},"content":"| **Find** | `find [task]`\u003cbr\u003e e.g., `find grade proposal` |","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":19,"mingyuanc":297,"-":133}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"NereusWB922"},"content":" content: \"ProfBook\";","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"NereusWB922":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"title: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"# ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions)","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W15-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-W15-2/tp)","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"## Introducing our product - ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"ProfBook provides easy management of tasks, group schedules, and notes for every tutorial slot and group. A CS professor","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"friendly platform to keep updated and informed with notifications and profile pictures of your students for a personal ","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"touch and easy recognition of students during lessons.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"* This project is an ongoing software project for a desktop application (called _ProfBook_) used for managing tasks, ","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"* group schedules, and notes for every tutorial slot and group.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"* It is **written in OOP fashion** and comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"* It is named `ProfBook` because it aims to help professors to keep track of the many tutorial groups as well as the ","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"many deadlines and submission.","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"* If you are interested in using ProfBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"* If you are interested about developing ProfBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"### Acknowledgements","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"NgChunMan":11,"NereusWB922":7,"-":12}},{"path":"docs/team/mingyuanc.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Ching Ming Yuan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/nereuswb922.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Nereus Ng Wei Bin\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/ngchunman.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Ng Chun Man\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/nid21cs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Nidhish Krishnan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/zannloo.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Loo Mei Lin Zann\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.util.SampleProfBook;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" protected ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" protected State state;","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing ProfBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" //todo: abstract to an init method, and need to read from storage","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" state \u003d initModelManager(userPrefs);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" //todo: Storage","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" logic \u003d new ProfBookLogicManager(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" private State initModelManager(ReadOnlyUserPrefs userPrefs) throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" //todo: storage","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" // Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" // ReadOnlyAddressBook initialData;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" // } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" // initialData \u003d new AddressBook();","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currentPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" // Use sample data.","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return new StateManager(currentPath, root, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" if (configOptional.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" // protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" // Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" // UserPrefs initializedPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" // Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" // if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" // initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" // } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" // + \" Using default preferences.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" // initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" // //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" // storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" // return initializedPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" // storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" // logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NereusWB922":74,"mingyuanc":1,"-":113}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.Option;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static String getErrorMessageForDuplicateOptions(Option... duplicateOptions) {","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" assert duplicateOptions.length \u003e 0;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" Stream.of(duplicateOptions).map(Option::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NereusWB922":4,"-":45}},{"path":"src/main/java/seedu/address/logic/ProfBookLogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ProfBookParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"//import seedu.address.storage.Storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"public class ProfBookLogicManager {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private final State state;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //private final Storage storage \u003d null;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" private final ProfBookParser profBookParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public ProfBookLogicManager(State state) {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" //todo : storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" this.state \u003d state;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" profBookParser \u003d new ProfBookParser();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Execute command and return the result if success","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * or throw exception if error occurred.","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" CommandResult commandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" Command command \u003d profBookParser.parseCommand(commandText, state.getCurrPath());","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // } catch (AccessDeniedException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException ioe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" // throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" return commandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return state.getDisplayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public String getCurrPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" return state.getCurrPath().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return state.getAddressBookFilePath();","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return state.getGuiSettings();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" state.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":83}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" NAME \"","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" PHONE \"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" EMAIL \"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" ADDRESS \"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" John Doe \"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" 98765432 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" johnd@example.com \"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" 311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" + OPTION_TAG + \" friends \"","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" + OPTION_TAG + \" owesMoney\";","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NereusWB922":16,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_NAME + \" NAME] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"NereusWB922":12,"-":230}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"NgChunMan":2,"-":17}},{"path":"src/main/java/seedu/address/logic/newcommands/ChangeDirectoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ChangeDirectoryCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Change directory to target path.","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ChangeDirectoryCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"cd\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Changed directory to: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_DEST \u003d \"Student path is not navigable.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ChangeDirectoryCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" [destination path]\";","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code MoveStudentToGroupCommand} with the specified source and destination paths.","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param source The relative path to the source group from which the student will be moved.","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @param dest The relative path to the destination group to which the student will be moved.","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public ChangeDirectoryCommand(AbsolutePath dest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(dest);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(dest)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_PATH_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (dest.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_DEST);","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" state.changeDirectory(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dest.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChangeDirectoryCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" ChangeDirectoryCommand otherChangeDirectoryCommand \u003d (ChangeDirectoryCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" return this.dest.equals(otherChangeDirectoryCommand.dest);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" .add(\"Destination\", dest)","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":93}},{"path":"src/main/java/seedu/address/logic/newcommands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"public abstract class Command {","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public abstract CommandResult execute(State state) throws CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":16,"NereusWB922":2}},{"path":"src/main/java/seedu/address/logic/newcommands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"public class CommandResult {","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" private final String feedbackToUser;","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" private final boolean showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" /** The application should exit. */","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" private final boolean exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2023-10-01"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2023-10-01"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2023-10-01"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2023-10-01"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" * and other fields set to their default value.","lastModifiedDate":"2023-10-01"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2023-10-01"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2023-10-01"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" * Gets the feedback message to be displayed to the user.","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" * @return The feedback message as a String.","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2023-10-01"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" return feedbackToUser;","lastModifiedDate":"2023-10-01"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * Checks if help information should be shown to the user.","lastModifiedDate":"2023-10-02"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if help information should be shown, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2023-10-01"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" * Checks if the application should exit.","lastModifiedDate":"2023-10-02"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if the application should exit, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-01"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" return exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" * Compares this CommandResult with another object for equality.","lastModifiedDate":"2023-10-02"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-02"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if the objects are equal, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-01"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-01"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-01"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-01"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-01"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2023-10-01"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2023-10-01"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * Computes the hash code for this CommandResult.","lastModifiedDate":"2023-10-02"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" * @return The hash code value.","lastModifiedDate":"2023-10-02"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-01"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2023-10-01"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this CommandResult.","lastModifiedDate":"2023-10-02"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" * @return A string containing the feedback message, showHelp, and exit information.","lastModifiedDate":"2023-10-02"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-01"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2023-10-01"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2023-10-01"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2023-10-01"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-01"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":81,"NgChunMan":31}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Adds a Deadline for a specified {@code Student} or {@code Group}.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"public class CreateDeadlineCommand extends Command {","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": deadline \";","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Deadline task added: %1$s\";","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_STUDENTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" \"New Deadline task added to all students in group: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_GROUPS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" \"New Deadline task added to all groups in root: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_DUPLICATE_DEADLINE_TASK \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" \"This Deadline task has already been allocated\";","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot create task for this path.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_STU \u003d \"All stu flag is only allowed for group path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_GROUP \u003d \"All Group flag is only allowed for root path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath path;","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" private final Deadline deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" private String category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" * Creates an CreateDeadlineCommand to add the Deadline Task for a specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand(AbsolutePath path, Deadline deadline) {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" * Creates an CreateDeadlineCommand to add the Deadline Task for a specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" * User has input a category as well.","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand(AbsolutePath path, Deadline deadline, String category) {","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, deadline, category);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" * Executes an CreateDeadlineCommand to allocate a {@code Deadline} task to a {@code Group} or {@code Student}","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_PATH_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" if (this.category \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" // Check target path is task manager","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInPath(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NOT_TASK_MANAGER);","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" TaskOperation target \u003d state.taskOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate deadline","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" if (target.hasTask(this.deadline)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_DUPLICATE_DEADLINE_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" target.addTask(this.deadline);","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" if (this.category.equals(\"allStu\")) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" if (!path.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_STU);","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOper \u003d state.groupChildOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" groupOper.addTaskToAllChildren(deadline, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" if (!path.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOper \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" rootOper.addTaskToAllChildren(deadline, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" * Compares this {@code CreateDeadlineCommand} to another {@code CreateDeadlineCommand} to see if they are equal.","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code CreateDeadlineCommand} and false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CreateDeadlineCommand)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand otherCreateDeadlineCommand \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" (CreateDeadlineCommand) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" return this.deadline.equals(otherCreateDeadlineCommand.deadline)","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 this.path.equals(otherCreateDeadlineCommand.path);","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" .add(\"toCreateDeadline\", this.deadline)","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-11"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-11"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"zannloo":99,"NereusWB922":40,"mingyuanc":8}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-02"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for creating a new group within ProfBook.","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to create a new group at a specified path.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"public class CreateGroupCommand extends Command {","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"mkdir\";","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in ProfBook\";","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": group\";","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" private final Group group;","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code CreateGroupCommand} with the specified absolute path and group details.","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * @param dest The absolute path at which the new group will be created.","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * @param group The details of the group to be created.","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public CreateGroupCommand(AbsolutePath dest, Group group) {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(dest, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" this.group \u003d group;","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" * Executes the CreateGroupCommand to create a new group within ProfBook at the specified path.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" * @param state The current state of the application.","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs while executing the command.","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOperation \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate group","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" if (rootOperation.hasChild(dest.getGroupId().get())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" rootOperation.addChild(this.group.getId(), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, this.group));","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * Checks if this CreateGroupCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof CreateGroupCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" CreateGroupCommand otherCreateGroupCommand \u003d (CreateGroupCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return this.dest.equals(otherCreateGroupCommand.dest)","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.group.equals(otherCreateGroupCommand.group);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this CreateGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the CreateGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-02"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" .add(\"toCreateGroup\", this.group)","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"NgChunMan":78,"NereusWB922":18,"mingyuanc":4}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Adds a student within the specific group.","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"public class CreateStudentCommand extends Command {","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"touch\";","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student \";","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in your specified class\";","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH \u003d \"Path provided should be a valid student path\";","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_GROUP_NOT_FOUND \u003d \"Group %1$s does not exist in ProfBook\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath path;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" private final Student student;","lastModifiedDate":"2023-10-01"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Creates an CreateStudentCommand to add the specified {@code Student}","lastModifiedDate":"2023-10-01"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public CreateStudentCommand(AbsolutePath path, Student student) {","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, student);","lastModifiedDate":"2023-10-01"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-01"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" this.student \u003d student;","lastModifiedDate":"2023-10-01"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" * Executes an CreateStudentCommand to add the specified {@code Student} to a {@code Group}","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" if (!path.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" // Check group exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasGroup(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_GROUP_NOT_FOUND, path.getGroupId()));","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e target \u003d state.groupChildOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate student","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" if (target.hasChild(this.student.getId())) {","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" target.addChild(this.student.getId(), this.student);","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, student));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" * Compares this {@code CreateStudentCommand} to another {@code CreateStudentCommand} to see if they are equal.","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code CreateStudentCommand} and false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-01"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CreateStudentCommand)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-01"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand otherCreateStudentCommand \u003d (CreateStudentCommand) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" return student.equals(otherCreateStudentCommand.student)","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 this.path.equals(otherCreateStudentCommand.path);","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-01"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" .add(\"toCreateStudent\", student)","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":77,"NereusWB922":21,"mingyuanc":7}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateTodoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for creating a new \"ToDo\" task in ProfBook.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to add a \"ToDo\" task.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class CreateTodoCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_DUPLICATE \u003d \"This Todo task has already been allocated\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_INVALID_PATH \u003d \"This path is invalid.\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_TODO_TASK_STUDENT \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" \"This ToDo task has already been allocated to this student in ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_TODO_TASK_GROUP \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" \"This ToDo task has already been allocated to this group in ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_STUDENTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" \"New ToDo task added to all students in group: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_GROUPS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" \"New ToDo task added to all groups in root: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_ERROR \u003d \"Invalid target encountered while creating this todo task\";","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New ToDo task has been added to: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot create task for this path.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_STU \u003d \"All stu flag is only allowed for group path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_GROUP \u003d \"All Group flag is only allowed for root path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" private final ToDo todo;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" private String category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Constructs a {@code CreateTodoCommand} with the specified relative path and \"ToDo\" task details.","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" * @param relativePath The relative path to the group where the \"ToDo\" task will be added.","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @param todo The details of the \"ToDo\" task to be created.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand(AbsolutePath target, ToDo todo) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code CreateTodoCommand} with the specified absolute path and \"ToDo\" task details.","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @param target The absolute path to the group where the \"ToDo\" task will be added.","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" * @param todo The details of the \"ToDo\" task to be created.","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" * @param category The specific category of people to add ToDo task to each.","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand(AbsolutePath target, ToDo todo, String category) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(target, todo, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" * Executes the CreateTodoCommand, adding a \"ToDo\" task to either a group or a specific student as specified","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * in the relative path.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" if (this.category \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" if (taskOperation.hasTask(this.todo)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TODO_TASK_STUDENT);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" taskOperation.addTask(this.todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" if (this.category.equals(\"allStu\")) {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (!target.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_STU);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOper \u003d state.groupChildOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" groupOper.addTaskToAllChildren(todo, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" if (!target.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOper \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" rootOper.addTaskToAllChildren(todo, 1);;","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" * Checks if this CreateTodoCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof CreateTodoCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" CreateTodoCommand otherCreateTodoCommand \u003d (CreateTodoCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherCreateTodoCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.todo.equals(otherCreateTodoCommand.todo);","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" * Returns the string representation of this CreateTodoCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the CreateTodoCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" .add(\"toCreateTodo\", this.todo)","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":82,"zannloo":18,"NereusWB922":44,"mingyuanc":3}},{"path":"src/main/java/seedu/address/logic/newcommands/DeleteForStudentsAndGroupsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":" * Deletes a {@code Student} or {@code Group} according to the targeted path.","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"public class DeleteForStudentsAndGroupsCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"rm\";","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student or group \";","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Student/Group removed: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_INCORRECT_DIRECTORY_ERROR \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_INVALID_PATH \u003d \"Path is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_NO_SUCH_STUDENT_OR_GROUP \u003d \"There is no such student or group to delete\";","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_CURRENT_PATH \u003d \"Current path cannot be deleted\";","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_DISPLAY_PATH \u003d \"Current display path cannot be deleted.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" protected Student stu;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" protected Group grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath toBeDeleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Creates an DeleteForStudentsAndGroupsCommand to specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public DeleteForStudentsAndGroupsCommand(AbsolutePath toBeDeleted) { //path will specify which grp/student","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" this.toBeDeleted \u003d toBeDeleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" * Executes an DeleteForStudentsAndGroupsCommand to delete a {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" * @throws InvalidPathException Exception thrown when error occurs due to invalid path.","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" * @throws UnsupportedPathOperationException Exception thrown when error occurs due to unsupported path execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" * @throws NoSuchChildException Exception thrown when child specified does not exist.","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // Check if to be deleted path is current path.","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.equals(state.getCurrPath())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_DELETE_CURRENT_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" // Check if to be deleted path is diplay path.","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.equals(state.getDisplayPath())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_DELETE_DISPLAY_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(toBeDeleted)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e target \u003d state.groupChildOperation(toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d toBeDeleted.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" if (!target.hasChild(studentId)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" stu \u003d target.getChild(studentId);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" target.deleteChild(studentId);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" state.updateList();","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, stu.toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e target \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" GroupId groupId \u003d toBeDeleted.getGroupId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" if (!target.hasChild(groupId)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" grp \u003d target.getChild(groupId);","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" target.deleteChild(groupId);","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" state.updateList();","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, grp.toString()));","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" * Compares this {@code DeleteForStudentsAndGroupsCommand} to another {@code DeleteForStudentsAndGroupsCommand}","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" * to see if they are equal.","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code DeleteForStudentsAndGroupsCommand} and false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof DeleteForStudentsAndGroupsCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand otherDeleteForStudentsAndGroupsCommand \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" (DeleteForStudentsAndGroupsCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" return this.toBeDeleted.equals(otherDeleteForStudentsAndGroupsCommand.toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" .add(\"toDeleteStudentOrGroup\", toBeDeleted)","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":96,"NereusWB922":41}},{"path":"src/main/java/seedu/address/logic/newcommands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Deletes a task identified using it\u0027s displayed index on display panel.","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"rmt\";","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" + \"[display index] + \\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" + \"Constraint: Task list must be shown on display panel using \\\"cat\\\" command. + \\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" + \"Parameters: display index (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_TASK_LIST_NOT_SHOWN \u003d \"Current display panel is not displaying task list.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"The task list provided is invalid.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted task: %1$s\";","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTaskCommand.class);","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Construct a DeleteTaskCommand instance with target index.","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Executing delete task command...\");","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" // Check if diplay panel is displaying task list","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" if (!state.isShowTaskList()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Task list is not shown. Aborting delete task command.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_TASK_LIST_NOT_SHOWN);","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(state.getDisplayPath());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // Check if index is valid.","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (!taskOperation.isValidIndex(targetIndex.getOneBased())) {","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Invalid index: \" + targetIndex.getOneBased() + \". Aborting delete task command.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Executing delete task command on index \" + targetIndex.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" Task deletedTask \u003d taskOperation.deleteTask(targetIndex.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Task deleted successfully. Deleted task: \" + deletedTask.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, deletedTask.toString()));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":91}},{"path":"src/main/java/seedu/address/logic/newcommands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" * EditCommand is a class representing a command to edit the details of a person (either a student or a group) in","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" * ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Depending on the context (whether it\u0027s a student or group), this command can edit different fields.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_INVALID_PATH \u003d \"This path is invalid.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_NO_SUCH_GROUP \u003d \"Group does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_EDIT_GROUP_SUCCESS \u003d \"Field(s) of group has been edited successfully.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_EDIT_STUDENT_SUCCESS \u003d \"Field(s) of student has been edited successfully.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_NAME + \" NAME] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" + OPTION_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" + OPTION_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_INCORRECT_DIRECTORY_ERROR \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NO_SUCH_PATH \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" private EditGroupDescriptor editGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" private EditStudentDescriptor editStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * Constructs an EditCommand for editing a group\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * @param target The path to the target group to be edited.","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @param editGroupDescriptor The descriptor containing the details to edit.","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" public EditCommand(AbsolutePath target, EditGroupDescriptor editGroupDescriptor) {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" this.editGroupDescriptor \u003d new EditGroupDescriptor(editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" * Constructs an EditCommand for editing a student\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * @param target The path to the target student to be edited.","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" * @param editStudentDescriptor The descriptor containing the details to edit.","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" public EditCommand(AbsolutePath target, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" this.editStudentDescriptor \u003d new EditStudentDescriptor(editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" * edited with {@code editStudentDescriptor}.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" private static Student createEditedStudent(Student studentToEdit, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" Name updatedName \u003d editStudentDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" Phone updatedPhone \u003d editStudentDescriptor.getPhone().orElse(studentToEdit.getPhone());","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" Email updatedEmail \u003d editStudentDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" Address updatedAddress \u003d editStudentDescriptor.getAddress().orElse(studentToEdit.getAddress());","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" StudentId updatedId \u003d editStudentDescriptor.getId().orElse(studentToEdit.getId());","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(studentToEdit.getAllTask());","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" return new Student(taskList, updatedName, updatedEmail, updatedPhone, updatedAddress, updatedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" * Creates and returns a {@code Group} with the details of {@code groupToEdit}","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" * edited with {@code editGroupDescriptor}.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" private static Group createEditedGroup(Group groupToEdit, EditGroupDescriptor editGroupDescriptor) {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" assert groupToEdit !\u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" Name updatedName \u003d editGroupDescriptor.getName().orElse(groupToEdit.getName());","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" Id updatedId \u003d editGroupDescriptor.getId().orElse(groupToEdit.getId());","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(groupToEdit.getAllTask());","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d groupToEdit.getChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" return new Group(taskList, students, updatedName, updatedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" * Executes the EditCommand to edit a group or student\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" * @param state The current state of the application.","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the result of the execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If there\u0027s an error during command execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NO_SUCH_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" if (target.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOperation \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" GroupId groupId \u003d target.getGroupId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" if (!rootOperation.hasChild(groupId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(ERROR_MESSAGE_NO_SUCH_GROUP);","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" Group groupToEdit \u003d rootOperation.getChild(groupId);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" Group editedGroup \u003d createEditedGroup(groupToEdit, this.editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" rootOperation.deleteChild(groupId);","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" rootOperation.addChild(groupId, editedGroup);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" state.updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(MESSAGE_EDIT_GROUP_SUCCESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" } else if (target.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOperation \u003d state.groupChildOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d target.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" Student studentToEdit \u003d groupOperation.getChild(studentId);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" Student editedStudent \u003d createEditedStudent(studentToEdit, this.editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" groupOperation.deleteChild(studentId);","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" groupOperation.addChild(editedStudent.getId(), editedStudent);","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" state.updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(MESSAGE_EDIT_STUDENT_SUCCESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditCommand is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" if (this.editStudentDescriptor \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherEditCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.editGroupDescriptor.equals(otherEditCommand.editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherEditCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.editStudentDescriptor.equals(otherEditCommand.editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"NgChunMan"},"content":" if (this.editStudentDescriptor !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"NgChunMan"},"content":" .add(\"toEdit\", this.editStudentDescriptor)","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"NgChunMan"},"content":" if (this.editGroupDescriptor !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"NgChunMan"},"content":" .add(\"toEdit\", this.editGroupDescriptor)","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":218,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"NgChunMan"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":189,"NereusWB922":32}},{"path":"src/main/java/seedu/address/logic/newcommands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * The HelpCommand class represents a command to display program usage instructions to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * When executed, it displays a help message with information on how to use the program.","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"ChangeDirectoryCommand: cd [targetPath]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" + \"CreateStudentCommand: touch [groupId/studentId] -n [name] -p [phone] -e [email] -a [address]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" + \"CreateGroupCommand: mkdir [groupId] -n [groupName]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" + \"CreateTodoCommand: todo -d [task]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" + \"CreateDeadlineCommand: “deadline -d [task] -dt [yyyy/MM/dd hh:mm]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" + \"DeleteCommand: rm -type [targetType] -target [targetId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" + \"EditCommand: edit [path]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" + \"MarkCommand: mark -d [task] -level [student/group] -target [StudentID/groupId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" + \"UnmarkCommand: unmark -d [task] -level [student/group] -target [StudentID/groupId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" + \"SearchCommand: search [task]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" + \"HelpCommand: help\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" + \"MoveStudentToGroupCommand: mv [StudentID] [sourcePath] [destinationPath]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" + \"ShowChildrenListCommand: ls\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" + \"ShowTaskListCommand: cat\\n\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Executes the HelpCommand to display program usage instructions.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * @param state The current program state.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult containing the help message and related flags.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"NgChunMan":43}},{"path":"src/main/java/seedu/address/logic/newcommands/MoveStudentToGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for moving a student from one group to another within ProfBook.","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to change the group affiliation of a student.","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class MoveStudentToGroupCommand extends Command {","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"mv\";","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the group\";","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SOURCE_IS_NOT_STUDENT \u003d \"Source path must be a student directory\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DEST_IS_NOT_GROUP \u003d \"Destination path must be a group directory\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_STUDENT_NOT_FOUND \u003d \"Source student not found in ProfBook\";","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_GROUP_NOT_FOUND \u003d \"Destination Group not found in ProfBook\";","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_MOVE_STUDENT_SUCCESS \u003d \"Student $1$s is moved to this group: %2$s\";","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_MOVE_COMMAND \u003d \"Move command is invalid.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath source;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * Constructs a {@code MoveStudentToGroupCommand} with the specified source and destination paths.","lastModifiedDate":"2023-10-02"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * @param source The absolute path to the source group from which the student will be moved.","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * @param dest The absolute path to the destination group to which the student will be moved.","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public MoveStudentToGroupCommand(AbsolutePath source, AbsolutePath dest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" requireAllNonNull(source, dest);","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" this.source \u003d source;","lastModifiedDate":"2023-10-02"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-02"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * ProfBook.","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" // Check move studen to group","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" if (source.isStudentDirectory() \u0026\u0026 dest.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // Check student exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasStudent(source)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_STUDENT_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" // Check group exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasGroup(dest)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_GROUP_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" StudentId toBeMovedId \u003d source.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e sourceGroup \u003d state.groupChildOperation(source);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" Student studentToBeMoved \u003d sourceGroup.getChild(toBeMovedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e destGroup \u003d state.groupChildOperation(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" destGroup.addChild(toBeMovedId, studentToBeMoved);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" sourceGroup.deleteChild(toBeMovedId);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_MOVE_STUDENT_SUCCESS, source.getStudentId().get(), dest.getGroupId().get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_MOVE_COMMAND);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof MoveStudentToGroupCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand otherMoveStudentToGroupCommand \u003d (MoveStudentToGroupCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" return this.source.equals(otherMoveStudentToGroupCommand.source)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.dest.equals(otherMoveStudentToGroupCommand.dest);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-02"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" .add(\"Source Path\", source)","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" .add(\"Dest Path\", dest)","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"NgChunMan":73,"NereusWB922":42,"mingyuanc":6}},{"path":"src/main/java/seedu/address/logic/newcommands/ShowChildrenListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * Show Task List.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class ShowChildrenListCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"ls\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Show children List of %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_CHILDREN_MANAGER \u003d \"Cannot show children list for this path: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommand.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand() {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" target \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand(AbsolutePath path) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" target \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" if (target \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasChildrenListInCurrentPath()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NOT_CHILDREN_MANAGER);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(state.getCurrPath());","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" state.showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, \"current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_PATH_NOT_FOUND, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // Check path is children manager","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasChildrenListInPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_CHILDREN_MANAGER, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" state.showChildrenList();","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Showing children list for path: \" + target.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ShowChildrenListCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":97}},{"path":"src/main/java/seedu/address/logic/newcommands/ShowTaskListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * Show Task List.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class ShowTaskListCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"cat\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Show task list of %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot show task list for this path: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommand.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand() {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" target \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand(AbsolutePath path) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" target \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" if (target \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d state.getCurrPath();","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInCurrentPath()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_TASK_MANAGER, currPath.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(currPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" state.showTaskList();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, currPath.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_PATH_NOT_FOUND, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // Check path is task manager","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_TASK_MANAGER, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" state.showTaskList();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Showing task list for path: \" + target.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ShowTaskListCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/seedu/address/logic/newcommands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands.exceptions;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":" public CommandException(String message) {","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":" super(message);","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" super(message, cause);","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!areOptionsPresent(argMultimap, OPTION_NAME, OPTION_ADDRESS, OPTION_PHONE, OPTION_EMAIL)","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(OPTION_TAG));","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" * Returns true if none of the options contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" private static boolean areOptionsPresent(ArgumentMultimap argumentMultimap, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return Stream.of(options).allMatch(option -\u003e argumentMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"NereusWB922":16,"-":45}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Stores mapping of options to their respective arguments.","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * can be inserted multiple times for the same option.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /** Options mapped to their respective arguments**/","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private final Map\u003cOption, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Associates the specified argument value with {@code option} key in this map.","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param option Option key with which the specified argument value is to be associated","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param argValue Argument value to be associated with the specified option key","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public void put(Option option, String argValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e argValues \u003d getAllValues(option);","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" argMultimap.put(option, argValues);","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Returns the last value of {@code option}.","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cString\u003e getValue(Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e values \u003d getAllValues(option);","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns all values of {@code option}.","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * If the option does not exist or has no values, this will return an empty list.","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public List\u003cString\u003e getAllValues(Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (!argMultimap.containsKey(option)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(option));","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * Returns the preamble (text before the first valid option). Trims any leading/trailing spaces.","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return getValue(new Option(\"\")).orElse(\"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" * Throws a {@code ParseException} if any of the options given in {@code options} appeared more than","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" public void verifyNoDuplicateOptionsFor(Option... options) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Option[] duplicatedOptions \u003d Stream.of(options).distinct()","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" .filter(option -\u003e argMultimap.containsKey(option) \u0026\u0026 argMultimap.get(option).size() \u003e 1)","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" .toArray(Option[]::new);","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (duplicatedOptions.length \u003e 0) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicateOptions(duplicatedOptions));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"NereusWB922":27,"-":51}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where options are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps options to their","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * respective argument values. Only the given options will be recognized in the arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param options Options to tokenize the arguments string with","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @return ArgumentMultimap object that maps options to their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static ArgumentMultimap tokenize(String argsString, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" // Add a space at the end to avoid skipping last option without value, e.g. \"-t smart -t\"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" List\u003cOptionPosition\u003e positions \u003d findAllOptionPositions(argsString + \" \", options);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" return extractArguments(argsString + \" \", positions);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Finds all zero-based option positions in the given arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @param options Options to find in the arguments string","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @return List of zero-based option positions in the given arguments string","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" private static List\u003cOptionPosition\u003e findAllOptionPositions(String argsString, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return Arrays.stream(options)","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" .flatMap(option -\u003e findOptionPositions(argsString, option).stream())","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" * {@see findAllOptionPositions}","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private static List\u003cOptionPosition\u003e findOptionPositions(String argsString, Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" List\u003cOptionPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" // find long name","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" String longName \u003d option.getLongName();","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" int longNamePosition \u003d findOptionPosition(argsString, longName, 0);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" while (longNamePosition !\u003d -1) {","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" OptionPosition extendedOption \u003d new OptionPosition(option, longNamePosition, false);","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" positions.add(extendedOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" longNamePosition \u003d findOptionPosition(argsString, longName, longNamePosition);","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // find short name (if applicable)","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (option.hasShortName()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" String shortName \u003d option.getShortName();","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" int shortNamePosition \u003d findOptionPosition(argsString, shortName, 0);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" while (shortNamePosition !\u003d -1) {","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" OptionPosition extendedOption \u003d new OptionPosition(option, shortNamePosition, true);","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" positions.add(extendedOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" shortNamePosition \u003d findOptionPosition(argsString, shortName, shortNamePosition);","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" * Returns the index of the first occurrence of {@code option} in","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * is valid if there is a whitespace before {@code option}. Returns -1 if no","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code option} \u003d \"p/\" and","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code option} \u003d \"p/\" and","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" private static int findOptionPosition(String argsString, String option, int fromIndex) {","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" int optionIndex \u003d argsString.indexOf(\" \" + option + \" \", fromIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" return optionIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" : optionIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Extracts options and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" * extracted options to their respective arguments. Options are extracted based on their zero-based positions in","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" * @param optionPositions Zero-based positions of all options in {@code argsString}","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * @return ArgumentMultimap object that maps options to their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cOptionPosition\u003e optionPositions) {","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" optionPositions.sort((option1, option2) -\u003e option1.getStartPosition() - option2.getStartPosition());","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" // Insert a OptionPosition to represent the preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" OptionPosition preambleMarker \u003d new OptionPosition(new Option(\"\"), 0, false);","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" optionPositions.add(0, preambleMarker);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" // Add a dummy OptionPosition to represent the end of the string","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" OptionPosition endPositionMarker \u003d new OptionPosition(new Option(\"\"), argsString.length(), false);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" optionPositions.add(endPositionMarker);","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" // Map options to their argument values (if any)","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c optionPositions.size() - 1; i++) {","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" // Extract and store options and their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" Option argOption \u003d optionPositions.get(i).getOption();","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" String argValue \u003d extractArgumentValue(argsString, optionPositions.get(i), optionPositions.get(i + 1));","lastModifiedDate":"2023-10-10"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" argMultimap.put(argOption, argValue);","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentOptionPosition}.","lastModifiedDate":"2023-10-10"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" * The end position of the value is determined by {@code nextOptionPosition}.","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" OptionPosition currentOptionPosition,","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" OptionPosition nextOptionPosition) {","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" Option option \u003d currentOptionPosition.getOption();","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" int optionLength \u003d currentOptionPosition.isShortHand()","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" ? option.getShortNameLength()","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" : option.getLongNameLength();","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" int valueStartPos \u003d currentOptionPosition.getStartPosition() + optionLength;","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" String value \u003d argsString.substring(valueStartPos, nextOptionPosition.getStartPosition());","lastModifiedDate":"2023-10-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" * Represents a option\u0027s position in an arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" private static class OptionPosition {","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" private final int startPosition;","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" private final Option option;","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" private final boolean isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" OptionPosition(Option option, int startPosition, boolean isShortHand) {","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" this.option \u003d option;","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" this.isShortHand \u003d isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" Option getOption() {","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" return option;","lastModifiedDate":"2023-10-10"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" boolean isShortHand() {","lastModifiedDate":"2023-10-10"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"NereusWB922":91,"-":81}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /* Option definitions */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_NAME \u003d new Option(\"--name\", \"-n\");","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_PHONE \u003d new Option(\"--phone\", \"-p\");","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_EMAIL \u003d new Option(\"--email\", \"-e\");","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_ADDRESS \u003d new Option(\"--address\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_TAG \u003d new Option(\"--tag\", \"-t\");","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_ID \u003d new Option(\"--id\", \"-i\");","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_DESC \u003d new Option(\"--desc\", \"-d\");","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_DATETIME \u003d new Option(\"--datetime\", \"-dt\");","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" public static final Option OPTION_ALL \u003d new Option(\"--all\", \"-al\");","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"zannloo":1,"NereusWB922":9,"-":8}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_PHONE).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" parseTagsForEdit(argMultimap.getAllValues(OPTION_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"NereusWB922":16,"-":69}},{"path":"src/main/java/seedu/address/logic/parser/Option.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * An option is a command line argument that can be used in a command.","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * An option typically has a long name and may have an optional short name.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * E.g. \u0027--name\u0027 in \u0027mkstu ~/grp-001/A12345678Y --name Ming Yuan\u0027.","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Option {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private final String longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private final String shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private final boolean hasShortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Constructs an option with both long and short names.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param longName The long name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param shortName The short name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Option(String longName, String shortName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" this.longName \u003d longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.shortName \u003d shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.hasShortName \u003d true;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Constructs an option with only a long name.","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param longName The long name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public Option(String longName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.longName \u003d longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.shortName \u003d null;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" this.hasShortName \u003d false;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public boolean hasShortName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" return hasShortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public int getShortNameLength() {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return getShortName().length();","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public int getLongNameLength() {","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" return getLongName().length();","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public String getLongName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public String getShortName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" return shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return this.longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(longName, shortName);","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Option)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" Option otherOption \u003d (Option) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (shortName !\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return longName.equals(otherOption.longName) \u0026\u0026 shortName.equals(otherOption.shortName);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" return longName.equals(otherOption.longName);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"NereusWB922":86}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ChangeDirectoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ChangeDirectoryCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ChangeDirectoryCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class ChangeDirectoryCommandParser implements Parser\u003cChangeDirectoryCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ChangeDirectoryCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ChangeDirectoryCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * and returns an ChangeDirectoryCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public ChangeDirectoryCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, ChangeDirectoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Creating ChangeDirectoryCommand with dest: \" + path.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return new ChangeDirectoryCommand(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":52}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ALL;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DATETIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateDeadlineForGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"public class CreateDeadlineCommandParser implements Parser\u003cCreateDeadlineCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" //deadline: only need one deadline command","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateDeadlineCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateDeadlineCommand object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args, OPTION_DESC, OPTION_DATETIME, OPTION_ALL);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_DESC, OPTION_DATETIME)","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_DESC, OPTION_DATETIME, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" LocalDateTime by \u003d ParserUtil.parseDateTime(argMultimap.getValue(OPTION_DATETIME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" Deadline deadline \u003d new Deadline(argMultimap.getValue(OPTION_DESC).get(), by);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getValue(OPTION_ALL).isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommand(targetPath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" String category \u003d ParserUtil.parseCategory(argMultimap.getValue(OPTION_ALL).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommand(targetPath, deadline, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":8,"NereusWB922":53}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class CreateGroupCommandParser implements Parser\u003cCreateGroupCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a group directory.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public CreateGroupCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME);","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_NAME) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME);","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" //todo: is possible to create group without provide id -\u003e will auto generate id","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" if (!targetPath.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(INVALID_PATH_MESSAGE);","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" GroupId id \u003d ParserUtil.parseGroupId(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" Group group \u003d new Group(name, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" return new CreateGroupCommand(targetPath, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":62}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateStudentCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class CreateStudentCommandParser implements Parser\u003cCreateStudentCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a student directory.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateStudentCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateStudentCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CreateStudentCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" //todo: need usage format from command class","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_NAME, OPTION_ADDRESS, OPTION_PHONE, OPTION_EMAIL)","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" //todo: is possible to create student without provide id -\u003e will auto generate id","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" if (!targetPath.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(INVALID_PATH_MESSAGE);","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" StudentId id \u003d ParserUtil.parseStudentId(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" Student student \u003d new Student(new TaskList(new ArrayList\u003c\u003e()), name, email, phone, address, id);","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return new CreateStudentCommand(targetPath, student);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":76}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateTodoCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ALL;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateTodoForGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"public class CreateTodoCommandParser implements Parser\u003cCreateTodoCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" //todo only need one todo command for both group and student","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateTodoForGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateTodoForGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args, OPTION_DESC, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_DESC)","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateTodoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_DESC, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" ToDo todo \u003d new ToDo(argMultimap.getValue(OPTION_DESC).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getValue(OPTION_ALL).isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommand(targetPath, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" String category \u003d ParserUtil.parseCategory(argMultimap.getValue(OPTION_ALL).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommand(targetPath, todo, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":7,"NereusWB922":51}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/DeleteForStudentsAndGroupsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Parses input arguments and creates a new DeleteForStudentsAndGroupsCommand object","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"public class DeleteForStudentsAndGroupsCommandParser implements Parser\u003cDeleteForStudentsAndGroupsCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a group or student directory.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteForStudentsAndGroupsCommand","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" * and returns an DeleteForStudentsAndGroupsCommand object for execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public DeleteForStudentsAndGroupsCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, DeleteForStudentsAndGroupsCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return new DeleteForStudentsAndGroupsCommand(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":31,"NereusWB922":14}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTaskCommandParser.class);","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteForStudentsAndGroupsCommand","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * and returns an DeleteForStudentsAndGroupsCommand object for execution.","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public DeleteTaskCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Parsing delete task command with arguments: \" + args);","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Index parsed (One Based): \" + index.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Error parsing delete task command: \" + pe.getMessage());","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":38}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.EditCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * Parses user input to create an `EditCommand` for editing student or group details.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" * This parser handles commands that allow users to modify information of existing students or groups.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" * Parses the given command arguments and creates an `EditCommand` object.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" * @return An `EditCommand` object based on the parsed arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * @throws ParseException If the command arguments are invalid or if parsing fails.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public EditCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" if (targetPath.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" EditStudentDescriptor editStudentDescriptor \u003d getEditStudentDescriptor(argMultimap);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" if (!editStudentDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return new EditCommand(targetPath, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" // bug: what if user pass phone option?","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" if (targetPath.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" EditGroupDescriptor editGroupDescriptor \u003d getEditGrouDescriptor(argMultimap);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" if (!editGroupDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" return new EditCommand(targetPath, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" return null;","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" private EditStudentDescriptor getEditStudentDescriptor(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ID).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" editStudentDescriptor.setId(ParserUtil.parseStudentId(argMultimap.getValue(OPTION_ID).get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_PHONE).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" .setAddress(ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" return editStudentDescriptor;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" private EditGroupDescriptor getEditGrouDescriptor(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" editGroupDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ID).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" editGroupDescriptor.setId(ParserUtil.parseGroupId(argMultimap.getValue(OPTION_ID).get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return editGroupDescriptor;","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":66,"NereusWB922":39}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/HelpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * The HelpCommandParser class is responsible for parsing user input and creating a HelpCommand","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * based on the input. It implements the Parser interface for parsing commands.","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommandParser implements Parser\u003cHelpCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Parses the user input to create a HelpCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" * @return A HelpCommand based on the input.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * @throws ParseException If the user input is invalid or in the wrong format.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public HelpCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":32,"NereusWB922":3}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/MoveStudentToGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new MoveStudentToGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class MoveStudentToGroupCommandParser implements Parser\u003cMoveStudentToGroupCommand\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the MoveStudentToGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * and returns an MoveStudentToGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @return A MoveStudentToGroupCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public MoveStudentToGroupCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, MoveStudentToGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" String[] paths \u003d argMultimap.getPreamble().split(\" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" if (paths.length !\u003d 2) {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, MoveStudentToGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" RelativePath source \u003d ParserUtil.parseRelativePath(paths[0]);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absoluteSource \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" absoluteSource \u003d currPath.resolve(source);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" RelativePath dest \u003d ParserUtil.parseRelativePath(paths[1]);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absoluteDest \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" absoluteDest \u003d currPath.resolve(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return new MoveStudentToGroupCommand(absoluteSource, absoluteDest);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NereusWB922":61}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" T parse(String userInput, AbsolutePath currPath) throws ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.Option;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class ParserUtil {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new Name(trimmedName);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(phone);","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(address);","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String path} into an {@code RelativePath}.","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code path} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath parseRelativePath(String path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" String trimmedPath \u003d path.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d null;","lastModifiedDate":"2023-10-11"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-11"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" relativePath \u003d new RelativePath(trimmedPath);","lastModifiedDate":"2023-10-11"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-11"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-11"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" return relativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code RelativePath} to extract a {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @param path The {@code RelativePath} to parse.","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * @return The extracted {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException If the path is invalid or doesn\u0027t contain a valid {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" public static StudentId parseStudentId(AbsolutePath path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cStudentId\u003e studentIdOptional \u003d path.getStudentId();","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" if (!studentIdOptional.isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(\"No student id found in the path.\");","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" return studentIdOptional.get();","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String student id} into a {@code StudentId}.","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" public static StudentId parseStudentId(String id) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" if (!StudentId.isValidStudentId(trimmedId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" return new StudentId(trimmedId);","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code RelativePath} to extract a {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" * @param path The {@code RelativePath} to parse.","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" * @return The extracted {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException If the path is invalid or doesn\u0027t contain a valid {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" public static GroupId parseGroupId(AbsolutePath path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupIdOptional \u003d path.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" if (!groupIdOptional.isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(\"No group id found in the path.\");","lastModifiedDate":"2023-10-11"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" return groupIdOptional.get();","lastModifiedDate":"2023-10-11"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String group id} into a {@code GroupId}.","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" public static GroupId parseGroupId(String id) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" if (!GroupId.isValidGroupId(trimmedId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(GroupId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" return new GroupId(trimmedId);","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String dateTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" * @param dateTimeStr The dateTime string.","lastModifiedDate":"2023-10-12"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code path} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" public static LocalDateTime parseDateTime(String dateTimeStr) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(dateTimeStr);","lastModifiedDate":"2023-10-12"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" String trimmedDateTimeStr \u003d dateTimeStr.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" dateTime \u003d LocalDateTime.parse(trimmedDateTimeStr, DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" return dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" * Returns true if none of the options contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-11"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-11"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" public static boolean areOptionsPresent(ArgumentMultimap argumentMultimap, Option... options) {","lastModifiedDate":"2023-10-11"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" return Stream.of(options).allMatch(option -\u003e argumentMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":220,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":221,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":222,"author":{"gitId":"zannloo"},"content":" * Parses a {@code String cat} into a {@code String}.","lastModifiedDate":"2023-10-14"},{"lineNumber":223,"author":{"gitId":"zannloo"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-14"},{"lineNumber":224,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":225,"author":{"gitId":"zannloo"},"content":" * @throws ParseException if the given {@code cat} is invalid.","lastModifiedDate":"2023-10-14"},{"lineNumber":226,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":227,"author":{"gitId":"zannloo"},"content":" public static String parseCategory(String cat) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"zannloo"},"content":" requireNonNull(cat);","lastModifiedDate":"2023-10-14"},{"lineNumber":229,"author":{"gitId":"zannloo"},"content":" String trimmedCat \u003d cat.trim();","lastModifiedDate":"2023-10-14"},{"lineNumber":230,"author":{"gitId":"zannloo"},"content":" if (!(cat.equals(\"allStu\")) \u0026\u0026 !(cat.equals(\"allGrp\"))) {","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"zannloo"},"content":" throw new ParseException(\"Format is invalid. Should be allStu or allGrp\");","lastModifiedDate":"2023-10-14"},{"lineNumber":232,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":233,"author":{"gitId":"zannloo"},"content":" return new String(trimmedCat);","lastModifiedDate":"2023-10-14"},{"lineNumber":234,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"zannloo":15,"NereusWB922":220}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ProfBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ChangeDirectoryCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.EditCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ShowChildrenListCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ShowTaskListCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Parses user input.","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"public class ProfBookParser {","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ProfBookParser.class);","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the applicaiton","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public Command parseCommand(String userInput, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" case CreateStudentCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" return new CreateStudentCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" case CreateGroupCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new CreateGroupCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" case CreateTodoCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" case CreateDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" case MoveStudentToGroupCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return new MoveStudentToGroupCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" case ChangeDirectoryCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return new ChangeDirectoryCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" case ShowTaskListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" case ShowChildrenListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" case DeleteForStudentsAndGroupsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return new DeleteForStudentsAndGroupsCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return new EditCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" return new HelpCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return new DeleteTaskCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NgChunMan":9,"NereusWB922":96}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ShowChildrenListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ShowChildrenListCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ShowChildrenListCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ShowChildrenListCommandParser implements Parser\u003cShowChildrenListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_COMMAND_CREATED \u003d \"Created new \\\"cat\\\" command: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowChildrenListCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ShowChildrenListCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * and returns an ShowChildrenListCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A ShowChildrenListCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, \"Current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" target \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, path.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommand(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ShowTaskListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ShowTaskListCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ShowTaskListCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ShowTaskListCommandParser implements Parser\u003cShowTaskListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_COMMAND_CREATED \u003d \"Created new \\\"ls\\\" command: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ShowTaskListCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * and returns an ShowTaskListCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A ShowTaskListCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, \"Current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" target \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, path.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommand(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/field/EditGroupDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.model.field;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" * Represents the descriptor for editing the details of a group in ProfBook. The descriptor contains fields for","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * updating the group\u0027s name and id. It helps to track which fields have been edited by the user.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * An instance of this class is used within the {@code EditCommand} to specify the details to be edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"public class EditGroupDescriptor {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" private Name name;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public EditGroupDescriptor() {}","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" public EditGroupDescriptor(EditGroupDescriptor toCopy) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" return CollectionUtil.isAnyNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" * Sets the name field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" * @param name The new name to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * Gets the name field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the name if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" * Sets the id field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" * @param id The new id to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" public void setId(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" * Gets the id field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the id if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cId\u003e getId() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditStudentDescriptor is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditGroupDescriptor)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor otherEditGroupDescriptor \u003d (EditGroupDescriptor) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" if (this.name \u003d\u003d null || otherEditGroupDescriptor.name \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" if (this.id \u003d\u003d null || otherEditGroupDescriptor.id \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" return this.name.equals(otherEditGroupDescriptor.name) \u0026\u0026 this.id.equals(otherEditGroupDescriptor.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditStudentDescriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":114}},{"path":"src/main/java/seedu/address/model/field/EditStudentDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.model.field;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" * Represents the descriptor for editing the details of a student in ProfBook. The descriptor contains fields for","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * updating the student\u0027s name, phone, email, address, and id. It helps to track which fields have been edited by","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" * the user.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * An instance of this class is used within the {@code EditCommand} to specify the details to be edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"public class EditStudentDescriptor {","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" private Name name;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" private Phone phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" private Email email;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" private Address address;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private StudentId id;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" public EditStudentDescriptor() {}","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public EditStudentDescriptor(EditStudentDescriptor toCopy) {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Sets the name field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" * @param name The new name to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" * Gets the name field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the name if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" * Sets the phone field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * @param phone The new phone to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * Gets the phone field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the phone if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" * Sets the email field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" * @param email The new phone to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" * Gets the email field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the email if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" * Sets the address field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" * @param address The new address to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" * Gets the address field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the address if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" * Sets the id field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" * @param id The new id to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" public void setId(StudentId id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" * Gets the id field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the id if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cStudentId\u003e getId() {","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditStudentDescriptor is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditStudentDescriptor)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor otherEditStudentDescriptor \u003d (EditStudentDescriptor) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" return this.name.equals(otherEditStudentDescriptor.name)","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.phone.equals(otherEditStudentDescriptor.phone)","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.email.equals(otherEditStudentDescriptor.email)","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.address.equals(otherEditStudentDescriptor.address)","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.id.equals(otherEditStudentDescriptor.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditStudentDescriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" .add(\"address\", address)","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":173,"NereusWB922":4}},{"path":"src/main/java/seedu/address/model/id/GroupId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * The {@code GroupId} class represents a group identifier (ID)","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * with a specific format.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"public class GroupId extends Id {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final String VALIDATION_REGEX \u003d \"[Gg][Rr][Pp]-\\\\d{3}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \"Group Id should be in the format \u0027grp-XXX\u0027 where XXX is a 3-digit number.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Private constructor to create a {@code GroupId} object with a valid group id string.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param id The valid group Id.","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public GroupId(String id) {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidGroupId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return true if given string is a valid group id.","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static boolean isValidGroupId(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof GroupId)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" GroupId otherStudentId \u003d (GroupId) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return id.equals(otherStudentId.id);","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(id, \"GroupId\");","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/id/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Represents an identifier (ID) with a string value.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public abstract class Id {","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" protected final String id;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code Id} object with the specified ID value.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param id The ID value to store.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public Id(String id) {","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id.toUpperCase();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" return this.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":22}},{"path":"src/main/java/seedu/address/model/id/StudentId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * The {@code StudentId} class represents a student identifier (ID)","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * with a specific format.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"public class StudentId extends Id {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}[a-zA-Z]\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \"The string should be 4 digits number follow with any letter.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code StudentId} object with the valid ID value.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param id A valid student id.","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public StudentId(String id) {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidStudentId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return true if given string is a valid studentId","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static boolean isValidStudentId(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof StudentId)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" StudentId otherStudentId \u003d (StudentId) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return id.equals(otherStudentId.id);","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(id, \"StudentId\");","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/id/exceptions/InvalidIdException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code InvalidIdException} class represents an exception that is thrown when an invalid ID is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * It is used to indicate that an ID does not match the expected format or criteria.","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class InvalidIdException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidIdException} with the specified error message.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public InvalidIdException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/seedu/address/model/path/AbsolutePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.exceptions.InvalidIdException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElement;","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElementType;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Absolute Path for storing group and student id.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"public class AbsolutePath extends Path {","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code AbsolutePath} from a path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param path The path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException if the given path string is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (!path.startsWith(\"~\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Absolute path should start with ~/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" commonConstructor(path);","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" logger.info(this.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code AbsolutePath} with path element list.","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @param fullPathElements The list of elements for the full path.","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath(List\u003cPathElement\u003e fullPathElements) {","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" super(fullPathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * Resolves a relative path against this absolute path, resulting in a new absolute path.","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" * @param relative The relative path to resolve against this absolute path.","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" * @return A new AbsolutePath representing the resolved path.","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered during resolution.","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath resolve(RelativePath relative) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e fullPathElements \u003d new ArrayList\u003c\u003e(this.pathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e relativePathElements \u003d relative.pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // If relativePath start from root, should return the relativePath","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (relativePathElements.get(0).getType() \u003d\u003d PathElementType.ROOT) {","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return new AbsolutePath(relativePathElements);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" Path.appendPathElements(fullPathElements, relativePathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new AbsolutePath(fullPathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a group directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a group directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public boolean isGroupDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.GROUPID;","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a student directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a student directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public boolean isStudentDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.STUDENTID;","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a root directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a root directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public boolean isRootDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.ROOT;","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the student ID from the path directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" * @return The student ID.","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" * @throws UnsupportedPathOperationException If the operation is not supported based on the directory\u0027s state.","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidIdException If the retrieved ID is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cStudentId\u003e getStudentId() {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" if (this.isGroupDirectory() || this.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c this.pathElements.size(); i++) {","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" PathElement currElement \u003d this.pathElements.get(i);","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" if (currElement.getType() \u003d\u003d PathElementType.STUDENTID) {","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" return Optional.of(new StudentId(currElement.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the group ID from the path directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * @return The group ID.","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * @throws UnsupportedPathOperationException If the operation is not supported based on the directory\u0027s state.","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidIdException If the retrieved ID is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cGroupId\u003e getGroupId() {","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" if (this.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c this.pathElements.size(); i++) {","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" PathElement currElement \u003d this.pathElements.get(i);","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" if (currElement.getType() \u003d\u003d PathElementType.GROUPID) {","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" return Optional.of(new GroupId(currElement.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof AbsolutePath)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" return super.equals(obj);","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(super.hashCode(), \"ABSOLUTEPATH\");","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":160}},{"path":"src/main/java/seedu/address/model/path/Path.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElement;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElementType;","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.exceptions.InvalidPathElementException;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Represents a path in our application.","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public abstract class Path {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(Path.class);","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" protected final List\u003cPathElement\u003e pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Constructs an empty {@code Path}.","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public Path() {","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" this.pathElements \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code Path} from a list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param pathElements The list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public Path(List\u003cPathElement\u003e pathElements) {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.pathElements \u003d pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * Common constructor logic for initializing a {@code Path} from a string representation.","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * @param path The string representation of the path.","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" protected void commonConstructor(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" if (path.startsWith(\"/\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" path \u003d path.substring(1, path.length());","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (path.endsWith(\"/\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" path \u003d path.substring(0, path.length() - 1);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" String[] elementStrs \u003d path.split(\"/\");","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e elements \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" for (String elementStr : elementStrs) {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" PathElement element \u003d PathElement.parsePathElement(elementStr);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" elements.add(element);","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathElementException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Encountered invalid path element: \" + elementStr);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" appendPathElements(this.pathElements, elements);","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" * Appends a list of path elements to an existing list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Handles path element traversal, validation, and structure checks.","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param destination The list to which path elements will be appended.","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @param source The list of path elements to append.","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered or if the path structure is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" protected static void appendPathElements(List\u003cPathElement\u003e destination, List\u003cPathElement\u003e source)","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" for (PathElement element : source) {","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" if (element.getType() \u003d\u003d PathElementType.CURRENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" if (element.getType() \u003d\u003d PathElementType.PARENT \u0026\u0026 !destination.isEmpty()) {","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" PathElement prevElement \u003d destination.get(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" if (prevElement.getType() \u003d\u003d PathElementType.ROOT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Unable to navigate above home directory\");","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" if (prevElement.getType() !\u003d PathElementType.PARENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" destination.remove(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" } else if (!destination.isEmpty()) {","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" PathElement prevElement \u003d destination.get(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" int priorityDiff \u003d element.getPriorityDiff(prevElement);","lastModifiedDate":"2023-09-29"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" // Make sure curr element is has 1 level lower","lastModifiedDate":"2023-09-29"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" if (priorityDiff !\u003d -1 \u0026\u0026 prevElement.getType() !\u003d PathElementType.PARENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Invalid path structure.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" destination.add(element);","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" if (destination.size() \u003d\u003d 0) {","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" destination.add(PathElement.parsePathElement(\".\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathElementException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(e.getMessage());","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" logger.info(destination.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e pathElementStrings \u003d pathElements.stream()","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" .map(PathElement::toString)","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" return String.join(\"/\", pathElementStrings);","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof Path)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" Path other \u003d (Path) obj;","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" return this.pathElements.equals(other.pathElements);","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(pathElements);","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":144}},{"path":"src/main/java/seedu/address/model/path/RelativePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Relative Path for storing group and student id.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class RelativePath extends Path {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code RelativePath} from a path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param path The path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException if the given path string is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public RelativePath(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" commonConstructor(path);","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" logger.info(path.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof RelativePath)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return super.equals(obj);","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(super.hashCode(), \"RELATIVEPATH\");","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":45}},{"path":"src/main/java/seedu/address/model/path/element/PathElement.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.exceptions.InvalidPathElementException;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Represent an element in a path.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class PathElement {","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private String elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private PathElementType type;","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code PathElement} with the element string and type.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param elementStr The element string.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of the element.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public PathElement(String elementStr, PathElementType type) {","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.elementStr \u003d elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.type \u003d type;","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Parses a path element from a string and returns a {@code PathElement} object.","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param element The string representation of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @return A PathElement object representing the parsed path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathElementException If the path element is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public static PathElement parsePathElement(String element) throws InvalidPathElementException {","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (element.equals(\"~\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.ROOT);","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" } else if (element.equals(\"..\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.PARENT);","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" } else if (element.equals(\".\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.CURRENT);","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" } else if (StudentId.isValidStudentId(element)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.STUDENTID);","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } else if (GroupId.isValidGroupId(element)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.GROUPID);","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathElementException();","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" * Gets the type of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" * @return The type of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public PathElementType getType() {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" return this.type;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * Calculates the priority difference between two path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @param other The other path element to compare with.","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * @return The priority difference.","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public int getPriorityDiff(PathElement other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return this.type.getPriority() - other.type.getPriority();","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" return this.elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof PathElement)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" PathElement other \u003d (PathElement) obj;","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return elementStr.equals(other.elementStr) \u0026\u0026 type \u003d\u003d other.type;","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(elementStr, type);","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":94}},{"path":"src/main/java/seedu/address/model/path/element/PathElementType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code PathElementType} enum represents the types of elements that can appear in a path.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public enum PathElementType {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" STUDENTID(0), GROUPID(1), ROOT(2), PARENT(-1), CURRENT(-2);","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" private final int priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" PathElementType(int priority) {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public int getPriority() {","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" return this.priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":18}},{"path":"src/main/java/seedu/address/model/path/element/exceptions/InvalidPathElementException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An exception thrown when an invalid path element is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidPathElementException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidPathElementException} with the specified detail message.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param message The message explaining the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public InvalidPathElementException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(\"Invalid id provided.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/seedu/address/model/path/exceptions/InvalidPathException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An exception thrown when an invalid path is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidPathException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidPathException} with a message.","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param message The message explaining the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidPathException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/seedu/address/model/path/exceptions/UnsupportedPathOperationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code UnsupportedPathOperationException} class represents an","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * exception that is thrown when an operation is not supported or is","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * invalid based on the state of a path directory.","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public class UnsupportedPathOperationException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code UnsupportedPathOperationException} with the specified error message.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing why the operation is not supported or invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public UnsupportedPathOperationException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/seedu/address/model/profbook/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Address {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" /*","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" * @param address A valid address.","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" public Address(String address) {","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(address);","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" value \u003d address;","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":65}},{"path":"src/main/java/seedu/address/model/profbook/ChildrenAndTaskListManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * A child element that is both Children and TaskList Manager.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public abstract class ChildrenAndTaskListManager\u003cT extends IChildElement\u003e implements IChildElement {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private ChildrenManager\u003cT\u003e childrenManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private TaskListManager taskListManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children and task list manager.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public ChildrenAndTaskListManager() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" childrenManager \u003d new ChildrenManager\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" taskListManager \u003d new TaskListManager();","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children and tasklist manager with given children and tasklist.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public ChildrenAndTaskListManager(Map\u003cId, T\u003e children, TaskList taskList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" childrenManager \u003d new ChildrenManager\u003c\u003e(children);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" taskListManager \u003d new TaskListManager(taskList);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager\u003cT\u003e getChildrenManger() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return childrenManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public TaskListManager getTaskListManager() {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" return taskListManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Children Manager \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * @param child - The child in question","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" childrenManager.addChild(id, child);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" * @return The deleted Child","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.deleteChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return true if the child is present","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.hasChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @return The specified Child","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * Returns Number of current children","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * @return The Number of current children","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.numOfChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" * @return list of all current children","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getAllChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public Map\u003cId, T\u003e getChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList Manager \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" * Adds a new tasks to the task list","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" * @param t","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" taskListManager.addTask(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @return The deleted class","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" public Task deleteTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.deleteTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" * @return The marked task","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" public Task markTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.markTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" * @return The un-marked task","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" public Task unmarkTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.unmarkTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" * @param query - The String to match","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e findTask(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.findTask(query);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" * @return The specified task","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" public Task getTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.getTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" * Returns all current task","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.getAllTask();","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" public boolean checkDuplicates(Task t) {","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.checkDuplicates(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChildrenAndTaskListManager\u003c?\u003e)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e otherChildrenAndTaskListManager \u003d (ChildrenAndTaskListManager\u003c?\u003e) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" return this.childrenManager.equals(otherChildrenAndTaskListManager.childrenManager)","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.taskListManager.equals(otherChildrenAndTaskListManager.taskListManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":204}},{"path":"src/main/java/seedu/address/model/profbook/ChildrenManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the logic of a ProfBookModel that contains children","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * As of v1.2 it is only root and group class","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e to represent the children type, as of v1.2 only student and group","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class ChildrenManager\u003cT extends IChildElement\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * Maps the id to the children","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" private final Map\u003cId, T\u003e children;","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Construct a children manager with given task list and children map.","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager(Map\u003cId, T\u003e children) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(children);","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" this.children \u003d children;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children manager.","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" T currChild \u003d this.children.get(id);","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" if (currChild !\u003d null) {","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" throw new DuplicateChildException(id.toString());","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.children.put(id, child);","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" T child \u003d this.getChild(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.children.remove(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return child;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * @return true if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" return this.children.containsKey(id);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" T child \u003d this.children.get(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" if (child \u003d\u003d null) {","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" throw new NoSuchChildException(id.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return child;","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" return this.children.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" * @return list of all current children","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.children.values());","lastModifiedDate":"2023-09-29"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" for (Map.Entry\u003cId, T\u003e entry : this.children.entrySet()) {","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ret.append(entry.getKey().toString()).append(\": \").append(entry.getValue().toString()).append(\"\\n\");","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" return ret.toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" public Map\u003cId, T\u003e getChildren() {","lastModifiedDate":"2023-10-01"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" return new HashMap\u003c\u003e(this.children);","lastModifiedDate":"2023-10-01"},{"lineNumber":124,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChildrenManager\u003c?\u003e)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" ChildrenManager\u003c?\u003e otherChildrenManger \u003d (ChildrenManager\u003c?\u003e) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" return this.children.equals(otherChildrenManger.children);","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":26,"mingyuanc":114}},{"path":"src/main/java/seedu/address/model/profbook/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Email {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" + \"characters.\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" // alphanumeric and special characters","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @param email A valid email address.","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public Email(String email) {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(email);","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" value \u003d email;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":79}},{"path":"src/main/java/seedu/address/model/profbook/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.GroupCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for a group within a tutorial group","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class Group extends ChildrenAndTaskListManager\u003cStudent\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Name of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" private final Name name;","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" * Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" private final Id id;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Group instance with all fields.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The task list associated with this group","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" * @param students - The list of students in this group","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * @param name - The group name","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public Group(TaskList taskList, Map\u003cId, Student\u003e students, Name name, Id id) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super(students, taskList);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(name, id);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new Group instance without task list and student map.","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public Group(Name name, Id id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public Id getId() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return id;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public Name getName() {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return name;","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public Group getClone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" return new Group(new TaskList(getAllTask()), this.getChildren(),","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" new Name(this.name.fullName), this.id);","lastModifiedDate":"2023-10-01"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return new GroupCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" .add(\"Group Id\", id)","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" .add(\"Students\", super.toString())","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherGroup)","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.name.equals(otherGroup.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.id.equals(otherGroup.id);","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":4,"NgChunMan":3,"NereusWB922":45,"mingyuanc":52}},{"path":"src/main/java/seedu/address/model/profbook/IChildElement.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" * Encapsulate required logic for child element of ProfBok Model","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public interface IChildElement extends Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" IChildElement getClone();","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":4,"mingyuanc":12}},{"path":"src/main/java/seedu/address/model/profbook/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Name {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" /*","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" public final String fullName;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" * @param name A valid name.","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" public Name(String name) {","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" fullName \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" return fullName;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":67}},{"path":"src/main/java/seedu/address/model/profbook/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Phone {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" public Phone(String phone) {","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(phone);","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" value \u003d phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":61}},{"path":"src/main/java/seedu/address/model/profbook/Root.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for the whole application data","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Root extends ChildrenManager\u003cGroup\u003e {","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Constructs a profbook instance with task list and children.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The Task list associated with this object","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * @param children - The Groups under the root","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public Root(Map\u003cId, Group\u003e children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" super(children);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new prof book instance.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public Root() {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", \"Root\")","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" .add(\"Students\", super.toString())","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Root)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" Root otherRoot \u003d (Root) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherRoot);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":25,"mingyuanc":26}},{"path":"src/main/java/seedu/address/model/profbook/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.Set;","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.StudentCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for a student\u0027s data","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"public class Student extends TaskListManager implements IChildElement {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" // Identity field","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * Name of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" private final Name name;","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private final Email email;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" private final Phone phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" // Data fields","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" private final Address address;","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Unique identifier of the student","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private final StudentId id;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Student instance with all fields.","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The task list associated with this student","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" * @param name - The group name","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * @param email - The email of the student","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" * @param phone - Student\u0027s Phone number","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * @param address - Students address","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public Student(TaskList taskList, Name name, Email email, Phone phone, Address address, StudentId id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" super(taskList);","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new Student without task list.","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public Student(Name name, Email email, Phone phone, Address address, StudentId id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" this.email \u003d email;","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" this.address \u003d address;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" public Name getName() {","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" return name;","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public StudentId getId() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" return id;","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" public Email getEmail() {","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" return email;","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" public Phone getPhone() {","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" return phone;","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" public Address getAddress() {","lastModifiedDate":"2023-09-30"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" return address;","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-09-30"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return tags;","lastModifiedDate":"2023-09-30"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" return new StudentCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public Student getClone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return new Student(new TaskList(getAllTask()), new Name(this.name.fullName),","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" new Email(this.email.value), new Phone(this.phone.value), new Address(this.address.value), this.id);","lastModifiedDate":"2023-10-01"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" .add(\"Student Id\", id)","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" .add(\"address\", address)","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-29"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherStudent)","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.address.equals(otherStudent.address)","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.email.equals(otherStudent.email)","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.id.equals(otherStudent.id)","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.name.equals(otherStudent.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.phone.equals(otherStudent.phone)","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.tags.equals(otherStudent.tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":50,"mingyuanc":94}},{"path":"src/main/java/seedu/address/model/profbook/TaskListManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" * Encapsulate the logic of a prof book model, mainly the need for a task list","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * at every level","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"public class TaskListManager {","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" * Task list instance of this class","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Constructs a task list manager with task list given","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" public TaskListManager(TaskList taskList) {","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(taskList);","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new task list manager","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public TaskListManager() {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * Check if index is between 0 and task list size.","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return index \u003e 0 \u0026\u0026 index \u003c\u003d taskList.size();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Return task list size.","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return taskList.size();","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" * Adds a new tasks to the task list","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted class","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" public Task deleteTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.delete(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" * @return The marked task","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" public Task markTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.mark(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" * @return The un-marked task","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public Task unmarkTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.mark(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-09-29"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" * @param query - The String to match","lastModifiedDate":"2023-09-29"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-09-29"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":" public List\u003cTask\u003e findTask(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-10-01"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.find(query);","lastModifiedDate":"2023-09-29"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-09-29"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" * @return The specified task","lastModifiedDate":"2023-09-29"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" public Task getTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" * Returns all current task","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.getAllTask();","lastModifiedDate":"2023-09-29"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":128,"author":{"gitId":"Nid21cs"},"content":" public boolean checkDuplicates(Task t) {","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Nid21cs"},"content":" return this.taskList.containsDuplicates(t);","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof TaskListManager)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" TaskListManager otherTaskListManager \u003d (TaskListManager) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" return this.taskList.equals(otherTaskListManager.taskList);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":42,"mingyuanc":98,"Nid21cs":6}},{"path":"src/main/java/seedu/address/model/profbook/exceptions/DuplicateChildException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook.exceptions;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals that the operation will result in duplicate Child (Children are considered duplicates if they have the same","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" * id).","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"public class DuplicateChildException extends RuntimeException {","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" public DuplicateChildException(String e) {","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" super(\"Operation would result in duplicate \" + e);","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"mingyuanc":11}},{"path":"src/main/java/seedu/address/model/profbook/exceptions/NoSuchChildException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals when there is no such child present in current class","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"public class NoSuchChildException extends RuntimeException {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" public NoSuchChildException(String e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" super(\"No such child found: \" + e);","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":10}},{"path":"src/main/java/seedu/address/model/statemanager/ChildOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.ChildrenAndTaskListManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.ChildrenManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.TaskListManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the logic to perform a generic child operation for child manager","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e The type of child that is required","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"public class ChildOperation\u003cT extends IChildElement\u003e implements IChildOperation\u003cT\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private final ChildrenManager\u003cT\u003e baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" private final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" public ChildOperation(ChildrenManager\u003cT\u003e baseDir) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" this.baseDir \u003d baseDir;","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addChild(id, child);","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" * @return true if child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.hasChild(id);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"deleting\" + id.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.deleteChild(id);","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"getting\" + id.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getChild(id);","lastModifiedDate":"2023-10-01"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" * Updates the child with a new child of the same id","lastModifiedDate":"2023-10-01"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" * @param child - The new child to replace old child","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-01"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public void updateChild(Id id, T child) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.deleteChild(id);","lastModifiedDate":"2023-10-01"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-01"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addChild(id, child);","lastModifiedDate":"2023-10-01"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" } catch (DuplicateChildException e) {","lastModifiedDate":"2023-10-01"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" this.logger.warning(\"In updateChild, unexpected duplicate error\");","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" throw new RuntimeException(\"ERROR: Code should not reach here\");","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" * @return List of all current children","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"getting all child\");","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.baseDir.getAllChildren());","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.numOfChildren();","lastModifiedDate":"2023-10-01"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" public void addTaskToAllChildren(Task task, int level) {","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" List\u003cIChildElement\u003e children \u003d new ArrayList\u003c\u003e(getAllChildren());","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" level--;","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" while (level \u003e 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" List\u003cIChildElement\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" for (IChildElement child : children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" if (child instanceof ChildrenAndTaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e ctlm \u003d (ChildrenAndTaskListManager\u003c?\u003e) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" list.addAll(ctlm.getAllChildren());","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" children \u003d new ArrayList\u003c\u003e(list);","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" level--;","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" addAllTaskToAllChildren(task, children);","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" private void addAllTaskToAllChildren(Task task, List\u003c? extends IChildElement\u003e children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" for (IChildElement child : children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" Task clonedTask \u003d task.clone();","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" if (child instanceof TaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" TaskListManager tlm \u003d (TaskListManager) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" tlm.addTask(clonedTask);;","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" } else if (child instanceof ChildrenAndTaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e ctlm \u003d (ChildrenAndTaskListManager\u003c?\u003e) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" ctlm.addTask(clonedTask);","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(\"All children must be task list manager.\");","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"mingyuanc"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"mingyuanc"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"mingyuanc"},"content":" ChildOperation\u003c?\u003e that \u003d (ChildOperation\u003c?\u003e) o;","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"mingyuanc"},"content":" return Objects.equals(baseDir, that.baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"mingyuanc"},"content":" return Objects.hash(baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":39,"mingyuanc":134}},{"path":"src/main/java/seedu/address/model/statemanager/IChildOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" * Interface for classes that operations that involve children, ensures that all","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" * basic functions are present to interact","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" * with ChildManager instance.","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e Type of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"public interface IChildOperation\u003cT extends IChildElement\u003e {","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" void addChild(Id id, T child) throws DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" boolean hasChild(Id id);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" T deleteChild(Id id) throws NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" T getChild(Id id) throws NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" * Updates the child with a new child of the same id","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" * @param child - The new child to replace old child","lastModifiedDate":"2023-10-01"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-01"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" void updateChild(Id id, T child) throws NoSuchChildException;","lastModifiedDate":"2023-10-01"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" * @return list of all current children","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" List\u003cT\u003e getAllChildren();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Adds a task to children within the hierarchy up to a specified depth level.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * e.g. if target is root and level is 2, task will be added to all student","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public void addTaskToAllChildren(Task task, int level);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" int numOfChildren();","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"zannloo":1,"NereusWB922":7,"mingyuanc":74}},{"path":"src/main/java/seedu/address/model/statemanager/ITaskOperations.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" * Interface for classes that operations that involve a task list, ensures that all basic functions are present to","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" * interact with TaskListManager instance","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"public interface ITaskOperations {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Checks if current task is present","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" boolean hasTask(Task t);","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Check if index is between 0 and task list size.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" boolean isValidIndex(int index);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return the size of the task list.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" int getTaskListSize();","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Adds a new tasks to the task list.","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Task must not be duplicated class.","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" void addTask(Task t);","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted class","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" Task deleteTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" * @return The marked task","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" Task markTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @return The un-marked task","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" Task unmarkTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" * @param query - The String to match","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-09-30"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" List\u003cTask\u003e findTask(String query) throws NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" * @return The specified task","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" Task getTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" * Returns all current task","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-09-30"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" List\u003cTask\u003e getAllTasks() throws NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":12,"mingyuanc":74,"Nid21cs":3}},{"path":"src/main/java/seedu/address/model/statemanager/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * The API of the State component.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public interface State {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings();","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ProfBook State \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Return current directory.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getCurrPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * Return current display path.","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getDisplayPath();","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * Return true if display panel is showing task list.","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" public boolean isShowTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Return true if current path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInCurrentPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" * Return true if current path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInCurrentPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Returns true if group in given path exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be path with group information.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * i.e. Group directory or Student Directory.","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public boolean hasGroup(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" * Returns true if student exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be student path.","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public boolean hasStudent(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Returns true if given path exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public boolean hasPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" * Change directory to destination path","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must exist in ProfBook and is not student path.","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" public void changeDirectory(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Display Panel Settings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * Return the current list shown on display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" * Update list with latest data according to","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * current display path and display content.","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public void updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Set the path to be shown on display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must exist in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void setDisplayPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * Return true if current display path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInDisplayPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" * Return true if current display path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInDisplayPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" * Displays a children list on the display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" * This method should be called after checking that the current display path contains children list","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" * by using the {@link hasChildrenListInDisplayPath} method.","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" public void showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" * Displays a task list on the display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" * This method should be called after checking that the current display path contains task list","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" * by using the {@link hasTaskListInDisplayPath} method.","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" public void showTaskList();","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d State Management Operation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * Creates a ChildOperation class that performs operation on root.","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cGroup\u003e rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" * Creates a ChildOperation that performs operation on the specified group.","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be a directory with group information and exist in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cStudent\u003e groupChildOperation(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" * Creates a TaskOperation that performs task operation on the specified task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be a directory with task list and exist in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" public TaskOperation taskOperation(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Helper Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" * Return true if given path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" * Return true if given path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":150,"mingyuanc":1}},{"path":"src/main/java/seedu/address/model/statemanager/StateManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Represents the in-memory model of the ProfBook data.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"public class StateManager implements State {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(State.class);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_INTERNAL_ERROR \u003d \"Internal error: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" private final Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" private final ObservableList\u003cDisplayable\u003e displayList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" private boolean showTaskList \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath displayPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Construct a state manager with curren path, root (ProfBook) and userPrefs.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public StateManager(AbsolutePath currentPath, Root root, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(currentPath, root, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" this.currentPath \u003d currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" this.displayPath \u003d currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d root;","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" return userPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ProfBook State \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getCurrPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return this.currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getDisplayPath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return this.displayPath;","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public boolean isShowTaskList() {","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return this.showTaskList;","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInCurrentPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" return hasTaskListInPath(currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInCurrentPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" return hasChildrenListInPath(currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" public boolean hasGroup(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!path.isRootDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"path must have group information\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" return root.hasChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public boolean hasStudent(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"path must be student path\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" if (!hasGroup(path)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d getGroupFromPath(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return grp.hasChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" public boolean hasPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":" if (path.isRootDirectory()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" if (path.isGroupDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" return root.hasChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d getGroupFromPath(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" return grp.hasChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" public void changeDirectory(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Student path is not navigable\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" currentPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" displayPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Change directory to \" + currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Display Panel Settings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return displayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" public void updateList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" List\u003c? extends Displayable\u003e temp;","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" if (showTaskList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d taskOperation(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" temp \u003d new ArrayList\u003c\u003e(taskOperation.getAllTasks());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":" } else {","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003c? extends IChildElement\u003e childOperation \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" if (displayPath.isRootDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" childOperation \u003d rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" childOperation \u003d groupChildOperation(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" temp \u003d new ArrayList\u003c\u003e(childOperation.getAllChildren());","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" displayList.clear();","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" displayList.setAll(temp);","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" public void setDisplayPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" displayPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInDisplayPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" return hasTaskListInPath(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInDisplayPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" return hasChildrenListInPath(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" public void showChildrenList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasChildrenListInDisplayPath(),","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Current display path must have children list\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" showTaskList \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" public void showTaskList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasTaskListInDisplayPath(),","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Current display path must have task list: \" + displayPath));","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" showTaskList \u003d true;","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d State Management Operation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cGroup\u003e rootChildOperation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" return new ChildOperation\u003c\u003e(root);","lastModifiedDate":"2023-10-16"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cStudent\u003e groupChildOperation(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isGroupDirectory() || path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have group information\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasGroup(path),","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Group must exist in ProfBook\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":237,"author":{"gitId":"NereusWB922"},"content":" return new ChildOperation\u003c\u003e(getGroupFromPath(path).getChildrenManger());","lastModifiedDate":"2023-10-16"},{"lineNumber":238,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":239,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"NereusWB922"},"content":" public TaskOperation taskOperation(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasTaskListInPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have task list\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":246,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"NereusWB922"},"content":" if (path.isGroupDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":249,"author":{"gitId":"NereusWB922"},"content":" return new TaskOperation(getGroupFromPath(path).getTaskListManager());","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"NereusWB922"},"content":" return new TaskOperation(getStudentFromPath(path));","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":254,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":255,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Helper Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":256,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":257,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"NereusWB922"},"content":" return path.isGroupDirectory() || path.isStudentDirectory();","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":261,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":265,"author":{"gitId":"NereusWB922"},"content":" return path.isRootDirectory() || path.isGroupDirectory();","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":267,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":268,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"NereusWB922"},"content":" * Return the group of the given path.","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must has a valid group info","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"NereusWB922"},"content":" * i.e group exists in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"NereusWB922"},"content":" private Group getGroupFromPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isGroupDirectory() || path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have group info\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasGroup(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Group must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"NereusWB922"},"content":" return root.getChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":284,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"NereusWB922"},"content":" * Return the group of the given path.","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be student path that exists in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"NereusWB922"},"content":" private Student getStudentFromPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must be student directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":293,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasStudent(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":294,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Student must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":295,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":296,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":297,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":298,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":299,"author":{"gitId":"NereusWB922"},"content":" return root.getChild(grpId).getChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":300,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":301,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":302,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":303,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":304,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":305,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":306,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":307,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":308,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":309,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof StateManager)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":310,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":311,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":312,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":313,"author":{"gitId":"NereusWB922"},"content":" StateManager otherStateManager \u003d (StateManager) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":314,"author":{"gitId":"NereusWB922"},"content":" return this.showTaskList \u003d\u003d otherStateManager.showTaskList","lastModifiedDate":"2023-10-16"},{"lineNumber":315,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.currentPath.equals(otherStateManager.currentPath)","lastModifiedDate":"2023-10-16"},{"lineNumber":316,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.displayList.equals(otherStateManager.displayList)","lastModifiedDate":"2023-10-16"},{"lineNumber":317,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.displayPath.equals(otherStateManager.displayPath)","lastModifiedDate":"2023-10-16"},{"lineNumber":318,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.root.equals(otherStateManager.root)","lastModifiedDate":"2023-10-16"},{"lineNumber":319,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.userPrefs.equals(otherStateManager.userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":320,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":321,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":322,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":323,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":324,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":325,"author":{"gitId":"NereusWB922"},"content":" .add(\"showTaskList\", showTaskList)","lastModifiedDate":"2023-10-21"},{"lineNumber":326,"author":{"gitId":"NereusWB922"},"content":" .add(\"Current Path\", currentPath)","lastModifiedDate":"2023-10-21"},{"lineNumber":327,"author":{"gitId":"NereusWB922"},"content":" .add(\"Display List\", displayList)","lastModifiedDate":"2023-10-21"},{"lineNumber":328,"author":{"gitId":"NereusWB922"},"content":" .add(\"Display Path\", displayPath)","lastModifiedDate":"2023-10-21"},{"lineNumber":329,"author":{"gitId":"NereusWB922"},"content":" .add(\"root\", root)","lastModifiedDate":"2023-10-21"},{"lineNumber":330,"author":{"gitId":"NereusWB922"},"content":" .add(\"userPrefs\", userPrefs)","lastModifiedDate":"2023-10-21"},{"lineNumber":331,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":332,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":333,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":334,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":300,"mingyuanc":34}},{"path":"src/main/java/seedu/address/model/statemanager/TaskOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.TaskListManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the required logic for task operation","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"public class TaskOperation implements ITaskOperations {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_DUPLICATE_TASK \u003d \"Task must not exist in task list.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task not found in task list.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" private final TaskListManager baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" private final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" public TaskOperation(TaskListManager baseDir) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" this.baseDir \u003d baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" void stateLogger(String log) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(log);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" void stateErrorLogger(String errMsg) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" this.logger.severe(errMsg);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return this.baseDir.getTaskListSize();","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public boolean hasTask(Task t) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.checkDuplicates(t);","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return this.baseDir.isValidIndex(index);","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!hasTask(task), MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addTask(task);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"Adding\" + task.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"deleting \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.deleteTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public Task markTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"marking \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.markTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public Task unmarkTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"un marking \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.unmarkTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e findTask(String query) {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"finding \" + query);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.findTask(query);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"getting \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"getting all \");","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getAllTask();","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" TaskOperation that \u003d (TaskOperation) o;","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" return Objects.equals(baseDir, that.baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" return Objects.hash(baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"NereusWB922":24,"mingyuanc":94}},{"path":"src/main/java/seedu/address/model/taskmanager/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.DeadlineCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * The Deadline class represents a deadline task for the ProfBook.","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * It extends the Task class and provides additional methods specific to deadline tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private static final DateTimeFormatter OUTPUT_DATETIME_FORMATTER \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" DateTimeFormatter.ofPattern(\"EEEE, MMMM d, yyyy h:mm a\");","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" private LocalDateTime dueBy;","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Deadline object with the given description and deadline.","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Deadline task","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" * @param deadline LocalDateTime object that stores the date of the deadline for the task","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" this.dueBy \u003d deadline;","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" assert this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" assert !this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public String getDeadline() {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return this.dueBy.format(OUTPUT_DATETIME_FORMATTER);","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public Deadline clone() {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" return new Deadline(description, dueBy);","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new DeadlineCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" return \"[D][\" + getStatusIcon() + \"] \" + this.description + \"(by: \" + this.dueBy + \")\";","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * Checks if this Deadline is equal to another Deadline object.","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" * Two tasks are equal if they have the same description, isDone and dueBy status and time.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this task against.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a Task equivalent to this task, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" Deadline deadline \u003d (Deadline) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Nid21cs"},"content":" return dueBy.equals(deadline.dueBy) \u0026\u0026 isDone.equals(deadline.isDone)","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" \u0026\u0026 description.equals(deadline.description);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"zannloo":2,"NereusWB922":22,"Nid21cs":65}},{"path":"src/main/java/seedu/address/model/taskmanager/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for Tasks in TaskList","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The Task class represents a single task for the addressbook.","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It is an abstract class that provides a common interface for different types of tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public abstract class Task implements Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" protected String description;","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * @param s The description of the task.","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public Task(String s) {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.description \u003d s;","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public abstract void mark();","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" public abstract void unmark();","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public String getDesc() {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" return description;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" return isDone;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public abstract Task clone();","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"zannloo":1,"NereusWB922":14,"mingyuanc":5,"Nid21cs":22}},{"path":"src/main/java/seedu/address/model/taskmanager/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.List;","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic of a TaskList","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"public class TaskList {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" private final List\u003cTask\u003e taskList;","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * Constructs a {@code TaskList}.","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" * @param taskList A valid task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" public TaskList(List\u003cTask\u003e taskList) {","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" int initialSize \u003d this.taskList.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" taskList.add(t);","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" assert this.taskList.size() \u003d\u003d initialSize + 1 : \"Task Deadline should be added to the list\";","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * @return The deleted task.","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" public Task delete(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" if (index - 1 \u003e this.taskList.size() || index \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" int initialSize \u003d this.taskList.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" this.taskList.remove(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" assert this.taskList.size() \u003d\u003d initialSize - 1 : \"Task should be removed from the list\";","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" * @param taskNumber The number of the task to be marked.","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" * @return The marked task.","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" public Task mark(int taskNumber) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" if (taskNumber - 1 \u003e this.taskList.size() || taskNumber \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(taskNumber - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" task.mark();","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * Unmarks a task.","lastModifiedDate":"2023-09-30"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" * @param taskNumber The number of the task to be unmarked.","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" * @return The unmarked task.","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" public Task unmark(int taskNumber) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" if (taskNumber - 1 \u003e this.taskList.size() || taskNumber \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(taskNumber - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" task.unmark();","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" * Finds tasks that match the given query.","lastModifiedDate":"2023-09-30"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":" * @param query The query to match.","lastModifiedDate":"2023-09-30"},{"lineNumber":90,"author":{"gitId":"Nid21cs"},"content":" * @return A list of tasks that match the query.","lastModifiedDate":"2023-09-30"},{"lineNumber":91,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level.","lastModifiedDate":"2023-09-30"},{"lineNumber":92,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":93,"author":{"gitId":"Nid21cs"},"content":" public List\u003cTask\u003e find(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":94,"author":{"gitId":"Nid21cs"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":95,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":96,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Nid21cs"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2023-09-30"},{"lineNumber":99,"author":{"gitId":"Nid21cs"},"content":" if (task.description.contains(query)) {","lastModifiedDate":"2023-09-30"},{"lineNumber":100,"author":{"gitId":"Nid21cs"},"content":" list.add(task);","lastModifiedDate":"2023-09-30"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"Nid21cs"},"content":" return list;","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":107,"author":{"gitId":"Nid21cs"},"content":" * Retrieves a task from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":108,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":109,"author":{"gitId":"Nid21cs"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-30"},{"lineNumber":110,"author":{"gitId":"Nid21cs"},"content":" * @return The retrieved task.","lastModifiedDate":"2023-09-30"},{"lineNumber":111,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If the index is out of bounds.","lastModifiedDate":"2023-09-30"},{"lineNumber":112,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"Nid21cs"},"content":" public Task get(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"Nid21cs"},"content":" if (index - 1 \u003e this.taskList.size() || index \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"Please input an index between 1 and\" + this.taskList.size());","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":122,"author":{"gitId":"Nid21cs"},"content":" * Retrieves all tasks from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":123,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":124,"author":{"gitId":"Nid21cs"},"content":" * @return A list of all tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":125,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level.","lastModifiedDate":"2023-09-30"},{"lineNumber":126,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.taskList);","lastModifiedDate":"2023-10-01"},{"lineNumber":129,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":131,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Nid21cs"},"content":" * Checks if this TaskList is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Nid21cs"},"content":" * Two TaskLists are equal if their task lists are equal.","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Nid21cs"},"content":" * The task lists are compared based on the equals method of the Task class.","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this TaskList against.","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a TaskList equivalent to this task list, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"Nid21cs"},"content":" TaskList taskList1 \u003d (TaskList) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"Nid21cs"},"content":" return this.taskList.equals(taskList1.taskList);","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"Nid21cs"},"content":" * Checks if the task list contains a duplicate of the specified task.","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"Nid21cs"},"content":" * @param t the task to be checked for duplication in the task list","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"Nid21cs"},"content":" * @return true if a duplicate of the specified task is found in the task list, false otherwise","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Nid21cs"},"content":" public boolean containsDuplicates(Task t) {","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"Nid21cs"},"content":" for (Task check : this.taskList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"Nid21cs"},"content":" if (check.equals(t)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":163,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"Nid21cs"},"content":" * Retrieves size of the current task list for testing purposes","lastModifiedDate":"2023-10-12"},{"lineNumber":166,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"Nid21cs"},"content":" * @return size of the task list.","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"Nid21cs"},"content":" public int size() {","lastModifiedDate":"2023-10-12"},{"lineNumber":170,"author":{"gitId":"Nid21cs"},"content":" return taskList.size();","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" return this.taskList.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":7,"mingyuanc":19,"Nid21cs":151}},{"path":"src/main/java/seedu/address/model/taskmanager/ToDo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.TodoCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * The ToDo class represents a deadline task for the ProfBook.","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" * It extends the Task class and provides additional methods specific to ToDo tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" public ToDo(String s) {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" super(s);","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" assert this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" assert !this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public ToDo clone() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return new ToDo(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" return new TodoCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is added to a list.","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is added","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return \"[T]\" + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" * Checks if this ToDo is equal to another ToDo object.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" * Two tasks are equal if they have the same description and isDone status.","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this task against.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a Task equivalent to this task, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" ToDo task \u003d (ToDo) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" return isDone.equals(task.isDone) \u0026\u0026 description.equals(task.description);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":14,"Nid21cs":54}},{"path":"src/main/java/seedu/address/model/taskmanager/exceptions/NoSuchTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager.exceptions;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals when the index does not point to a specific task in the tasklist","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class NoSuchTaskException extends RuntimeException {","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" public NoSuchTaskException(String e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" super(e);","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":1,"Nid21cs":1,"mingyuanc":8}},{"path":"src/main/java/seedu/address/model/util/SampleProfBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.util;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Sample ProfBook data.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"public class SampleProfBook {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public static Student[] getSampleStudents1() {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" return new Student[] {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Tejas\"), new Email(\"tejas@gmail.com\"), new Phone(\"67352798\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" new Address(\"170 Ghim Moh Road Ncss Centre\"), new StudentId(\"0001Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Jackie\"), new Email(\"jackie@gmail.com\"), new Phone(\"65341488\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" new Address(\"1 Park Road 03-K78 People\u0027s Park Complex\"), new StudentId(\"0002Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Raman\"), new Email(\"raman@gmail.com\"), new Phone(\"64755838\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" new Address(\"3Rd Floor, 80 Raffles Place, Uob Plaza 2\"), new StudentId(\"0003Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Yarn Meng\"), new Email(\"yarnmeng@gmail.com\"), new Phone(\"65467742\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" new Address(\"480 Lorong 6 Toa Payoh Atrium 4th Storey HDB Hub\"), new StudentId(\"0004Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Kiat Win\"), new Email(\"kiatwin@gmail.com\"), new Phone(\"62102572\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" new Address(\"4 Loyang Walk Loyang Industrial Estate\"), new StudentId(\"0005Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" };","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static Student[] getSampleStudents2() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return new Student[] {","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Ming Yuan\"), new Email(\"mingyuan@gmail.com\"), new Phone(\"64380137\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Woodlands, Malaysia\"), new StudentId(\"0006Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Zann\"), new Email(\"zann@gmail.com\"), new Phone(\"62924352\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in bedok\"), new StudentId(\"0007Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Nereus\"), new Email(\"nereus@gmail.com\"), new Phone(\"63365480\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Muar, Johor, Malaysia\"), new StudentId(\"0008Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Gary\"), new Email(\"gary@gmail.com\"), new Phone(\"67792128\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in Malaysia\"), new StudentId(\"0009Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Nidhish\"), new Email(\"nidhish@gmail.com\"), new Phone(\"63480398\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in Sinagpore\"), new StudentId(\"0010Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" };","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" tasks.add(new ToDo(\"Task \" + i));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" ToDo todo \u003d new ToDo(\"Task \" + i + 5);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" todo.mark();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" tasks.add(todo);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return tasks;","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public static Group getGroup1() {","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d new Group(new Name(\"Group One\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Student[] students \u003d getSampleStudents1();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" for (Student s : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" grp.addChild(s.getId(), s);","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" public static Group getGroup2() {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d new Group(new Name(\"Best Group in CS2103T\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" Student[] students \u003d getSampleStudents2();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" for (Student s : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" grp.addChild(s.getId(), s);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e tasks \u003d getTasks();","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" grp.addTask(task);","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public static Root getRoot() {","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" Group grp1 \u003d getGroup1();","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" Group grp2 \u003d getGroup2();","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" root.addChild(grp1.getId(), grp1);","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" root.addChild(grp2.getId(), grp2);","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return root;","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/seedu/address/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label currDirectory;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public CommandBox(CommandExecutor commandExecutor, String currPath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" setCurrDirectory(currPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Set current directory label","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" public void setCurrDirectory(String curr) {","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" this.currDirectory.setText(curr + \"/\u003e\");","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"NereusWB922":14,"-":82}},{"path":"src/main/java/seedu/address/ui/DeadlineCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.CheckBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class DeadlineCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"DeadlineCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public final Deadline deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private Label type;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private CheckBox checkBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private Label desc;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private Label by;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public DeadlineCard(Deadline deadline, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" type.setText(\"Deadline\");","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" desc.setText(deadline.getDesc());","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" by.setText(deadline.getDeadline());","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" checkBox.setSelected(deadline.getStatus());","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" checkBox.setDisable(true);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" if (displayedIndex % 2 \u003d\u003d 0) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #534531;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #866937;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":49}},{"path":"src/main/java/seedu/address/ui/Displayable.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * Item that can be displayed on display panel","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public interface Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Get card that can display on panel","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":13}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_NAME \u003d \"\u003c\u003c %1$s \u003e\u003e\";","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ID \u003d \"ID: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"GroupCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public final Group group;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private Label name;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.group \u003d group;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" id.setText(String.format(DISPLAY_ID, group.getId().toString().toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" name.setText(String.format(DISPLAY_NAME, group.getName().fullName.toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":38}},{"path":"src/main/java/seedu/address/ui/ItemListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Panel containing the list of children items.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class ItemListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"ItemListPanel.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ItemListPanel.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private ListView\u003cDisplayable\u003e itemListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code ListPanel} with the given {@code ObservableList} and FXML file name.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public ItemListPanel(ObservableList\u003cDisplayable\u003e itemList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" logger.info(itemList.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" itemListView.setItems(itemList);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" itemListView.setCellFactory(listView -\u003e new ItemListViewCell());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Custom {@code ListCell} that displays the graphics of an item using its Displayable methods.","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" class ItemListViewCell extends ListCell\u003cDisplayable\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" protected void updateItem(Displayable item, boolean empty) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super.updateItem(item, empty);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (empty || item \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" setText(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" setGraphic(item.getDisplayCard(getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" private ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private ItemListPanel itemListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" private CommandBox commandBox;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" private StackPane itemListPanelPlaceholder;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public MainWindow(Stage primaryStage, ProfBookLogicManager logic) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" itemListPanel \u003d new ItemListPanel(logic.getDisplayList());","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" itemListPanelPlaceholder.getChildren().add(itemListPanel.getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" commandBox \u003d new CommandBox(this::executeCommand, logic.getCurrPath());","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" public ItemListPanel getItemListPanel() {","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return itemListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" commandBox.setCurrDirectory(logic.getCurrPath());","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NereusWB922":15,"-":184}},{"path":"src/main/java/seedu/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Image icon \u003d new Image(MainApp.class.getResourceAsStream(\"/images/folder.png\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private ImageView storeIcon;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" storeIcon.setImage(icon);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NereusWB922":7,"-":28}},{"path":"src/main/java/seedu/address/ui/StudentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class StudentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_NAME \u003d \"%1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ID \u003d \"ID: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_PHONE \u003d \"Phone: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ADDRESS \u003d \"Address: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_EMAIL \u003d \"Email: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"StudentCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public final Student student;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private Label name;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private Label phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private Label address;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private Label email;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" private FlowPane tags;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public StudentCard(Student student, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" this.student \u003d student;","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" id.setText(String.format(DISPLAY_ID, student.getId().toString().toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" name.setText(String.format(DISPLAY_NAME, student.getName().fullName));","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" phone.setText(String.format(DISPLAY_PHONE, student.getPhone().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" address.setText(String.format(DISPLAY_ADDRESS, student.getAddress().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" email.setText(String.format(DISPLAY_EMAIL, student.getEmail().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" student.getTags().stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/main/java/seedu/address/ui/TodoCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.CheckBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class TodoCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"TodoCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public final ToDo todo;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private CheckBox checkBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private Label type;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private Label desc;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public TodoCard(ToDo todo, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" type.setText(\"Todo\");","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" desc.setText(todo.getDesc());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" checkBox.setSelected(todo.getStatus());","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" checkBox.setDisable(true);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (displayedIndex % 2 \u003d\u003d 0) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #534531;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #866937;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":46}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private static final String ICON_APPLICATION \u003d \"/images/profbook_icon.png\";","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public UiManager(ProfBookLogicManager logic) {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NereusWB922":4,"-":84}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"0.0\" prefWidth\u003d\"200.0\" StackPane.alignment\u003d\"TOP_CENTER\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"currDirectory\" alignment\u003d\"BOTTOM_LEFT\" text\u003d\"~/grp-001\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" alignment\u003d\"BOTTOM_LEFT\" onAction\u003d\"#handleCommandEntered\" prefHeight\u003d\"0.0\" prefWidth\u003d\"148.0\" promptText\u003d\"Enter command here...\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"NereusWB922":9,"-":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 5px 2px ;","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.3), 10, 0, 0, 3);","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled:even #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #3a3153;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled:odd #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #463086;","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #04535b;","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" -fx-border-color: #ffffff;","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: derive(#0af5aa, 30%);","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"#saveLocationStatus {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" -fx-spacing: 20px;","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill:#010504;","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"NereusWB922"},"content":"#currDirectory {","lastModifiedDate":"2023-10-16"},{"lineNumber":329,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: rgb(0, 255, 81);","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-16"},{"lineNumber":331,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":332,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":333,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":334,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":347,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-16"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":360,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":371,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":372,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":373,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":374,"author":{"gitId":"NereusWB922"},"content":"#type {","lastModifiedDate":"2023-10-16"},{"lineNumber":375,"author":{"gitId":"NereusWB922"},"content":" -fx-hgap: 7;","lastModifiedDate":"2023-10-16"},{"lineNumber":376,"author":{"gitId":"NereusWB922"},"content":" -fx-vgap: 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":377,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":378,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":379,"author":{"gitId":"NereusWB922"},"content":"#type {","lastModifiedDate":"2023-10-16"},{"lineNumber":380,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":381,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":382,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":383,"author":{"gitId":"NereusWB922"},"content":".todo {","lastModifiedDate":"2023-10-16"},{"lineNumber":384,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-16"},{"lineNumber":385,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":386,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #ebbd51;","lastModifiedDate":"2023-10-16"},{"lineNumber":387,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":388,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":389,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":390,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12;","lastModifiedDate":"2023-10-16"},{"lineNumber":391,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":392,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":393,"author":{"gitId":"NereusWB922"},"content":".deadline {","lastModifiedDate":"2023-10-16"},{"lineNumber":394,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-16"},{"lineNumber":395,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":396,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #358047;","lastModifiedDate":"2023-10-16"},{"lineNumber":397,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":398,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":399,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":400,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12;","lastModifiedDate":"2023-10-16"},{"lineNumber":401,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":74,"-":327}},{"path":"src/main/resources/view/DeadlineCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.CheckBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"desc\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"by\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$by\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"5.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"type\" styleClass\u003d\"deadline\" text\u003d\"\\$type\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"15.00\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cCheckBox fx:id\u003d\"checkBox\" alignment\u003d\"CENTER_RIGHT\" mnemonicParsing\u003d\"false\" prefHeight\u003d\"18.0\" prefWidth\u003d\"17.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cFont size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003c/CheckBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":63}},{"path":"src/main/resources/view/GroupCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"children\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\" text\u003d\"1.\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":44}},{"path":"src/main/resources/view/ItemListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" \u003cListView fx:id\u003d\"itemListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"ProfBook\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cImage url\u003d\"@/images/profbook_icon.png\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" alignment\u003d\"BOTTOM_LEFT\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox fx:id\u003d\"itemList\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"itemListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"NereusWB922":10,"-":48}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" prefHeight\u003d\"20.0\" prefWidth\u003d\"200.0\" style\u003d\"-fx-spacing: 5;\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" text\u003d\"\\$storedestination\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cImageView fx:id\u003d\"storeIcon\" fitHeight\u003d\"26.0\" fitWidth\u003d\"26.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"NereusWB922":17,"-":10}},{"path":"src/main/resources/view/StudentCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"children_cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" prefHeight\u003d\"134.0\" prefWidth\u003d\"150.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/main/resources/view/TodoCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.CheckBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"todo_cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\" text\u003d\"1.\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"desc\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"type\" styleClass\u003d\"todo\" text\u003d\"\\$type\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003cCheckBox fx:id\u003d\"checkBox\" alignment\u003d\"CENTER\" contentDisplay\u003d\"CENTER\" mnemonicParsing\u003d\"false\" prefHeight\u003d\"18.0\" prefWidth\u003d\"0.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003cFont size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003c/CheckBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" assertNotNull(AppUtil.getImage(\"/images/profbook_icon.png\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"NereusWB922":1,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"zannloo":2,"-":203}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + OPTION_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + OPTION_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" \"; // empty string not allowed for addresses","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + OPTION_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"NereusWB922":22,"-":108}},{"path":"src/test/java/seedu/address/logic/newcommands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DATETIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ID;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ParserUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"public class CommandTestUtil {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_DATETIME_STR \u003d \"2023-09-22 11:30\";","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TASK_DESC \u003d \"Assignment 1: Software Engineer Project\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ID_STUDENT \u003d \"0011Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ID_GROUP \u003d \"grp-123\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" public static final String VALID_CATEGORY_STUDENT \u003d \" --all allStu\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" public static final String VALID_CATEGORY_GROUP \u003d \" -all allGrp\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ROOT_DIR_PREAMBLE \u003d \"~/\";","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_GROUP_DIR_PREAMBLE \u003d \"/grp-123\";","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_STUDENT_DIR_PREAMBLE \u003d \"/grp-123/0011Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public static final String DATETIME_DESC \u003d \" \" + OPTION_DATETIME + \" \" + VALID_DATETIME_STR;","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" public static final String ID_DESC_STUDENT \u003d \" \" + OPTION_ID + \" \" + VALID_ID_STUDENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public static final String ID_DESC_GROUP \u003d \" \" + OPTION_ID + \" \" + VALID_ID_GROUP;","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public static final String TASK_DESC_DESC \u003d \" \" + OPTION_DESC + \" \" + VALID_TASK_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + OPTION_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + OPTION_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" \"; // empty string not allowed for addresses","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + OPTION_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validRootRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validGroupRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validStudentRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validRootAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validGroupAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validStudentAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" private static LocalDateTime validDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" static {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" validRootRelativePath \u003d ParserUtil.parseRelativePath(VALID_ROOT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" validGroupRelativePath \u003d ParserUtil.parseRelativePath(VALID_GROUP_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" validStudentRelativePath \u003d ParserUtil.parseRelativePath(VALID_STUDENT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" validRootAbsolutePath \u003d new AbsolutePath(VALID_ROOT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" validGroupAbsolutePath \u003d validRootAbsolutePath.resolve(validGroupRelativePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" validStudentAbsolutePath \u003d validRootAbsolutePath.resolve(validStudentRelativePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" validDateTime \u003d ParserUtil.parseDateTime(VALID_DATETIME_STR);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException | InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(e.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidRootRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return validRootRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidGroupRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" return validGroupRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidStudentRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return validStudentRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidRootAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" return validRootAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidGroupAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" return validGroupAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidStudentAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" return validStudentAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public static LocalDateTime getValidDateTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" return validDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * - the {@code actualState} matches {@code expectedState}","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandSuccess(Command command, State actualState, CommandResult expectedCommandResult,","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" State expectedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" CommandResult result \u003d command.execute(actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedState, actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2023-10-21"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, State, CommandResult, State)}","lastModifiedDate":"2023-10-21"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2023-10-21"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandSuccess(Command command, State actualState, String expectedMessage,","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" State expectedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" assertCommandSuccess(command, actualState, expectedCommandResult, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" * - the {@code actualState} remain unchanged","lastModifiedDate":"2023-10-21"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandFailure(Command command, State actualState,","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" String expectedMessage, State unchangedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(actualState), expectedMessage);","lastModifiedDate":"2023-10-21"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" assertEquals(unchangedState, actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"zannloo":2,"NereusWB922":157}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateDeadlineCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS_ALL_GROUPS;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS_ALL_STUDENTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":"class CreateDeadlineCommandTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForStudentAccepted_addSuccessful() throws InvalidPathException,","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" UnsupportedPathOperationException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" Student calissa \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" .withName(\"Calissa\")","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" .withEmail(\"callissa@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0012Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" studentMap.put(calissa.getId(), calissa);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", duedate);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" assertFalse(calissa.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d new RelativePath(\"0012Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" TaskOperation target \u003d state.taskOperation(absolutePath);","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" assertTrue(target.hasTask(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" assertTrue(calissa.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllStudentsInGroupAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" studentMap.put(alice.getId(), alice);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" studentMap.put(bob.getId(), bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-003\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-003\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-03-03T00:00\");","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" assertFalse(alice.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" assertFalse(bob.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" RelativePath path \u003d new RelativePath(\"grp-003\");","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline, \"allStu\");","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" assertTrue(alice.checkDuplicates(deadline));","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" assertTrue(bob.checkDuplicates(deadline));","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllGroupsInRootAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list1 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list2 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" TaskList taskList1 \u003d new TaskList(list1);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" TaskList taskList2 \u003d new TaskList(list2);","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" Group grp1 \u003d new Group(taskList1, studentMap, new Name(\"Amazing\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" Group grp2 \u003d new Group(taskList2, studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp1);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-002\"), grp2);","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", duedate);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"zannloo"},"content":" RelativePath path \u003d new RelativePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"zannloo"},"content":" assertFalse(grp1.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"zannloo"},"content":" assertFalse(grp2.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline, \"allGrp\");","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"zannloo"},"content":" assertTrue(grp1.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"zannloo"},"content":" assertTrue(grp2.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":166,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"zannloo"},"content":" public void execute_duplicateDeadline_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d new RelativePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand createDeadlineCommand \u003d new CreateDeadlineCommand(absolutePath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand.MESSAGE_DUPLICATE_DEADLINE_TASK, (","lastModifiedDate":"2023-10-12"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e createDeadlineCommand.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":190,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":191,"author":{"gitId":"zannloo"},"content":" void equals_sameInstanceForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":193,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-06"},{"lineNumber":195,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":196,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":197,"author":{"gitId":"zannloo"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2023-10-06"},{"lineNumber":198,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":200,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":201,"author":{"gitId":"zannloo"},"content":" void equals_sameInstanceForGroupDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":204,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-11"},{"lineNumber":205,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":206,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":207,"author":{"gitId":"zannloo"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2023-10-11"},{"lineNumber":208,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":209,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":210,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":211,"author":{"gitId":"zannloo"},"content":" void equals_sameCommandForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":213,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":214,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":215,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":216,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":219,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":220,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":221,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":222,"author":{"gitId":"zannloo"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-06"},{"lineNumber":223,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":224,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":225,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":226,"author":{"gitId":"zannloo"},"content":" void equals_sameCommandForGroupDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":229,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-11"},{"lineNumber":230,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":231,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":234,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-11"},{"lineNumber":235,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":236,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":237,"author":{"gitId":"zannloo"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-11"},{"lineNumber":238,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":239,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":240,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":241,"author":{"gitId":"zannloo"},"content":" void equals_differentDescriptionForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":243,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":244,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":245,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":246,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":248,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":249,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 2\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":250,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":251,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":252,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":253,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":254,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":256,"author":{"gitId":"zannloo"},"content":" void equals_differentPathForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":257,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":258,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-07"},{"lineNumber":259,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-07"},{"lineNumber":260,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":261,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":262,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":263,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-07"},{"lineNumber":264,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-07"},{"lineNumber":265,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":266,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":267,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":268,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":269,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"zannloo"},"content":" void equals_differentDueDateForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":272,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":273,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":275,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":276,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":277,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":278,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":279,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":280,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":281,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":282,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":283,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":284,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"zannloo"},"content":" void equals_differentFieldsForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":287,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":288,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":291,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":292,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":293,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":294,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 2\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":295,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":296,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":297,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":298,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":299,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":300,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":301,"author":{"gitId":"zannloo"},"content":" void toString_sameStringForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":302,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":303,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":306,"author":{"gitId":"zannloo"},"content":" String expected \u003d \"seedu.address.logic.newcommands.CreateDeadlineCommand{\"","lastModifiedDate":"2023-10-12"},{"lineNumber":307,"author":{"gitId":"NereusWB922"},"content":" + \"toCreateDeadline\u003d\"","lastModifiedDate":"2023-10-21"},{"lineNumber":308,"author":{"gitId":"zannloo"},"content":" + \"[D][ ] Assignment 1(by: 2023-12-03T23:58)}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":309,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":310,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":311,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":312,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":313,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":269,"NereusWB922":43,"mingyuanc":1}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateGroupCommand.MESSAGE_DUPLICATE_GROUP;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateGroupCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"public class CreateGroupCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndGroup_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateGroupCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" public void execute_createGroup_success() throws CommandException, InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" CommandResult successCommandResult \u003d new CommandResult(String.format(MESSAGE_SUCCESS, group));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" assertEquals(successCommandResult, createGroupCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void execute_duplicateGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class, MESSAGE_DUPLICATE_GROUP, () -\u003e createGroupCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" public void equals_sameInstance_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" Name name \u003d new Name(\"Group 1\");","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" GroupId id \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand duplicateCreateGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" assertEquals(createGroupCommand, duplicateCreateGroupCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // public void testOutputString() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" // TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" // Name name \u003d new Name(\"Group 1\");","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // GroupId id \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" // Group group \u003d new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativePath \u003d new RelativePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" // CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(relativePath, group);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" // String expected \u003d \"seedu.address.logic.newcommands.CreateGroupCommand\"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // + \"{toCreateGroup\u003dseedu.address.model.profbook.Group{Group Id\u003dgrp-001, name\u003dGroup 1, Students\u003d}}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" // assertEquals(expected, createGroupCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":67,"NereusWB922":27}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"class CreateStudentCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" private Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPersonNullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateStudentCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, (","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e new CreateStudentCommand(new AbsolutePath(\"~/grp-001/0001Y\"), null));","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateStudentCommand(null, validStudent));","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" void execute_studentAcceptedByGroup_success() throws Exception {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" .withEmail(\"bobthebuilder@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-12"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, bob);","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" CommandResult commandResult \u003d createStudentCommand.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(CreateStudentCommand.MESSAGE_SUCCESS, bob.toString()),","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" public void execute_duplicateStudent_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" Student duplicatedStudent \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" .withName(\"alice\")","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" .withEmail(\"aliceinwonderland@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" studentMap.put(duplicatedStudent.getId(), duplicatedStudent);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"ProfBook\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, validStudent);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand.MESSAGE_DUPLICATE_STUDENT, (","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e createStudentCommand.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" void testEquals() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createAliceCommand \u003d new CreateStudentCommand(path, alice);","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createBobCommand \u003d new CreateStudentCommand(path, bob);","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" assertTrue(createAliceCommand.equals(createAliceCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createAliceCommandCopy \u003d new CreateStudentCommand(path, alice);","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" assertTrue(createAliceCommand.equals(createAliceCommandCopy));","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(1));","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(createBobCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" void toString_sameString_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, ALICE);","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":" String expected \u003d CreateStudentCommand.class.getCanonicalName() + \"{toCreateStudent\u003d\" + ALICE + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, createStudentCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":121,"NereusWB922":20,"mingyuanc":5}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateTodoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS_ALL_GROUPS;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS_ALL_STUDENTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":"public class CreateTodoCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndTodo_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateTodoCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" public void execute_todoForAllStudentsInGroupAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" studentMap.put(alice.getId(), alice);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" studentMap.put(bob.getId(), bob);","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-003\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-003\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" ToDo todo \u003d new ToDo(\"Assignment 1\");","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" assertFalse(alice.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" assertFalse(bob.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-003\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" CreateTodoCommand command \u003d new CreateTodoCommand(path, todo, \"allStu\");","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" assertTrue(alice.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" assertTrue(bob.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllGroupsInRootAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list1 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list2 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" TaskList taskList1 \u003d new TaskList(list1);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" TaskList taskList2 \u003d new TaskList(list2);","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" Group grp1 \u003d new Group(taskList1, studentMap, new Name(\"Amazing\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" Group grp2 \u003d new Group(taskList2, studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp1);","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-002\"), grp2);","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" ToDo todo \u003d new ToDo(\"Assignment 3\");","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" assertFalse(grp1.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" assertFalse(grp2.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" CreateTodoCommand command \u003d new CreateTodoCommand(path, todo, \"allGrp\");","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" assertTrue(grp1.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" assertTrue(grp2.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" public void execute_createTodoTask_success() throws CommandException, InvalidPathException,","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" UnsupportedPathOperationException {","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo read book\");","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" CommandResult successCommandResult \u003d new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" assertEquals(successCommandResult, createTodoCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" public void execute_duplicateTodoTask_throwCommandException() throws InvalidPathException,","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" UnsupportedPathOperationException {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo read book\");","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" taskOperation.addTask(todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" CreateTodoCommand.MESSAGE_DUPLICATE_TODO_TASK_STUDENT, () -\u003e createTodoCommand.execute(state));","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" public void equals_sameInstance_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo test\");","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand duplicateCreateTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" assertTrue(createTodoCommand.equals(duplicateCreateTodoCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" public void equals_differentTodoTask_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" ToDo todoTest1 \u003d new ToDo(\"Todo test1\");","lastModifiedDate":"2023-10-12"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" ToDo todoTest2 \u003d new ToDo(\"Todo test2\");","lastModifiedDate":"2023-10-12"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand1 \u003d new CreateTodoCommand(target, todoTest1);","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand2 \u003d new CreateTodoCommand(target, todoTest2);","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" assertFalse(createTodoCommand1.equals(createTodoCommand2));","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":" public void toString_validateOutputString_correctStringRepresentation() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo test\");","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" String expected \u003d \"seedu.address.logic.newcommands.CreateTodoCommand{toCreateTodo\u003d\"","lastModifiedDate":"2023-10-21"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" + \"[T][ ] Todo test}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" assertEquals(expected, createTodoCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":67,"zannloo":92,"NereusWB922":35}},{"path":"src/test/java/seedu/address/logic/newcommands/DeleteForStudentsAndGroupsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"class DeleteForStudentsAndGroupsCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteForStudentsAndGroupsCommand(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" void execute_deleteStudent_success() throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" groups.put(grp.getId(), grp);","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" Student stu \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" assertTrue(grp.hasChild(studentId));","lastModifiedDate":"2023-10-15"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" CommandResult commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" assertFalse(root.hasChild(studentId));","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(DeleteForStudentsAndGroupsCommand.MESSAGE_SUCCESS, stu),","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" void execute_deleteGroup_success() throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" CommandResult commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" GroupId groupId \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" assertFalse(root.hasChild(groupId));","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(DeleteForStudentsAndGroupsCommand.MESSAGE_SUCCESS, grp),","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" public void execute_noSuchStudent_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_NO_SUCH_STUDENT_OR_GROUP, (","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" public void execute_noSuchGroup_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-002/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_NO_SUCH_STUDENT_OR_GROUP, (","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" public void execute_incorrectDirectory_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_INCORRECT_DIRECTORY_ERROR, (","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" void testEquals() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathGrp001 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathGrp002 \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathStu001 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathStu002 \u003d new AbsolutePath(\"~/grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG001 \u003d new DeleteForStudentsAndGroupsCommand(pathGrp001);","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG002 \u003d new DeleteForStudentsAndGroupsCommand(pathGrp002);","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS001 \u003d new DeleteForStudentsAndGroupsCommand(pathStu001);","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS002 \u003d new DeleteForStudentsAndGroupsCommand(pathStu002);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"zannloo"},"content":" // same object(Group) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteG001.equals(deleteG001));","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"zannloo"},"content":" // same object(Student) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteS001.equals(deleteS001));","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"zannloo"},"content":" // same values(Group) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG001Copy \u003d new DeleteForStudentsAndGroupsCommand(pathGrp001);","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteG001.equals(deleteG001Copy));","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"zannloo"},"content":" // same values(Student) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS001Copy \u003d new DeleteForStudentsAndGroupsCommand(pathStu001);","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteS001.equals(deleteS001Copy));","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"zannloo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"zannloo"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"zannloo"},"content":" // different group -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(deleteG002));","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"zannloo"},"content":" // different student -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(deleteS002));","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"zannloo"},"content":" // different area to delete -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(deleteS001));","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"zannloo"},"content":" // different student -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(deleteS002));","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"zannloo"},"content":" void toString_sameString_success() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":181,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":182,"author":{"gitId":"zannloo"},"content":" String expected \u003d DeleteForStudentsAndGroupsCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"zannloo"},"content":" + \"{toDeleteStudentOrGroup\u003d\" + path + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":164,"NereusWB922":22}},{"path":"src/test/java/seedu/address/logic/newcommands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.FIRST_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.SECOND_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.util.SampleProfBook;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private State actualState;","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private State expectedState;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private TaskOperation taskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" @BeforeEach","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public void setup() throws InvalidPathException {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currentPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" Root root1 \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" Root root2 \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" actualState \u003d new StateManager(currentPath, root1, new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" expectedState \u003d new StateManager(currentPath, root2, new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" // Display task","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath displayPath \u003d new AbsolutePath(\"~/grp-002/\");","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" actualState.setDisplayPath(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" actualState.showTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expectedState.setDisplayPath(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" expectedState.showTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" taskOperation \u003d expectedState.taskOperation(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" Task taskToDelete \u003d taskOperation.getTask(FIRST_INDEX.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" taskToDelete.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" taskOperation.deleteTask(FIRST_INDEX.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" expectedState.updateList();","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" assertCommandSuccess(deleteCommand, actualState, expectedMessage, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(taskOperation.getTaskListSize() + 1);","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" assertCommandFailure(deleteCommand, actualState,","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(SECOND_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":102}},{"path":"src/test/java/seedu/address/logic/newcommands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"public class EditCommandTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndEditGroupDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditCommand(null, (EditGroupDescriptor) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndEditStudentDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditCommand(null, (EditStudentDescriptor) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" public void equals_differentRelativePath_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" EditCommand firstEditCommand \u003d new EditCommand(path1, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" EditCommand secondEditCommand \u003d new EditCommand(path2, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" assertFalse(firstEditCommand.equals(secondEditCommand));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" public void toString_validateOutputString_correctStringRepresentation() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" EditCommand firstEditCommand \u003d new EditCommand(path, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" String expected \u003d \"seedu.address.logic.newcommands.EditCommand{toEdit\u003dseedu.address.model\"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" + \".field.EditGroupDescriptor{name\u003dnull, id\u003dnull}}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" assertEquals(expected, firstEditCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" public void execute_noSuchGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" EditCommand editCommand \u003d new EditCommand(path, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, EditCommand.MESSAGE_NO_SUCH_PATH, () -\u003e editCommand.execute(state));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" public void execute_invalidDirectory_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" EditCommand editCommand \u003d new EditCommand(path, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" EditCommand.MESSAGE_INCORRECT_DIRECTORY_ERROR, () -\u003e editCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":70,"NereusWB922":16}},{"path":"src/test/java/seedu/address/logic/newcommands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommandTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public void execute_validCommand_success() throws CommandException, InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" HelpCommand helpCommand \u003d new HelpCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" CommandResult commandResult \u003d helpCommand.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" CommandResult expexctedCommandResult \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" new CommandResult(HelpCommand.SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" assertEquals(commandResult, expexctedCommandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":32,"NereusWB922":3}},{"path":"src/test/java/seedu/address/logic/newcommands/MoveStudentToGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"public class MoveStudentToGroupCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String ERROR_MESSAGE_INCORRECT_DIRECTORY \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullSourcePathAndDestinationPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new MoveStudentToGroupCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public void execute_invalidPathForSourceGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath sourcePath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath destPath \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand moveStudentToGroupCommand \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" new MoveStudentToGroupCommand(sourcePath, destPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, () -\u003e moveStudentToGroupCommand.execute(state));","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void equals() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath sourcePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath destinationPath \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand command1 \u003d new MoveStudentToGroupCommand(sourcePath, destinationPath);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand command2 \u003d new MoveStudentToGroupCommand(sourcePath, destinationPath);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" assertEquals(command1, command2);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" // public void testOutputString() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativeSourcePath \u003d new RelativePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativeDestinationPath \u003d new RelativePath(\"~/grp-002\");","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" // MoveStudentToGroupCommand moveStudentToGroupCommand \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" // new MoveStudentToGroupCommand(relativeSourcePath, relativeDestinationPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" // String expected \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" // \"seedu.address.logic.newcommands.MoveStudentToGroupCommand{toMoveThisStudentToAnotherGroup\u003dnull}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" // assertEquals(expected, moveStudentToGroupCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":50,"NereusWB922":20}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME, OPTION_ADDRESS, OPTION_EMAIL, OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" // missing name option","lastModifiedDate":"2023-10-10"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" // missing phone option","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" // missing email option","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" // missing address option","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" // all options missing","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"NereusWB922":22,"-":174}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private final Option unknownOption \u003d new Option(\"--unknown\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private final Option name \u003d new Option(\"--name\", \"-n\");","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private final Option id \u003d new Option(\"--id\", \"-i\");","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private final Option address \u003d new Option(\"--address\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code option} match the {@code expectedValues}","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Option)}.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Option option, String... expectedValues) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(option).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(option).size());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(option).get(i));","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" assertFalse(argMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public void tokenize_noOptions_allTakenAsPreamble() {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" // \u003c----long hand-----\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \" Some preamble string --name Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" --name Nereus Ng Wei Bin \";","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // \u003c----short hand-----\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // Preamble present","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" Some preamble string -n Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // No preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" -n Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString --id id-Value --name name-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \"Different Preamble String --id id-Value --name name-Value --address address-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"address-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" // All three arguments with mix of short hand","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \"Different Preamble String -i id-Value --name name-Value -a address-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"address-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" /* Also covers: testing for options not specified as a option */","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" // Options not previously given to the tokenizer should not return any values","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d unknownOption + \"some value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, unknownOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown option is taken as part of preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString --id id-Value -a -a -i another id value --name name value --id\";","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\", \"another id value\", \"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"\", \"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString--name name joined-ijoined -i not joined--addressjoined\";","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString--name name joined-ijoined\");","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"not joined--addressjoined\");","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" Option aaa \u003d new Option(\"--aaa\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" assertEquals(aaa, new Option(\"--aaa\", \"-a\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, \"--aaa\");","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, new Option(\"--aab\", \"-a\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, new Option(\"--aaa\", \"-b\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"NereusWB922":80,"-":96}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" private static final String TAG_EMPTY \u003d \" \" + OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // invalid option being parsed as preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" // while parsing {@code OPTION_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"NereusWB922":11,"-":197}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath, Command expectedCommand) {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" Command command \u003d parser.parse(userInput, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath, String expectedMessage) {","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" parser.parse(userInput, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"NereusWB922":41}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateDeadlineCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.DATETIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.TASK_DESC_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_CATEGORY_STUDENT;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_TASK_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class CreateDeadlineCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private CreateDeadlineCommandParser parser \u003d new CreateDeadlineCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" VALID_GROUP_DIR_PREAMBLE + TASK_DESC_DESC + DATETIME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" new CreateDeadlineCommand(","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" new Deadline(VALID_TASK_DESC, CommandTestUtil.getValidDateTime())));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresentWithCategory_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" VALID_GROUP_DIR_PREAMBLE + TASK_DESC_DESC + DATETIME_DESC + VALID_CATEGORY_STUDENT,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" new CreateDeadlineCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" new Deadline(VALID_TASK_DESC, CommandTestUtil.getValidDateTime()), \"allStu\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":9,"NereusWB922":29}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ID_GROUP;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class CreateGroupCommandParserTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private CreateGroupCommandParser parser \u003d new CreateGroupCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" Group group \u003d new Group(new Name(VALID_NAME_AMY), new GroupId(VALID_ID_GROUP));","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" VALID_GROUP_DIR_PREAMBLE + NAME_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" new CreateGroupCommand(CommandTestUtil.getValidGroupAbsolutePath(), group));","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":29}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ID_STUDENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class CreateStudentCommandParserTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private CreateStudentCommandParser parser \u003d new CreateStudentCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" Student expectedStu \u003d new Student(","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" new TaskList(new ArrayList\u003c\u003e()),","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" new Name(VALID_NAME_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" new Email(VALID_EMAIL_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" new Phone(VALID_PHONE_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" new Address(VALID_ADDRESS_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" new StudentId(VALID_ID_STUDENT));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + NAME_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" new CreateStudentCommand(CommandTestUtil.getValidStudentAbsolutePath(), expectedStu));","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":47}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateTodoCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.TASK_DESC_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_CATEGORY_STUDENT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_TASK_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class CreateTodoCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private CreateTodoCommandParser parser \u003d new CreateTodoCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + TASK_DESC_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" new CreateTodoCommand(CommandTestUtil.getValidStudentAbsolutePath(), new ToDo(VALID_TASK_DESC)));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresentWithCatergory_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" VALID_STUDENT_DIR_PREAMBLE + TASK_DESC_DESC + VALID_CATEGORY_STUDENT,","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" new CreateTodoCommand(CommandTestUtil.getValidStudentAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" new ToDo(VALID_TASK_DESC), \"allStu\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"zannloo":8,"NereusWB922":26}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/DeleteForStudentsAndGroupsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"class DeleteForStudentsAndGroupsCommandParserTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommandParser parser \u003d new DeleteForStudentsAndGroupsCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" CommandParserTestUtil.assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" CommandTestUtil.getValidStudentRelativePath().toString(),","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" new DeleteForStudentsAndGroupsCommand(CommandTestUtil.getValidStudentAbsolutePath()));","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":15,"NereusWB922":2}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.FIRST_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath absolutePath \u003d CommandTestUtil.getValidGroupAbsolutePath();","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser, \"1\", absolutePath, new DeleteTaskCommand(FIRST_INDEX));","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, \"a\", absolutePath,","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":28}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/MoveStudentToGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class MoveStudentToGroupCommandParserTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private MoveStudentToGroupCommandParser parser \u003d new MoveStudentToGroupCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + \" \" + VALID_GROUP_DIR_PREAMBLE,","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" new MoveStudentToGroupCommand(","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidStudentAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath()));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NereusWB922":24}},{"path":"src/test/java/seedu/address/model/path/AbsolutePathTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.exceptions.InvalidIdException;","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"public class AbsolutePathTest {","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath studentPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath groupPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Constructor \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public void constructor_pathNotStartedFromRoot_throwInvalidPathException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e {","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" new AbsolutePath(\"grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" });","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public void constructor_validPath_returnValidPath() {","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0001Y\", path.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" fail(\"Expected no InvalidPathException, but got one.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" public void constructor_pathWithValidNavigation_returnValidPath() {","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/../grp-002/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" logger.info(path.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0001Y\", path.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" fail(\"Expected no InvalidPathException, but got one.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public void constructor_invalidPathStructure_throwInvalidPathException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e {","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" new AbsolutePath(\"~/grp-001/../0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" });","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public void constructor_equivalentPaths_shouldBeEqual() {","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathWithDot \u003d null;","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathWithoutDot \u003d null;","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" pathWithDot \u003d new AbsolutePath(\"~/grp-001/./0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" pathWithoutDot \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" fail(\"Unexpected InvalidPathException\");","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertEquals(pathWithDot.toString(), pathWithoutDot.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Resolve Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativeStudentPathWithoutNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativeGroupPathWithoutNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-10-10"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"grp-002\");","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002\", resolvedPath.toString());","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithOneValidNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithTwoValidNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../../grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-09-29"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathStartWithRoot()","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"~/grp-002/0003Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0003Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithInvalidOneNavigation_throwsInvalidPathException()","lastModifiedDate":"2023-09-29"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e absolutePath.resolve(relativePath));","lastModifiedDate":"2023-09-29"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithInvalidNavigationAboveRoot_throwsInvalidPathException()","lastModifiedDate":"2023-09-29"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../../../grp-002\");","lastModifiedDate":"2023-09-29"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e absolutePath.resolve(relativePath));","lastModifiedDate":"2023-09-29"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Check Directory Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" @BeforeEach","lastModifiedDate":"2023-09-29"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" public void setUp() {","lastModifiedDate":"2023-09-29"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-09-29"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" studentPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" groupPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-09-29"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" fail(\"Unexpected Exception.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_rootPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" assertTrue(rootPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_studentPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" assertFalse(studentPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_groupPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_studentPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" assertTrue(studentPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_groupPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_rootPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_groupPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_studentPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" assertFalse(studentPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_rootPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Get ID Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_studentPath_returnsValidStudentId()","lastModifiedDate":"2023-09-29"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cStudentId\u003e studentId \u003d studentPath.getStudentId();","lastModifiedDate":"2023-10-11"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" assertTrue(studentId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"0001Y\", studentId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_studentPath_returnsValidStudentId()","lastModifiedDate":"2023-09-29"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupId \u003d studentPath.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"GRP-001\", groupId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_groupPath_returnsValidGroupId()","lastModifiedDate":"2023-09-29"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupId \u003d groupPath.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"GRP-001\", groupId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":237,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":238,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":239,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":240,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_rootPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":241,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.getStudentId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":243,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":244,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":245,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_groupPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":246,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.getStudentId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":248,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":249,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":250,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_rootPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":251,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.getGroupId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":252,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":253,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":253}},{"path":"src/test/java/seedu/address/model/taskmanager/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"public class TaskListTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" @BeforeEach","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" public void setUp() {","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" // Initialize the tasklist with no tasks","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public void testAddToDo() {","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" public void testAddDeadline() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime testTime \u003d LocalDateTime.now();","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new Deadline(\"Do junit test\", testTime));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" public void testMark() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" taskList.mark(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.get(1).isDone, true);","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" public void testUnMark() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" taskList.unmark(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.get(1).isDone, false);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" public void testDeleteTask() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" taskList.delete(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 0);","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Nid21cs":57}},{"path":"src/test/java/seedu/address/statemanager/ChildOperationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.statemanager;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"public class ChildOperationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" private Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" private Group group;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" private Student student;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath grpPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath stuPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" private State state;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" public void init() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" grpPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" stuPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.student \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" .withName(\"zann\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"zannwhatudoing@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" studentMap.put(new StudentId(\"0001Y\"), this.student);","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" this.group \u003d new Group(new TaskList(null), studentMap, new Name(\"gary\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" groups.put(new GroupId(\"grp-001\"), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" state \u003d new StateManager(rootPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" public void getChildOperation_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.root), state.rootChildOperation());","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.group.getChildrenManger()), state.groupChildOperation(grpPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.group.getChildrenManger()), state.groupChildOperation(stuPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public void getGroupChildOperationWithRoot_exceptionThrown() {","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e state.groupChildOperation(rootPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyDeleteAndAdd_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" opr.deleteChild(stu);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" assertFalse(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" opr.addChild(stu, this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyGet_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" assertEquals(this.student, opr.getChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" public void childOperationAddDuplicateChild_exceptionThrown() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" opr.addChild(stu, this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" } catch (DuplicateChildException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" assertEquals(\"Operation would result in duplicate \" + stu, e.getMessage());","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyGetAll_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ArrayList\u003cStudent\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" list.add(this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getAllChildren(), list);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyUpdate_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" Student newStu \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" .withName(\"angel\")","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"angelyipenqi@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"1234567\")","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":" opr.updateChild(stu, newStu);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":" assertEquals(newStu, opr.getChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":24,"mingyuanc":113}},{"path":"src/test/java/seedu/address/statemanager/TaskOperationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.statemanager;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"public class TaskOperationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" private Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" private Group group;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" private Student student;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath grpPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath stuPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" private State state;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" private final Task task \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" public void init() {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" grpPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" stuPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" this.student \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" .withName(\"zann\")","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"zannwhatudoing@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" studentMap.put(new StudentId(\"0001Y\"), this.student);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" this.group \u003d new Group(new TaskList(null), studentMap, new Name(\"gary\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" groups.put(new GroupId(\"grp-001\"), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" state \u003d new StateManager(rootPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" public void getTaskOperation_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new TaskOperation(this.group.getTaskListManager()), state.taskOperation(grpPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new TaskOperation(this.student), state.taskOperation(stuPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyDeleteMethod_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" assertTrue(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" for (Task t : this.student.getAllTask()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" System.out.println(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" opr.deleteTask(1);","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" for (Task t : this.student.getAllTask()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" System.out.println(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" } catch (NoSuchTaskException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" assertFalse(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyAdd_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" opr.deleteTask(1);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" assertFalse(opr.hasTask(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" opr.addTask(task);","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" assertTrue(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyMarkUnmark_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" List\u003cTask\u003e ret \u003d opr.findTask(\"Assignment\");","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" assertEquals(ret.get(0), this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ret \u003d opr.findTask(\"not here\");","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" assertEquals(0, ret.size());","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyGetTasks_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getTask(1), this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyGetAllTasks_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"mingyuanc"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":" list.add(this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getAllTasks(), list);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":15,"mingyuanc":121}},{"path":"src/test/java/seedu/address/testutil/GroupBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" * A utility class to help with building Group objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"public class GroupBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final Task DEFAULT_TASK \u003d new Deadline(\"Assignment 1\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_NAME \u003d \"Group ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_ID \u003d \"grp-001\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" private Map\u003cId, Student\u003e students;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" private Id id;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" private Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * Creates a {@code GroupBuilder} with the default details.","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" public GroupBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e defaultTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" defaultTaskList.add(DEFAULT_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" taskList \u003d new TaskList(defaultTaskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" Student stu1 \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" Student stu2 \u003d new StudentBuilder()","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" students.put(stu1.getId(), stu1);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" students.put(stu2.getId(), stu2);","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" id \u003d new GroupId(DEFAULT_ID);","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public Group build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":56,"NereusWB922":1}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_NAME + \" \" + person.getName().fullName + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_PHONE + \" \" + person.getPhone().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_EMAIL + \" \" + person.getEmail().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_ADDRESS + \" \" + person.getAddress().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" s -\u003e sb.append(OPTION_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(OPTION_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(OPTION_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(OPTION_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(OPTION_ADDRESS)","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" .append(\" \").append(address.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" tags.forEach(s -\u003e sb.append(OPTION_TAG).append(\" \").append(s.tagName).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"NereusWB922":17,"-":46}},{"path":"src/test/java/seedu/address/testutil/StudentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"public class StudentBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String DEFAULT_ID \u003d \"0001Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" public static final Task DEFAULT_TASK \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private StudentId id;","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" private Name name;","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" private Phone phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" private Email email;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" private Address address;","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" * Creates a {@code StudentBuilder} with the default details.","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" public StudentBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" id \u003d new StudentId(DEFAULT_ID);","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e defaultTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" defaultTaskList.add(DEFAULT_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" taskList \u003d new TaskList(defaultTaskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" * Initializes the StudentBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" public StudentBuilder(Student studentToCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" id \u003d studentToCopy.getId();","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" phone \u003d studentToCopy.getPhone();","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" address \u003d studentToCopy.getAddress();","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Id} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withId(String id) {","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" this.id \u003d new StudentId(id);","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withName(String name) {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Address} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withAddress(String address) {","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Phone} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withEmail(String email) {","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" * Sets the {@code TaskList} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withTaskList(ArrayList arrayList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" this.taskList \u003d new TaskList(arrayList);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" public Student build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" return new Student(taskList, name, email, phone, address, id);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"zannloo":125,"NereusWB922":2}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final Index FIRST_INDEX \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final Index SECOND_INDEX \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"NereusWB922":2,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalStudents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"public class TypicalStudents {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" public static final Student ALICE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final Student BENSON \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withName(\"Benson Meier\")","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" public static final Student CARL \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0003Y\").withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" public static final Student DANIEL \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0004Y\").withName(\"Daniel Meier\")","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" public static final Student ELLE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0005Y\").withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" public static final Student FIONA \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0006Y\").withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" public static final Student GEORGE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0007Y\").withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" // Manually added","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" public static final Student HOON \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0008Y\").withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" public static final Student IDA \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0009Y\").withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" public static final Student AMY \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" public static final Student BOB \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" private TypicalStudents() {} // prevents instantiation","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"zannloo":55,"NereusWB922":11}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"# ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions)","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"## Introducing our product - ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"ProfBook provides easy management of tasks, group schedules, and notes for every tutorial slot and group. A CS professor friendly platform to keep updated and informed with notifications and profile pictures of your students for a personal touch and easy recognition of students during lessons. ","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"* This is an application for CS professor to manage tasks, group schedules, and notes of every tutorial slot and group effectively.","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"* It is named `ProfBook` because it aims to help professors to keep track of the many tutorial groups as well as the many deadlines and submission.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"**Features**","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"* Create Todo task for student or group of student","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"* Create Deadline task for student or group of student","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"* Create a group and move student into a group","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"* Mark task done for every student in a group","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"* Add profile pictures of students","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"* Store notes or links related to each group or tutorial","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"NgChunMan":20,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" archiveFileName \u003d \u0027profbook.jar\u0027","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"mingyuanc":1,"-":71}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"You can reach us at the email `nidhish.k[at]comp.nus.edu.sg`","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"### Nidhish Krishnan","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/nid21cs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/nid21cs)]","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/nid21cs.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"* Role: Developer","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Team lead + Scheduling and tracking","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"### Ng Chun Man","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/ngchunman.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/ngchunman)]","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/ngchunman.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Documentation + Deliverables and deadlines","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"### Ching Ming Yuan","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/mingyuanc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/mingyuanc)] ","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/mingyuanc.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Testing + IntelliJ expert","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"### Loo Mei Lin Zann","lastModifiedDate":"2023-09-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/zannloo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/zannloo)]","lastModifiedDate":"2023-09-27"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/zannloo.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Code quality + General admin","lastModifiedDate":"2023-09-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"### Nereus Ng Wei Bin","lastModifiedDate":"2023-09-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":"\u003cimg src\u003d\"images/nereuswb922.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2023-09-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"[[github](http://github.com/nereuswb922)]","lastModifiedDate":"2023-09-27"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"[[portfolio](team/nereuswb922.md)]","lastModifiedDate":"2023-09-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":"* Responsibilities: Integration + Git expert","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":27,"-":33}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how the undo operation works:","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"Nid21cs"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"Nid21cs"},"content":"* has a need to manage various tutorial groups","lastModifiedDate":"2023-09-27"},{"lineNumber":262,"author":{"gitId":"Nid21cs"},"content":"* has to keep track of deadlines and assign tasks to groups as well as individual students","lastModifiedDate":"2023-09-27"},{"lineNumber":263,"author":{"gitId":"Nid21cs"},"content":"* prefer and is used to using cli and linux commands","lastModifiedDate":"2023-09-27"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"Nid21cs"},"content":"**Value proposition**: Keep track of tutorial groups and students deadlines and tasks efficiently with an interface that will be faster than a typical mouse/GUI driven app","lastModifiedDate":"2023-09-27"},{"lineNumber":268,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":269,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"Nid21cs"},"content":"| Priority level | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2023-09-27"},{"lineNumber":277,"author":{"gitId":"Nid21cs"},"content":"|----------------|------------------|-----------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-27"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | take advantage of existing linux skills | be more efficient in using the application |","lastModifiedDate":"2023-09-27"},{"lineNumber":280,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | delete a student | remove students that I no longer need |","lastModifiedDate":"2023-09-27"},{"lineNumber":281,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create deadlines for student | keep track of when assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":282,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo task for student | keep track of which label they are at |","lastModifiedDate":"2023-09-27"},{"lineNumber":283,"author":{"gitId":"Nid21cs"},"content":" | `* * *` | new user | create deadline for a group | keep track of when group specific assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":284,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo for a group | keep track of the progress of each group relative to others |","lastModifiedDate":"2023-09-27"},{"lineNumber":285,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create deadline for a tutorial group | keep track of when tutorial specific assignments are due |","lastModifiedDate":"2023-09-27"},{"lineNumber":286,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create todo tasks for a tutorial group | keep track of the progress of each tutorial group relative to others |","lastModifiedDate":"2023-09-27"},{"lineNumber":287,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | add time to a task | i can record when a task needs to be done |","lastModifiedDate":"2023-09-27"},{"lineNumber":288,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | set alerts and notification | I can receive the notifications of the task |","lastModifiedDate":"2023-09-27"},{"lineNumber":289,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | see the pending task that has the next earliest deadline | i can know what do do next |","lastModifiedDate":"2023-09-27"},{"lineNumber":290,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the profile picture of students | I can better remember them |","lastModifiedDate":"2023-09-27"},{"lineNumber":291,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the profile picture of students | I can better remember them |","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | Add the matriculation number of students | I can update their grade based on the matriculation number |","lastModifiedDate":"2023-09-27"},{"lineNumber":293,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create student profile | manage information of a specific student |","lastModifiedDate":"2023-09-27"},{"lineNumber":294,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create group | manage information of a specific group |","lastModifiedDate":"2023-09-27"},{"lineNumber":295,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | new user | create tutorial slot | manage information fo a specific tutorial slot |","lastModifiedDate":"2023-09-27"},{"lineNumber":296,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | search for a student/tutorial group by name | pull up students/tutorial groups without having to go through the entire list |","lastModifiedDate":"2023-09-27"},{"lineNumber":297,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Mark task done for every student in a group | I do not need to mark each task manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":298,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in the book | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":299,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in a tutorial group | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":300,"author":{"gitId":"Nid21cs"},"content":"| `* * *` | Experienced user | Add tasks for every student in a group | I do not need to add tasks manually |","lastModifiedDate":"2023-09-27"},{"lineNumber":301,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Be able to see an brief overview of last week | Can see deadlines that have passed etc |","lastModifiedDate":"2023-09-27"},{"lineNumber":302,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Easily edit the student/tutorial groups | Information is applicable throughout time |","lastModifiedDate":"2023-09-27"},{"lineNumber":303,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Experienced user | Move students around, edit which group they are in | I can be flexible with the groupings |","lastModifiedDate":"2023-09-27"},{"lineNumber":304,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Expert user | Check last week\u0027s deadline have been met or not | I would not miss any deadline |","lastModifiedDate":"2023-09-27"},{"lineNumber":305,"author":{"gitId":"Nid21cs"},"content":"| `* * ` | Expert user | Upload text file contains tutorial groups and students | I do not need to manually add students and tutorial groups |","lastModifiedDate":"2023-09-27"},{"lineNumber":306,"author":{"gitId":"Nid21cs"},"content":"| `*` | Experienced user | Sync with google calendar | To keep information easily accessible |","lastModifiedDate":"2023-09-27"},{"lineNumber":307,"author":{"gitId":"Nid21cs"},"content":"| `* ` | Experienced user | Sync with nusmods | To make it easier to take note of tutorial venues |","lastModifiedDate":"2023-09-27"},{"lineNumber":308,"author":{"gitId":"Nid21cs"},"content":"| `*` | Experienced user | Use addressbook to track attendance for each tutorial book | I can easily write down attendance in one area |","lastModifiedDate":"2023-09-27"},{"lineNumber":309,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | View a dashboard that provides the overview of the progress of each tutorial group and their respecective tasks | I can easily and quickly focus on areas that require my attention |","lastModifiedDate":"2023-09-27"},{"lineNumber":310,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Let the program generate a detailed report on the performace of each tutorial group | I can easily identify the areas of strengths and weaknesses of each students |","lastModifiedDate":"2023-09-27"},{"lineNumber":311,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Incorporate my own scripts to customise my own experience | I can improve productivity and tailor fit the software for myself |","lastModifiedDate":"2023-09-27"},{"lineNumber":312,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | make the program support customizable templates for tutorials and student profiles | I can make it more aesthetically pleasing |","lastModifiedDate":"2023-09-27"},{"lineNumber":313,"author":{"gitId":"Nid21cs"},"content":"| `*` | Expert user | Make use of the feature to archive certain task | I can keep track of the history and not focus on unimportant task. |","lastModifiedDate":"2023-09-27"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Nid21cs"},"content":"(For all use cases below, the **System** is the `ProfBook` and the **Professor** is the `user`, unless specified otherwise)","lastModifiedDate":"2023-09-27"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"Nid21cs"},"content":"1. User requests to delete a student/group/task with specific id for each one","lastModifiedDate":"2023-09-27"},{"lineNumber":326,"author":{"gitId":"Nid21cs"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2023-09-27"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Nid21cs"},"content":"* 2a. The given id is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":333,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":334,"author":{"gitId":"Nid21cs"},"content":" * 2a1. ProfBook shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":335,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":336,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":337,"author":{"gitId":"Nid21cs"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"Nid21cs"},"content":"**Use case: Move student into/out of group**","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":341,"author":{"gitId":"Nid21cs"},"content":"**MSS**","lastModifiedDate":"2023-09-27"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":343,"author":{"gitId":"Nid21cs"},"content":"1. User requests to move a specific student from a source group to destination group with an id","lastModifiedDate":"2023-09-27"},{"lineNumber":344,"author":{"gitId":"Nid21cs"},"content":"2. AddressBook moves the student from a source group to destination group","lastModifiedDate":"2023-09-27"},{"lineNumber":345,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"Nid21cs"},"content":"* 2a. The given StudentID is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":351,"author":{"gitId":"Nid21cs"},"content":" * 2a1. ProfBook shows an error message. ","lastModifiedDate":"2023-09-27"},{"lineNumber":352,"author":{"gitId":"Nid21cs"},"content":" ","lastModifiedDate":"2023-09-27"},{"lineNumber":353,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":356,"author":{"gitId":"Nid21cs"},"content":"* 3a. The given groupID is invalid.","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"Nid21cs"},"content":" * 3a1. ProfBook shows an error message.","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"Nid21cs"},"content":" Use case resumes at step 1.","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"Nid21cs"},"content":"1. The application should be platform-independent and should run on all major operating systems as long as it has Java `11` or above installed.","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, OS-X","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"Nid21cs"},"content":"* **Root**: Folder which contains all students, groups as well","lastModifiedDate":"2023-09-27"},{"lineNumber":376,"author":{"gitId":"Nid21cs"},"content":"* **Group**: Folder which contains Students within the specific group","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Nid21cs":69,"-":360}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"# ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"## Overview","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"ProfBook is a **student management system** specially made for **CS2103T tutors**, built by CS2103T students. As current students of CS2103T, we understand that CS2103T tutors have a high administrative workload on top of their existing tutor duties. On top of that, any administrative mistakes or oversights can increase that workload exponentially and may adversely impact student\u0027s learning. To address the aforementioned issues, Profbook was designed as a student management system which can **dramatically decrease administrative mistakes and workload**.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"It is optimized for tutors use via a **familiar Command Line Interface (CLI) that uses linux-styled commands** while still having the benefits of a Graphical User Interface (GUI). If you can type fast, ProfBook can track and manage your student\u0027s progress and tasks much faster than traditional GUI apps with a gentle learning curve.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"## Features overview","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"### Consolidated Information","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"As a project based module, CS2103T tutors have to juggle multiple groups **within** multiple tutorial slots. ProfBook aims to expedite this process by allowing tutors to keep track of all their tutorial groups and all the project groups within that in a centralised location. Tutors are able to traverse between tutorial slots and groups quickly through familiar linux commands.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"#### Student Information Management","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"ProfBook aids with the **management of student information**. Student\u0027s information can be **readily** added, edited, deleted quickly. In addition, ProfBook supports the managment of additional information vital for a tutor. Tutors can track their student progress through creating various tasks such as Todo and Deadline. Furthermore, Tutors can store short description of a student or links to their GitHub Repository if desired.","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"#### Tutorial and Groups Information Management","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"ProfBook aids with the **management of Tutorial and Groups information**. Profbook efficiently encapsulates information of every tutorial group and every project group so that tutors can management their progress and relevant information **seamlessly**. Tutors can easily add, move, delete students from groups. Similiar to students, tutors are able to track each group progress through tasks. In addition, Tutors can store short description of the groups or links to their GitHub Repository if desired.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"- Table of Contents","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"## Quick start (//TODO Change)","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"1. Download the latest `ProfBook.jar` from [here](https://github.com/AY2324S1-CS2103T-W15-2/tp/releases).","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your ProfBook.","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar ProfBook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" - `list` : Lists all contacts.","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" - `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" - `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" - `clear` : Deletes all contacts.","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" - `exit` : Exits the app.","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"(//TODO Change)","lastModifiedDate":"2023-09-27"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"- Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":"- Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"- Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"- Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"- Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":"- If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"# General Commands","lastModifiedDate":"2023-09-27"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":"### Viewing help : `help` (//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":"// TODO Update","lastModifiedDate":"2023-09-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":"### Listing all persons : `ls`","lastModifiedDate":"2023-09-27"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":"Format: `ls`","lastModifiedDate":"2023-09-27"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2023-09-27"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":"Clears all entries from the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"Format: `clear`","lastModifiedDate":"2023-09-27"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2023-09-27"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":"Exits the program.","lastModifiedDate":"2023-09-27"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":"Format: `exit`","lastModifiedDate":"2023-09-27"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"# Student/Group commands","lastModifiedDate":"2023-09-27"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":"### Adding a student: `touch`","lastModifiedDate":"2023-09-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":"Adds a student to the address book.","lastModifiedDate":"2023-09-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"Format: `touch student -n [name] -id [StudentId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":"name:","lastModifiedDate":"2023-09-27"},{"lineNumber":131,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":132,"author":{"gitId":"mingyuanc"},"content":"- must be a non-empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":"StudentId:","lastModifiedDate":"2023-09-27"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"- must be a 4 digits number follow with any letter","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":139,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":140,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating non valid param/ invalid site of student creation","lastModifiedDate":"2023-09-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":143,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":144,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating successful creation together with created student with student id","lastModifiedDate":"2023-09-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":"`touch student -n Gary -id 1234Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":155,"author":{"gitId":"mingyuanc"},"content":"- Command creates a student within the tutorial group if command is used from within the tutorial group.","lastModifiedDate":"2023-09-27"},{"lineNumber":156,"author":{"gitId":"mingyuanc"},"content":"- If a command is executed outside of a specific group, students are added into an ungrouped folder and can be moved into a group later.","lastModifiedDate":"2023-09-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"mingyuanc"},"content":"### Deleting a Student : `rm`","lastModifiedDate":"2023-09-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"mingyuanc"},"content":"Delete task, student or group.","lastModifiedDate":"2023-09-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":162,"author":{"gitId":"mingyuanc"},"content":"Format: `rm -type [targetType] -target [targetId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":165,"author":{"gitId":"mingyuanc"},"content":"type:","lastModifiedDate":"2023-09-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":167,"author":{"gitId":"mingyuanc"},"content":"- \"student\", \"task\" or \"group\"","lastModifiedDate":"2023-09-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"mingyuanc"},"content":"target:","lastModifiedDate":"2023-09-27"},{"lineNumber":170,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":171,"author":{"gitId":"mingyuanc"},"content":"- A valid non-empty String","lastModifiedDate":"2023-09-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":174,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":175,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when remove target","lastModifiedDate":"2023-09-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate target successfully removed","lastModifiedDate":"2023-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":"`rm -type student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":183,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":"- This command will delete the student profile with id 0123Y","lastModifiedDate":"2023-10-21"},{"lineNumber":185,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":186,"author":{"gitId":"mingyuanc"},"content":"### Move students into/out of the group: `mv`","lastModifiedDate":"2023-09-27"},{"lineNumber":187,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":188,"author":{"gitId":"mingyuanc"},"content":"Moves student from a group to another group","lastModifiedDate":"2023-09-27"},{"lineNumber":189,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":190,"author":{"gitId":"mingyuanc"},"content":"Format `mv [StudentID] -source [source group] -dest [destination group]`","lastModifiedDate":"2023-09-27"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":193,"author":{"gitId":"mingyuanc"},"content":"StudentID:","lastModifiedDate":"2023-09-27"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":"- must be a 4 digits number follow with any letter","lastModifiedDate":"2023-10-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"mingyuanc"},"content":"source group:","lastModifiedDate":"2023-09-27"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":199,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"mingyuanc"},"content":"destination group:","lastModifiedDate":"2023-09-27"},{"lineNumber":202,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":203,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":206,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":"- pop up message indicate error when moving student with id 0123Y from grp-1 to grp-2","lastModifiedDate":"2023-10-21"},{"lineNumber":208,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":209,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":210,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":"- pop up message indicates successfully moving student with id 0123Y from grp-1 to grp-2","lastModifiedDate":"2023-10-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":"`mv 0123Y -source grp-1 -dest grp-2`","lastModifiedDate":"2023-10-21"},{"lineNumber":215,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":"- This command will move a student with value id 0123Y within the groups or from Ungroup to Group.","lastModifiedDate":"2023-10-21"},{"lineNumber":217,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":218,"author":{"gitId":"mingyuanc"},"content":"### Create Group : `mkdir`","lastModifiedDate":"2023-09-27"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"mingyuanc"},"content":"Creates a group consists of a maximum of five students","lastModifiedDate":"2023-09-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"mingyuanc"},"content":"Format: `mkdir [groupId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":225,"author":{"gitId":"mingyuanc"},"content":"groupId:","lastModifiedDate":"2023-09-27"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":227,"author":{"gitId":"mingyuanc"},"content":"- groupId must be a non-empty string starting with grp-","lastModifiedDate":"2023-09-27"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":230,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":231,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates error when creating new group","lastModifiedDate":"2023-09-27"},{"lineNumber":232,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":233,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":234,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":235,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates group with specific groupId was created successfully.","lastModifiedDate":"2023-09-27"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"mingyuanc"},"content":"`mkdir grp-1`","lastModifiedDate":"2023-09-27"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":240,"author":{"gitId":"mingyuanc"},"content":"- This command will create a group with groupId which is a string called 1 and only consists the creator at that instance of creating the group","lastModifiedDate":"2023-09-27"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":244,"author":{"gitId":"mingyuanc"},"content":"# Tasks command","lastModifiedDate":"2023-09-27"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"mingyuanc"},"content":"### Create Todo Task : `todo`","lastModifiedDate":"2023-09-27"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"mingyuanc"},"content":"Creates todo tasks for specific students or groups.","lastModifiedDate":"2023-09-27"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"mingyuanc"},"content":"Format: `todo -desc [task] -level [student/group] -target [StudentID/group Id/tutorialId]`","lastModifiedDate":"2023-09-27"},{"lineNumber":251,"author":{"gitId":"mingyuanc"},"content":"-desc / -d : Description of the todo task","lastModifiedDate":"2023-09-27"},{"lineNumber":252,"author":{"gitId":"mingyuanc"},"content":"-level / -l : The level of the task (student or group)","lastModifiedDate":"2023-09-27"},{"lineNumber":253,"author":{"gitId":"mingyuanc"},"content":"-target / -t : The target id (StudentID/groupId/tutorialId)","lastModifiedDate":"2023-09-27"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":256,"author":{"gitId":"mingyuanc"},"content":"Task:","lastModifiedDate":"2023-09-27"},{"lineNumber":257,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":258,"author":{"gitId":"mingyuanc"},"content":"- Non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"mingyuanc"},"content":"Level:","lastModifiedDate":"2023-09-27"},{"lineNumber":261,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":262,"author":{"gitId":"mingyuanc"},"content":"- the level only can be lower than current level","lastModifiedDate":"2023-09-27"},{"lineNumber":263,"author":{"gitId":"mingyuanc"},"content":" -- E.g., if my current level is group (i.e I am in a specific group), I only can create a task for the group or a student","lastModifiedDate":"2023-09-27"},{"lineNumber":264,"author":{"gitId":"mingyuanc"},"content":"- If a -level flag is not present, the app will by default create task for current level","lastModifiedDate":"2023-09-27"},{"lineNumber":265,"author":{"gitId":"mingyuanc"},"content":" -- E.g., command “todo -d ps1” will create todo for current level (specific group or student)","lastModifiedDate":"2023-09-27"},{"lineNumber":266,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":267,"author":{"gitId":"mingyuanc"},"content":"Target:","lastModifiedDate":"2023-09-27"},{"lineNumber":268,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":269,"author":{"gitId":"mingyuanc"},"content":"- Need to specify a valid id for indicated level","lastModifiedDate":"2023-09-27"},{"lineNumber":270,"author":{"gitId":"mingyuanc"},"content":" -- E.g., Need to specify a valid student id if want to create a student level task","lastModifiedDate":"2023-09-27"},{"lineNumber":271,"author":{"gitId":"mingyuanc"},"content":"- If -target flag is not present, app will by default create task for every items under current level","lastModifiedDate":"2023-09-27"},{"lineNumber":272,"author":{"gitId":"mingyuanc"},"content":" -- E.g, command “todo -d ps1 -level student” will create todo “ps1” for every students under current group","lastModifiedDate":"2023-09-27"},{"lineNumber":273,"author":{"gitId":"mingyuanc"},"content":"- Target flag is allowed only if level flag is provided","lastModifiedDate":"2023-09-27"},{"lineNumber":274,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":275,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":276,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":277,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when creating new todo.","lastModifiedDate":"2023-09-27"},{"lineNumber":278,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":279,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":280,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":281,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate todo created successfully","lastModifiedDate":"2023-09-27"},{"lineNumber":282,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":283,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":284,"author":{"gitId":"NereusWB922"},"content":"`todo -desc ps1 -level student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":285,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":286,"author":{"gitId":"NereusWB922"},"content":"- This command will create a todo task called “ps 1” for the student with id 0123Y","lastModifiedDate":"2023-10-21"},{"lineNumber":287,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":288,"author":{"gitId":"mingyuanc"},"content":"### Create Deadline task : `Deadline`","lastModifiedDate":"2023-09-27"},{"lineNumber":289,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":290,"author":{"gitId":"mingyuanc"},"content":"Creates task with a deadline for specific student or group or tutorial slot","lastModifiedDate":"2023-09-27"},{"lineNumber":291,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"mingyuanc"},"content":"Format `deadline -desc [task] -level [student/group] -target [StudentID/groupId/tutorialId] -byDate[dd/MM/yyyy]`","lastModifiedDate":"2023-09-27"},{"lineNumber":293,"author":{"gitId":"mingyuanc"},"content":"-desc / -d : Description of the deadline task","lastModifiedDate":"2023-09-27"},{"lineNumber":294,"author":{"gitId":"mingyuanc"},"content":"-level / -l : The level of the task (student or group)","lastModifiedDate":"2023-09-27"},{"lineNumber":295,"author":{"gitId":"mingyuanc"},"content":"-target / -t : The target id (StudentID/groupId/tutorialId)","lastModifiedDate":"2023-09-27"},{"lineNumber":296,"author":{"gitId":"mingyuanc"},"content":"-byDate/ -b : the deadline for the task","lastModifiedDate":"2023-09-27"},{"lineNumber":297,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":298,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":299,"author":{"gitId":"mingyuanc"},"content":"Task:","lastModifiedDate":"2023-09-27"},{"lineNumber":300,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":301,"author":{"gitId":"mingyuanc"},"content":"- non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":302,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":303,"author":{"gitId":"mingyuanc"},"content":"Level:","lastModifiedDate":"2023-09-27"},{"lineNumber":304,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":305,"author":{"gitId":"mingyuanc"},"content":"- The level only can be lower than current level","lastModifiedDate":"2023-09-27"},{"lineNumber":306,"author":{"gitId":"mingyuanc"},"content":" -- E.g., if my current level is group (i.e I am in a specific group), I can create a deadline task for the group or a student","lastModifiedDate":"2023-09-27"},{"lineNumber":307,"author":{"gitId":"mingyuanc"},"content":"- If a -level flag is not present, app will by default create deadline task for current level","lastModifiedDate":"2023-09-27"},{"lineNumber":308,"author":{"gitId":"mingyuanc"},"content":" -- E.g., command “deadline -d grade proposal 1-byDate 20/10/2023” will create deadline task for current level (specific group or student)","lastModifiedDate":"2023-09-27"},{"lineNumber":309,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":310,"author":{"gitId":"mingyuanc"},"content":"Target:","lastModifiedDate":"2023-09-27"},{"lineNumber":311,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":312,"author":{"gitId":"mingyuanc"},"content":"- Need to specify a valid id for indicated level","lastModifiedDate":"2023-09-27"},{"lineNumber":313,"author":{"gitId":"mingyuanc"},"content":" -- E.g., Need to specify a valid student id if want to create a student level task","lastModifiedDate":"2023-09-27"},{"lineNumber":314,"author":{"gitId":"mingyuanc"},"content":"- If a -target flag is not present, app will by default create task for every items under current level","lastModifiedDate":"2023-09-27"},{"lineNumber":315,"author":{"gitId":"mingyuanc"},"content":" -- E.g, command “deadline -d grade proposal 1 -level student” will create deadline task “grade proposal 1” for every student under current group","lastModifiedDate":"2023-09-27"},{"lineNumber":316,"author":{"gitId":"mingyuanc"},"content":"- Target flag is allowed only if level flag is provided","lastModifiedDate":"2023-09-27"},{"lineNumber":317,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":318,"author":{"gitId":"mingyuanc"},"content":"byDate:","lastModifiedDate":"2023-09-27"},{"lineNumber":319,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":320,"author":{"gitId":"mingyuanc"},"content":"- In the format of dd/MM/yyyy.","lastModifiedDate":"2023-09-27"},{"lineNumber":321,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":322,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":323,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":324,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate error when creating new deadline task.","lastModifiedDate":"2023-09-27"},{"lineNumber":325,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":326,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":327,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":328,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicate deadline task created successfully.","lastModifiedDate":"2023-09-27"},{"lineNumber":329,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":330,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":331,"author":{"gitId":"mingyuanc"},"content":"`deadline -d grade proposal 1 -level group -target tut-1 -byDate 20/10/2023`","lastModifiedDate":"2023-09-27"},{"lineNumber":332,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":333,"author":{"gitId":"mingyuanc"},"content":"- This command will create a task with a deadline on 20/10/2023 for the task called grade proposal 1, allocated to students from tut-1.","lastModifiedDate":"2023-09-27"},{"lineNumber":334,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":335,"author":{"gitId":"mingyuanc"},"content":"### Mark/Unmark tasks as completed: `mark`","lastModifiedDate":"2023-09-27"},{"lineNumber":336,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":337,"author":{"gitId":"mingyuanc"},"content":"Marks specific tasks as done for each student/tutorial group","lastModifiedDate":"2023-09-27"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":339,"author":{"gitId":"mingyuanc"},"content":"Format: `mark -d [task] -level [student/group] -target [StudentID/groupId] `","lastModifiedDate":"2023-09-27"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"mingyuanc"},"content":"Acceptable parameter should be:","lastModifiedDate":"2023-09-27"},{"lineNumber":342,"author":{"gitId":"mingyuanc"},"content":"task:","lastModifiedDate":"2023-09-27"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":344,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non empty String","lastModifiedDate":"2023-09-27"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":346,"author":{"gitId":"mingyuanc"},"content":"student:","lastModifiedDate":"2023-09-27"},{"lineNumber":347,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":348,"author":{"gitId":"mingyuanc"},"content":"- String should be \"student\" or \"group\"","lastModifiedDate":"2023-09-27"},{"lineNumber":349,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":350,"author":{"gitId":"mingyuanc"},"content":"StudentID:","lastModifiedDate":"2023-09-27"},{"lineNumber":351,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":352,"author":{"gitId":"mingyuanc"},"content":"- must be a valid non empty String starting with","lastModifiedDate":"2023-09-27"},{"lineNumber":353,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":354,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":355,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":356,"author":{"gitId":"mingyuanc"},"content":"- pop up message saying mark is not done as well as specific task that is unchanged","lastModifiedDate":"2023-09-27"},{"lineNumber":357,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":358,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":359,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":360,"author":{"gitId":"mingyuanc"},"content":"- pop up message saying mark is done successfully as well as specific task that is marked","lastModifiedDate":"2023-09-27"},{"lineNumber":361,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":362,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":363,"author":{"gitId":"NereusWB922"},"content":"`mark -d Assignment 1 -level student -target 0123Y`","lastModifiedDate":"2023-10-21"},{"lineNumber":364,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":365,"author":{"gitId":"NereusWB922"},"content":"- This command will mark 0123Y\u0027s Assignment 1 as done","lastModifiedDate":"2023-10-21"},{"lineNumber":366,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":367,"author":{"gitId":"mingyuanc"},"content":"### Search for Tasks: `find`","lastModifiedDate":"2023-09-27"},{"lineNumber":368,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":369,"author":{"gitId":"mingyuanc"},"content":"Searches for tasks depending on the environment.","lastModifiedDate":"2023-09-27"},{"lineNumber":370,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":371,"author":{"gitId":"mingyuanc"},"content":"Format `find [task]`","lastModifiedDate":"2023-09-27"},{"lineNumber":372,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":373,"author":{"gitId":"mingyuanc"},"content":"Acceptable values for each parameter:","lastModifiedDate":"2023-09-27"},{"lineNumber":374,"author":{"gitId":"mingyuanc"},"content":"task:","lastModifiedDate":"2023-09-27"},{"lineNumber":375,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":376,"author":{"gitId":"mingyuanc"},"content":"- Non empty string","lastModifiedDate":"2023-09-27"},{"lineNumber":377,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":378,"author":{"gitId":"mingyuanc"},"content":"Output if command fails","lastModifiedDate":"2023-09-27"},{"lineNumber":379,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":380,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicates error when finding for the task.","lastModifiedDate":"2023-09-27"},{"lineNumber":381,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":382,"author":{"gitId":"mingyuanc"},"content":"Output if command succeeds","lastModifiedDate":"2023-09-27"},{"lineNumber":383,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":384,"author":{"gitId":"mingyuanc"},"content":"- pop up message indicating the list of tasks matching the user’s input or that there is no task matching user input.","lastModifiedDate":"2023-09-27"},{"lineNumber":385,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":386,"author":{"gitId":"mingyuanc"},"content":"Examples:","lastModifiedDate":"2023-09-27"},{"lineNumber":387,"author":{"gitId":"mingyuanc"},"content":"`find grade proposal`","lastModifiedDate":"2023-09-27"},{"lineNumber":388,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":389,"author":{"gitId":"mingyuanc"},"content":"- This command will search for the task, grade proposal, depending on the environment the user is in, it will search for task(s) allocated to a tutorial group or student.","lastModifiedDate":"2023-09-29"},{"lineNumber":390,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":391,"author":{"gitId":"mingyuanc"},"content":"### Save the data (//TODO update)","lastModifiedDate":"2023-09-27"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"mingyuanc"},"content":"ProfBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2023-09-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"mingyuanc"},"content":"### Edit the data file (//TODO update)","lastModifiedDate":"2023-09-27"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":397,"author":{"gitId":"mingyuanc"},"content":"ProfBook data are saved automatically as a JSON file `[JAR file location]/data/ProfBook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":399,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":400,"author":{"gitId":"mingyuanc"},"content":"If your changes to the data file makes its format invalid, ProfBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.","lastModifiedDate":"2023-09-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":403,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":404,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":405,"author":{"gitId":"mingyuanc"},"content":"### Archive data files `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":406,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":407,"author":{"gitId":"mingyuanc"},"content":"### Locate persons by name: `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":408,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":409,"author":{"gitId":"mingyuanc"},"content":"### Delete a person : `[coming in v1.3]`","lastModifiedDate":"2023-09-27"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":417,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"mingyuanc"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous ProfBook home folder.","lastModifiedDate":"2023-09-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":426,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":430,"author":{"gitId":"mingyuanc"},"content":"---","lastModifiedDate":"2023-09-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":432,"author":{"gitId":"mingyuanc"},"content":"(//TODO Update)","lastModifiedDate":"2023-09-27"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2023-09-29"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":436,"author":{"gitId":"mingyuanc"},"content":"| Action | Format, Examples |","lastModifiedDate":"2023-09-29"},{"lineNumber":437,"author":{"gitId":"mingyuanc"},"content":"| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |","lastModifiedDate":"2023-09-29"},{"lineNumber":438,"author":{"gitId":"mingyuanc"},"content":"| **Help** | `help` |","lastModifiedDate":"2023-09-29"},{"lineNumber":439,"author":{"gitId":"mingyuanc"},"content":"| **List** | `ls` |","lastModifiedDate":"2023-09-29"},{"lineNumber":440,"author":{"gitId":"mingyuanc"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2023-09-29"},{"lineNumber":441,"author":{"gitId":"mingyuanc"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2023-09-29"},{"lineNumber":442,"author":{"gitId":"NereusWB922"},"content":"| **Add** | `touch student -n [name] -id [StudentId]` \u003cbr\u003e e.g., `touch student -n Gary -id 1234Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":443,"author":{"gitId":"mingyuanc"},"content":"| **Create Group** | `mkdir [groupId]` \u003cbr\u003e e.g., `mkdir grp-1` |","lastModifiedDate":"2023-09-29"},{"lineNumber":444,"author":{"gitId":"NereusWB922"},"content":"| **Delete** | `rm [StudentId]` \u003cbr\u003e e.g., `touch student -n Gary -id 1234Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":445,"author":{"gitId":"NereusWB922"},"content":"| **Create Todo** | `todo -desc [task] -level [student/group] -target [StudentID/group Id/tutorialId]` \u003cbr\u003e e.g., `todo -desc ps1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":446,"author":{"gitId":"mingyuanc"},"content":"| **Create Deadline** | `deadline -desc [task] -level [student/group] -target [StudentID/groupId/tutorialId] -byDate[dd/MM/yyyy]`\u003cbr\u003e e.g., `deadline -d grade proposal 1 -level group -target tut-1 -byDate 20/10/2023` |","lastModifiedDate":"2023-09-29"},{"lineNumber":447,"author":{"gitId":"NereusWB922"},"content":"| **Mark** | `mark -d [task] -level [student/group] -target [StudentID/groupId]`\u003cbr\u003e e.g.,`mark -d Assignment 1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":448,"author":{"gitId":"NereusWB922"},"content":"| **Mark** | `unmark -d [task] -level [student/group] -target [StudentID/groupId]`\u003cbr\u003e e.g.,`unmark -d Assignment 1 -level student -target 0123Y` |","lastModifiedDate":"2023-10-21"},{"lineNumber":449,"author":{"gitId":"mingyuanc"},"content":"| **Find** | `find [task]`\u003cbr\u003e e.g., `find grade proposal` |","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":19,"mingyuanc":297,"-":133}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"NereusWB922"},"content":" content: \"ProfBook\";","lastModifiedDate":"2023-09-27"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"NereusWB922":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"title: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"# ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"[![CI Status](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-W15-2/tp/actions)","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-W15-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S1-CS2103T-W15-2/tp)","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"## Introducing our product - ProfBook","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"ProfBook provides easy management of tasks, group schedules, and notes for every tutorial slot and group. A CS professor","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"friendly platform to keep updated and informed with notifications and profile pictures of your students for a personal ","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"touch and easy recognition of students during lessons.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"* This project is an ongoing software project for a desktop application (called _ProfBook_) used for managing tasks, ","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"* group schedules, and notes for every tutorial slot and group.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"* It is **written in OOP fashion** and comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"* It is named `ProfBook` because it aims to help professors to keep track of the many tutorial groups as well as the ","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"many deadlines and submission.","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"* If you are interested in using ProfBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"* If you are interested about developing ProfBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"### Acknowledgements","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"NgChunMan":11,"NereusWB922":7,"-":12}},{"path":"docs/team/mingyuanc.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Ching Ming Yuan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"Java, and has about 10 kLoC.","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"### Features Contribution","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"* **Dynamic Commands**:","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * What it does: Allow user\u0027s command to have different effect based on their current location in the file structure","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" * Justification:","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" * Cuts down on the number of command that the user have to remember","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Commands become more intuitive and determinant as it\u0027s effect depends on their environment","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" * Safer command execution as we can cross-check the current environment with the command","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * Highlights:","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * Implementation of this required an in-depth analysis of design alternative.","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" * There were many ways of achieving the same result, but I believe the current implementation is most in","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" accordance with OOP\u0027s SOLID principal.","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" * Implementation were also made generic to allow for future extensions if needed.","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" * Implementation was challenging as it required modifying the whole flow and structure of the application","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"* **Streamline state modifications**:","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" * What it does: Provide a safe way for the command to modify the state","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" * Justification:","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" * Modification of the state should be done through a state manager instead of directly being modified by an","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" external class in accordance with OOP principals","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * Allow for the future migration to immutable state","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * Highlights:","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" * Implementation of this required an in-depth analysis of design alternative as there was a need for a generic","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" way to modify all the current different classes alongside future classes.","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":"### Classes Contribution","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"* **Introduced TaskListManager Class**:","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * Manages the required operations of TaskList","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" * Ensure the expected behaviour with regard to managing the tasks","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * No Duplicate tasks","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" * Able to accept subclasses of Tasks","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * Other classes not being able to directly modify tasks","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":"* **Introduced ChildManager Class**","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" * Manages the operation required to modify the children","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" * Ensure the expected behaviour with regard to managing the children","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" * No Duplicate children across the whole profbook","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" * Children are identified by their Unique ID","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" * Other classes not being able to directly modify children","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"* **Introduced Student Class**","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the required information to represent student","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"* **Introduced Group Class**","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the required information to represent a group within tutorial group","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"* **Introduced Root Class**","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the required information to represent the whole application","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":"* **Enhanced StateManager Class**","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" * Provides the logic to safely manipulate data stored in Student/Group/Root","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" * Ensure separation of concern by implementing other two other classes, TaskOperation and ChildOperation,","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" each handling their own operation.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" * Ensure the expected behaviour with regard to manipulating the state","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" * Path given matches the expected outcome","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * Commands are unable to directly modify the state","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"### **Code contributed**:","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":"[RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dw15\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code\u0026since\u003d2023-09-22\u0026tabOpen\u003dtrue\u0026tabType\u003dauthorship\u0026tabAuthor\u003dmingyuanc\u0026tabRepo\u003dAY2324S1-CS2103T-W15-2%2Ftp%5Bmaster%5D\u0026authorshipIsMergeGroup\u003dfalse\u0026authorshipFileTypes\u003ddocs~functional-code~test-code\u0026authorshipIsBinaryFileTypeChecked\u003dfalse\u0026authorshipIsIgnoredFilesChecked\u003dfalse).","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":"### Project Management:","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"* Managed Releases v1.2 on GitHub","lastModifiedDate":"2023-10-18"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":"### Documentations:","lastModifiedDate":"2023-10-18"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":"* User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" * Non-Feature specific","lastModifiedDate":"2023-10-18"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" * Transferred initial command description from Google documents into Markdown format","lastModifiedDate":"2023-10-18"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" * Wrote the overview of the whole project","lastModifiedDate":"2023-10-18"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" * Wrote the overview for all three of our main features","lastModifiedDate":"2023-10-18"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" * Updated the command summary page","lastModifiedDate":"2023-10-18"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":"* **Community**:","lastModifiedDate":"2023-10-18"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" * PRs reviewed (with non-trivial review comments):","lastModifiedDate":"2023-10-18"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #71](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/71)**","lastModifiedDate":"2023-10-18"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #87](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/87)**","lastModifiedDate":"2023-10-18"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #113](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/113)**","lastModifiedDate":"2023-10-18"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #115](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/115)**","lastModifiedDate":"2023-10-18"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #117](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/117)**","lastModifiedDate":"2023-10-18"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" * **[Pull Request #118](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/118)**","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"zannloo":18,"mingyuanc":85}},{"path":"docs/team/nereuswb922.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Nereus Ng Wei Bin\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"# ProfBook","lastModifiedDate":"2023-10-18"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"## RepoSense Report","lastModifiedDate":"2023-10-18"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"**Link to my RepoSense Report**: [Code Contributions](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search\u003dnereuswb922\u0026breakdown\u003dfalse\u0026sort\u003dgroupTitle%20dsc\u0026sortWithin\u003dtitle\u0026since\u003d2023-09-22\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos).","lastModifiedDate":"2023-10-18"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"## Code Contributions","lastModifiedDate":"2023-10-18"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"In this section, I will outline the code contributions I made to the project. These contributions include enhancements and new features that I implemented. ","lastModifiedDate":"2023-10-18"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"### Class Enhancements","lastModifiedDate":"2023-10-18"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"1. **Introduced `Path` Class :**","lastModifiedDate":"2023-10-18"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" - Provided a structured way to manage and manipulate paths in our application.","lastModifiedDate":"2023-10-18"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" - This addition assists other classes (e.g. `StateManager`, `Command`) in providing functionality such as navigating between directories and executing commands against specific paths.","lastModifiedDate":"2023-10-18"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" - The `AbsolutePath` class represents a full path within our application.","lastModifiedDate":"2023-10-18"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" - The `RelativePath` class represents a relative path in relation to the current path.","lastModifiedDate":"2023-10-18"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"2. **Introduced `Id` class :**","lastModifiedDate":"2023-10-18"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" - Represent unique id of group and student.","lastModifiedDate":"2023-10-18"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"2. **Introduced `Option` class :**","lastModifiedDate":"2023-10-18"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" - Similar to the `Prefix` class in AB3.","lastModifiedDate":"2023-10-18"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" - Enables the creation of command options with short-hand and long-hand names.","lastModifiedDate":"2023-10-18"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"3. **Updated `ArgumentTokernizer` class :**","lastModifiedDate":"2023-10-18"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" - Updated `ArgumentTokenizer` class to adopt command format similar to the Unix command.","lastModifiedDate":"2023-10-18"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" - e.g. User can pass in name option using `--name` or `-n`.","lastModifiedDate":"2023-10-18"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"### New Features","lastModifiedDate":"2023-10-18"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"1. **`cd` Command :**","lastModifiedDate":"2023-10-18"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" - The `cd` command allows users to navigate between different directories.","lastModifiedDate":"2023-10-18"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" - For example, using `cd ../grp-001` will navigate to the `grp-001` directory.","lastModifiedDate":"2023-10-18"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"2. **`ls` Command :**","lastModifiedDate":"2023-10-18"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" - The `ls` command shows a list of directories under the current directory.","lastModifiedDate":"2023-10-18"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" - For example, `ls grp-001` will show the list of students under group with ID `grp-001`.","lastModifiedDate":"2023-10-18"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"3. **`cat` Command :**","lastModifiedDate":"2023-10-18"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" - The `cat` command displays the task list under a specific path.","lastModifiedDate":"2023-10-18"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" - For example, `cat grp-001/stu-001` will show the task list of the student with ID `stu-001`.","lastModifiedDate":"2023-10-18"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"### GUI Enhancements","lastModifiedDate":"2023-10-18"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"1. **Visual Improvements**: ","lastModifiedDate":"2023-10-18"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"Added a new icon and expanded the color palette to enhance the project\u0027s visual appeal.","lastModifiedDate":"2023-10-18"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"2. **Current Directory Display**: ","lastModifiedDate":"2023-10-18"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"Added a working directory display, similar to a terminal, simplifying navigation and enhancing users\u0027 understanding of the application\u0027s state.","lastModifiedDate":"2023-10-18"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"## User Guide Contributions","lastModifiedDate":"2023-10-18"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"coming soon","lastModifiedDate":"2023-10-18"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"## Developer Guide Contributions","lastModifiedDate":"2023-10-18"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"coming soon","lastModifiedDate":"2023-10-18"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"## Team-Based Task Contributions","lastModifiedDate":"2023-10-18"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"1. **Github Setup**:","lastModifiedDate":"2023-10-18"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" - Established our team\u0027s **organization** and **repo** on GitHub.","lastModifiedDate":"2023-10-18"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" - Setup **GitHub project** to manage issues related to user stories and tasks.","lastModifiedDate":"2023-10-18"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" - Setup project **website deployment**.","lastModifiedDate":"2023-10-18"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"3. **Integration of GitHub Plugins**:","lastModifiedDate":"2023-10-18"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" - **Netifly :** Enables automatic deployments of our PR previews.","lastModifiedDate":"2023-10-18"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" - **Codecov :** Automate code coverage assessment, ensuring that our project maintains high code quality and identifying areas for improvement.","lastModifiedDate":"2023-10-18"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-10-18"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"## Review and Mentoring Contributions","lastModifiedDate":"2023-10-18"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-18"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"Here are the pull requests I reviewed and provided valuable feedback and suggestions:","lastModifiedDate":"2023-10-18"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #71](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/71)**","lastModifiedDate":"2023-10-18"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #91](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/91)**","lastModifiedDate":"2023-10-18"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #100](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/100)**","lastModifiedDate":"2023-10-18"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #102](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/102)**","lastModifiedDate":"2023-10-18"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #113](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/113)**","lastModifiedDate":"2023-10-18"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"- **[Pull Request #115](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/115)**","lastModifiedDate":"2023-10-18"}],"authorContributionMap":{"zannloo":17,"NereusWB922":65}},{"path":"docs/team/ngchunman.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Ng Chun Man\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/nid21cs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Nidhish Krishnan\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"docs/team/zannloo.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"layout: page","lastModifiedDate":"2023-09-27"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"title: Loo Mei Lin Zann\u0027s Project Portfolio Page","lastModifiedDate":"2023-09-27"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"---","lastModifiedDate":"2023-09-27"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"### Project: ProfBook","lastModifiedDate":"2023-09-27"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2023-09-27"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2023-09-27"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"* **New Feature**: To be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" * What it does: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * Justification: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Highlights: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2023-09-27"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"* **New Feature**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"* **Code contributed**: to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"* **Project management**:","lastModifiedDate":"2023-09-27"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2023-09-27"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"* **Documentation**:","lastModifiedDate":"2023-09-27"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" * User Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" * Developer Guide:","lastModifiedDate":"2023-09-27"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"* **Community**:","lastModifiedDate":"2023-09-27"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" * PRs reviewed (with non-trivial review comments): to be added soon.","lastModifiedDate":"2023-09-27"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" * Contributed to forum discussions (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" * Reported bugs and suggestions for other teams in the class (examples: to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" * Some parts of the history feature I added was adopted by several other class mates (to be added soon)","lastModifiedDate":"2023-09-27"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"* **Tools**:","lastModifiedDate":"2023-09-27"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" * to be added soon","lastModifiedDate":"2023-09-27"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-09-27"}],"authorContributionMap":{"zannloo":42}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.util.SampleProfBook;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" protected ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" protected State state;","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing ProfBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" //todo: abstract to an init method, and need to read from storage","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" state \u003d initModelManager(userPrefs);","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" //todo: Storage","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" logic \u003d new ProfBookLogicManager(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" private State initModelManager(ReadOnlyUserPrefs userPrefs) throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" //todo: storage","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" // Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" // ReadOnlyAddressBook initialData;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" // } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" // initialData \u003d new AddressBook();","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currentPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" // Use sample data.","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return new StateManager(currentPath, root, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" if (configOptional.isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" // protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" // Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" // UserPrefs initializedPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" // Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" // if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" // logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" // initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" // } catch (DataLoadingException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" // + \" Using default preferences.\");","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" // initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" // //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" // storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" // logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" // return initializedPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" // storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" // logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NereusWB922":74,"mingyuanc":1,"-":113}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.Option;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-22"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static String getErrorMessageForDuplicateOptions(Option... duplicateOptions) {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" assert duplicateOptions.length \u003e 0;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" Stream.of(duplicateOptions).map(Option::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" public static String format(Student student) {","lastModifiedDate":"2023-10-22"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-22"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" builder.append(student.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" .append(student.getPhone())","lastModifiedDate":"2023-10-22"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" .append(\"; Email: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" .append(student.getEmail())","lastModifiedDate":"2023-10-22"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" .append(\"; Address: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" .append(student.getAddress())","lastModifiedDate":"2023-10-22"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" .append(\"; StudentId: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" .append(student.getId());","lastModifiedDate":"2023-10-22"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":" return builder.toString();","lastModifiedDate":"2023-10-22"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-22"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" * Formats the {@code group} for display to the user.","lastModifiedDate":"2023-10-22"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-22"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" public static String format(Group group) {","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" builder.append(group.getName())","lastModifiedDate":"2023-10-22"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" .append(\"; GroupId: \")","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" .append(group.getId());","lastModifiedDate":"2023-10-22"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" return builder.toString();","lastModifiedDate":"2023-10-22"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"zannloo":29,"NereusWB922":4,"-":47}},{"path":"src/main/java/seedu/address/logic/ProfBookLogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ProfBookParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"//import seedu.address.storage.Storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"public class ProfBookLogicManager {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private final State state;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //private final Storage storage \u003d null;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" private final ProfBookParser profBookParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public ProfBookLogicManager(State state) {","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" //todo : storage;","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" this.state \u003d state;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" profBookParser \u003d new ProfBookParser();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Execute command and return the result if success","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * or throw exception if error occurred.","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" CommandResult commandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" Command command \u003d profBookParser.parseCommand(commandText, state.getCurrPath());","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" // try {","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // } catch (AccessDeniedException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // } catch (IOException ioe) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" // throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" return commandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return state.getDisplayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public String getCurrPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" return state.getCurrPath().toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return state.getAddressBookFilePath();","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return state.getGuiSettings();","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" state.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":83}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" NAME \"","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" PHONE \"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" EMAIL \"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" ADDRESS \"","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" John Doe \"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" 98765432 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" johnd@example.com \"","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" 311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" + OPTION_TAG + \" friends \"","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" + OPTION_TAG + \" owesMoney\";","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NereusWB922":16,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_NAME + \" NAME] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" + OPTION_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" + OPTION_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"NereusWB922":12,"-":230}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2023-10-02"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"NgChunMan":2,"-":17}},{"path":"src/main/java/seedu/address/logic/newcommands/ChangeDirectoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ChangeDirectoryCommandParser;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Change directory to target path.","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ChangeDirectoryCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"cd\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Changed directory to: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_DEST \u003d \"Student path is not navigable.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ChangeDirectoryCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" [destination path]\";","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code MoveStudentToGroupCommand} with the specified source and destination paths.","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param source The relative path to the source group from which the student will be moved.","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @param dest The relative path to the destination group to which the student will be moved.","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public ChangeDirectoryCommand(AbsolutePath dest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(dest);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(dest)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_PATH_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (dest.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_DEST);","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" state.changeDirectory(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dest.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChangeDirectoryCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" ChangeDirectoryCommand otherChangeDirectoryCommand \u003d (ChangeDirectoryCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" return this.dest.equals(otherChangeDirectoryCommand.dest);","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" .add(\"Destination\", dest)","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":93}},{"path":"src/main/java/seedu/address/logic/newcommands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"public abstract class Command {","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public abstract CommandResult execute(State state) throws CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":16,"NereusWB922":2}},{"path":"src/main/java/seedu/address/logic/newcommands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"public class CommandResult {","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" private final String feedbackToUser;","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" private final boolean showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" /** The application should exit. */","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" private final boolean exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2023-10-01"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2023-10-01"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2023-10-01"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2023-10-01"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" * and other fields set to their default value.","lastModifiedDate":"2023-10-01"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2023-10-01"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2023-10-01"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" * Gets the feedback message to be displayed to the user.","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" * @return The feedback message as a String.","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2023-10-01"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" return feedbackToUser;","lastModifiedDate":"2023-10-01"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * Checks if help information should be shown to the user.","lastModifiedDate":"2023-10-02"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if help information should be shown, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2023-10-01"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return showHelp;","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" * Checks if the application should exit.","lastModifiedDate":"2023-10-02"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if the application should exit, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-01"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" return exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" * Compares this CommandResult with another object for equality.","lastModifiedDate":"2023-10-02"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-02"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * @return {@code true} if the objects are equal, {@code false} otherwise.","lastModifiedDate":"2023-10-02"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-01"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-01"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-01"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-01"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-01"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2023-10-01"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2023-10-01"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * Computes the hash code for this CommandResult.","lastModifiedDate":"2023-10-02"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" * @return The hash code value.","lastModifiedDate":"2023-10-02"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-01"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2023-10-01"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this CommandResult.","lastModifiedDate":"2023-10-02"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" * @return A string containing the feedback message, showHelp, and exit information.","lastModifiedDate":"2023-10-02"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-01"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2023-10-01"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2023-10-01"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2023-10-01"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-01"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":81,"NgChunMan":31}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ALL;","lastModifiedDate":"2023-10-22"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DATETIME;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" * Adds a Deadline for a specified {@code Student} or {@code Group}.","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"public class CreateDeadlineCommand extends Command {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" + \": Creates a deadline task for student/group in specified directory\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" + \"specified path\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_DESC + \" DESCRIPTION] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_DATETIME + \" DATE_AND_TIME] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_ALL + \" CATERGORY]\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" + \" stu-001 \"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" + OPTION_DESC + \" Assignment 1 \"","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" + OPTION_DATETIME + \" 2023-10-11 23:59 \";","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s\";","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_STUDENTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" \"New Deadline task added to all students in group: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_GROUPS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" \"New Deadline task added to all groups in root: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_DUPLICATE_DEADLINE_TASK \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" \"This Deadline task has already been allocated\";","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot create task for this path.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_STU \u003d \"All stu flag is only allowed for group path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_GROUP \u003d \"All Group flag is only allowed for root path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath path;","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" private final Deadline deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" private String category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" * Creates an CreateDeadlineCommand to add the Deadline Task for a specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand(AbsolutePath path, Deadline deadline) {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" * Creates an CreateDeadlineCommand to add the Deadline Task for a specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" * User has input a category as well.","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand(AbsolutePath path, Deadline deadline, String category) {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, deadline, category);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" * Executes an CreateDeadlineCommand to allocate a {@code Deadline} task to a {@code Group} or {@code Student}","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_PATH_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" if (this.category \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" // Check target path is task manager","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInPath(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NOT_TASK_MANAGER);","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" TaskOperation target \u003d state.taskOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate deadline","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" if (target.hasTask(this.deadline)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_DUPLICATE_DEADLINE_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" target.addTask(this.deadline);","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, this.deadline));","lastModifiedDate":"2023-10-22"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" if (this.category.equals(\"allStu\")) {","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" if (!path.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_STU);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOper \u003d state.groupChildOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" groupOper.addTaskToAllChildren(deadline, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" if (!path.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOper \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" rootOper.addTaskToAllChildren(deadline, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" * Compares this {@code CreateDeadlineCommand} to another {@code CreateDeadlineCommand} to see if they are equal.","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code CreateDeadlineCommand} and false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-11"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CreateDeadlineCommand)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":141,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand otherCreateDeadlineCommand \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":" (CreateDeadlineCommand) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":" return this.deadline.equals(otherCreateDeadlineCommand.deadline)","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 this.path.equals(otherCreateDeadlineCommand.path);","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":148,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":149,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":150,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":151,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code CreateDeadlineCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":152,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":153,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":154,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":155,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-11"},{"lineNumber":156,"author":{"gitId":"zannloo"},"content":" .add(\"toCreateDeadline\", this.deadline)","lastModifiedDate":"2023-10-12"},{"lineNumber":157,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-11"},{"lineNumber":158,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":159,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-11"},{"lineNumber":160,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":161,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"zannloo":114,"NereusWB922":40,"mingyuanc":7}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-02"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for creating a new group within ProfBook.","lastModifiedDate":"2023-10-02"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to create a new group at a specified path.","lastModifiedDate":"2023-10-02"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"public class CreateGroupCommand extends Command {","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"mkdir\";","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in ProfBook\";","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": group\";","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" private final Group group;","lastModifiedDate":"2023-10-02"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code CreateGroupCommand} with the specified absolute path and group details.","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * @param dest The absolute path at which the new group will be created.","lastModifiedDate":"2023-10-20"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * @param group The details of the group to be created.","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public CreateGroupCommand(AbsolutePath dest, Group group) {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(dest, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" this.group \u003d group;","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" * Executes the CreateGroupCommand to create a new group within ProfBook at the specified path.","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" * @param state The current state of the application.","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the execution.","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs while executing the command.","lastModifiedDate":"2023-10-15"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOperation \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate group","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" if (rootOperation.hasChild(dest.getGroupId().get())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" rootOperation.addChild(this.group.getId(), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, this.group));","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * Checks if this CreateGroupCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-02"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof CreateGroupCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-02"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" CreateGroupCommand otherCreateGroupCommand \u003d (CreateGroupCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return this.dest.equals(otherCreateGroupCommand.dest)","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.group.equals(otherCreateGroupCommand.group);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this CreateGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the CreateGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-02"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" .add(\"toCreateGroup\", this.group)","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"NgChunMan":78,"NereusWB922":18,"mingyuanc":4}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-22"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-22"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-22"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" * Adds a student within the specific group.","lastModifiedDate":"2023-10-01"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"public class CreateStudentCommand extends Command {","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"touch\";","lastModifiedDate":"2023-10-01"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" : Adds a student into the specified directory\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" + \"specified path \"","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_NAME + \" NAME] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" + \"[\" + OPTION_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" + \" stu-200 \"","lastModifiedDate":"2023-10-22"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" + OPTION_NAME + \" Bob \"","lastModifiedDate":"2023-10-22"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" + OPTION_EMAIL + \" bobby@example.com \"","lastModifiedDate":"2023-10-22"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" + OPTION_PHONE + \" 92929292 \"","lastModifiedDate":"2023-10-22"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" + OPTION_ADDRESS + \" blk 258 Toa Payoh \";","lastModifiedDate":"2023-10-22"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2023-10-01"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in your specified class\";","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH \u003d \"Path provided should be a valid student path\";","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_GROUP_NOT_FOUND \u003d \"Group %1$s does not exist in ProfBook\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath path;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" private final Student student;","lastModifiedDate":"2023-10-01"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" * Creates an CreateStudentCommand to add the specified {@code Student}","lastModifiedDate":"2023-10-01"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" public CreateStudentCommand(AbsolutePath path, Student student) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" requireAllNonNull(path, student);","lastModifiedDate":"2023-10-01"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" this.path \u003d path;","lastModifiedDate":"2023-10-01"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" this.student \u003d student;","lastModifiedDate":"2023-10-01"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" * Executes an CreateStudentCommand to add the specified {@code Student} to a {@code Group}","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" if (!path.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" // Check group exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasGroup(path)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_GROUP_NOT_FOUND, path.getGroupId()));","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e target \u003d state.groupChildOperation(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" // Check duplicate student","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" if (target.hasChild(this.student.getId())) {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" target.addChild(this.student.getId(), this.student);","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(student)));","lastModifiedDate":"2023-10-22"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" * Compares this {@code CreateStudentCommand} to another {@code CreateStudentCommand} to see if they are equal.","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code CreateStudentCommand} and false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-01"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof CreateStudentCommand)) {","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-01"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand otherCreateStudentCommand \u003d (CreateStudentCommand) other;","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" return student.equals(otherCreateStudentCommand.student)","lastModifiedDate":"2023-10-13"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" \u0026\u0026 this.path.equals(otherCreateStudentCommand.path);","lastModifiedDate":"2023-10-13"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code CreateStudentCommand}.","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-01"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" .add(\"toCreateStudent\", student)","lastModifiedDate":"2023-10-06"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-06"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":95,"NereusWB922":20,"mingyuanc":7}},{"path":"src/main/java/seedu/address/logic/newcommands/CreateTodoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for creating a new \"ToDo\" task in ProfBook.","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to add a \"ToDo\" task.","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class CreateTodoCommand extends Command {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_DUPLICATE \u003d \"This Todo task has already been allocated\";","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_INVALID_PATH \u003d \"This path is invalid.\";","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_TODO_TASK_STUDENT \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" \"This ToDo task has already been allocated to this student in ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_TODO_TASK_GROUP \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" \"This ToDo task has already been allocated to this group in ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_STUDENTS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" \"New ToDo task added to all students in group: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_ALL_GROUPS \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" \"New ToDo task added to all groups in root: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_ERROR \u003d \"Invalid target encountered while creating this todo task\";","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New ToDo task has been added to: %1$s\";","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot create task for this path.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_STU \u003d \"All stu flag is only allowed for group path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_PATH_FOR_ALL_GROUP \u003d \"All Group flag is only allowed for root path\";","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" private final ToDo todo;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" private String category \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Constructs a {@code CreateTodoCommand} with the specified relative path and \"ToDo\" task details.","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" * @param relativePath The relative path to the group where the \"ToDo\" task will be added.","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @param todo The details of the \"ToDo\" task to be created.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand(AbsolutePath target, ToDo todo) {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code CreateTodoCommand} with the specified absolute path and \"ToDo\" task details.","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @param target The absolute path to the group where the \"ToDo\" task will be added.","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" * @param todo The details of the \"ToDo\" task to be created.","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" * @param category The specific category of people to add ToDo task to each.","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand(AbsolutePath target, ToDo todo, String category) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(target, todo, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" this.category \u003d category;","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" * Executes the CreateTodoCommand, adding a \"ToDo\" task to either a group or a specific student as specified","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * in the relative path.","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" if (this.category \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" if (taskOperation.hasTask(this.todo)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TODO_TASK_STUDENT);","lastModifiedDate":"2023-10-12"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" taskOperation.addTask(this.todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" if (this.category.equals(\"allStu\")) {","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (!target.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_STU);","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOper \u003d state.groupChildOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" groupOper.addTaskToAllChildren(todo, 1);","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" if (!target.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_PATH_FOR_ALL_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOper \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" rootOper.addTaskToAllChildren(todo, 1);;","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" * Checks if this CreateTodoCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof CreateTodoCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" CreateTodoCommand otherCreateTodoCommand \u003d (CreateTodoCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherCreateTodoCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.todo.equals(otherCreateTodoCommand.todo);","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" * Returns the string representation of this CreateTodoCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the CreateTodoCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-12"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" .add(\"toCreateTodo\", this.todo)","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":82,"zannloo":18,"NereusWB922":44,"mingyuanc":3}},{"path":"src/main/java/seedu/address/logic/newcommands/DeleteForStudentsAndGroupsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" * Deletes a {@code Student} or {@code Group} according to the targeted path.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"public class DeleteForStudentsAndGroupsCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final String COMMAND_WORD \u003d \"rm\";","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a student/group from the specified directory\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" + \"Parameters: \"","lastModifiedDate":"2023-10-22"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" + \"specified path\\n\"","lastModifiedDate":"2023-10-22"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-10-22"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" + \" stu-200 \";","lastModifiedDate":"2023-10-22"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-22"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_FOR_STUDENT \u003d \"Student removed: %1$s\";","lastModifiedDate":"2023-10-22"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_SUCCESS_FOR_GROUP \u003d \"Group removed: %1$s\";","lastModifiedDate":"2023-10-22"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_INCORRECT_DIRECTORY_ERROR \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_INVALID_PATH \u003d \"Path is invalid\";","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" public static final String MESSAGE_NO_SUCH_STUDENT_OR_GROUP \u003d \"There is no such student or group to delete\";","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_CURRENT_PATH \u003d \"Current path cannot be deleted\";","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_DISPLAY_PATH \u003d \"Current display path cannot be deleted.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" protected Student stu;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" protected Group grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath toBeDeleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" * Creates an DeleteForStudentsAndGroupsCommand to specified {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public DeleteForStudentsAndGroupsCommand(AbsolutePath toBeDeleted) { //path will specify which grp/student","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" this.toBeDeleted \u003d toBeDeleted;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" * Executes an DeleteForStudentsAndGroupsCommand to delete a {@code Student} or {@code Group}","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" * @return Command result which represents the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" * @throws CommandException Exception thrown when error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" * @throws InvalidPathException Exception thrown when error occurs due to invalid path.","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" * @throws UnsupportedPathOperationException Exception thrown when error occurs due to unsupported path execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" * @throws NoSuchChildException Exception thrown when child specified does not exist.","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" // Check if to be deleted path is current path.","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.equals(state.getCurrPath())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_DELETE_CURRENT_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" // Check if to be deleted path is diplay path.","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.equals(state.getDisplayPath())) {","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_DELETE_DISPLAY_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(toBeDeleted)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e target \u003d state.groupChildOperation(toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d toBeDeleted.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" if (!target.hasChild(studentId)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" stu \u003d target.getChild(studentId);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" target.deleteChild(studentId);","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" state.updateList();","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_FOR_STUDENT, Messages.format(stu)));","lastModifiedDate":"2023-10-22"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (toBeDeleted.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e target \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" GroupId groupId \u003d toBeDeleted.getGroupId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" if (!target.hasChild(groupId)) {","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" throw new CommandException(MESSAGE_NO_SUCH_STUDENT_OR_GROUP);","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" grp \u003d target.getChild(groupId);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" target.deleteChild(groupId);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" state.updateList();","lastModifiedDate":"2023-10-15"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_FOR_GROUP, Messages.format(grp)));","lastModifiedDate":"2023-10-22"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" * Compares this {@code DeleteForStudentsAndGroupsCommand} to another {@code DeleteForStudentsAndGroupsCommand}","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" * to see if they are equal.","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" * @param other The other object to compare against this {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" * @return True if the object is same as {@code DeleteForStudentsAndGroupsCommand} and false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" if (!(other instanceof DeleteForStudentsAndGroupsCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand otherDeleteForStudentsAndGroupsCommand \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" (DeleteForStudentsAndGroupsCommand) other;","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return this.toBeDeleted.equals(otherDeleteForStudentsAndGroupsCommand.toBeDeleted);","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" * Returns a string representation of the {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" * @return String representation of the {@code DeleteForStudentsAndGroupsCommand}.","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" .add(\"toDeleteStudentOrGroup\", toBeDeleted)","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":105,"NereusWB922":39}},{"path":"src/main/java/seedu/address/logic/newcommands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Deletes a task identified using it\u0027s displayed index on display panel.","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"rmt\";","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" + \"[display index] + \\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" + \"Constraint: Task list must be shown on display panel using \\\"cat\\\" command. + \\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" + \"Parameters: display index (must be a positive integer)\\n\"","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_TASK_LIST_NOT_SHOWN \u003d \"Current display panel is not displaying task list.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"The task list provided is invalid.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted task: %1$s\";","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTaskCommand.class);","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private final Index targetIndex;","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Construct a DeleteTaskCommand instance with target index.","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Executing delete task command...\");","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" // Check if diplay panel is displaying task list","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" if (!state.isShowTaskList()) {","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Task list is not shown. Aborting delete task command.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_TASK_LIST_NOT_SHOWN);","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(state.getDisplayPath());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" // Check if index is valid.","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (!taskOperation.isValidIndex(targetIndex.getOneBased())) {","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Invalid index: \" + targetIndex.getOneBased() + \". Aborting delete task command.\");","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Executing delete task command on index \" + targetIndex.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" Task deletedTask \u003d taskOperation.deleteTask(targetIndex.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Task deleted successfully. Deleted task: \" + deletedTask.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, deletedTask.toString()));","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":91}},{"path":"src/main/java/seedu/address/logic/newcommands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" * EditCommand is a class representing a command to edit the details of a person (either a student or a group) in","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" * ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Depending on the context (whether it\u0027s a student or group), this command can edit different fields.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_INVALID_PATH \u003d \"This path is invalid.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_UNSUPPORTED_PATH_OPERATION \u003d \"Path operation is not supported\";","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" public static final String ERROR_MESSAGE_NO_SUCH_GROUP \u003d \"Group does not exist in ProfBook.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_EDIT_GROUP_SUCCESS \u003d \"Field(s) of group has been edited successfully.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_EDIT_STUDENT_SUCCESS \u003d \"Field(s) of student has been edited successfully.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_NAME + \" NAME] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_PHONE + \" PHONE] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_EMAIL + \" EMAIL] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_ADDRESS + \" ADDRESS] \"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" + \"[\" + OPTION_TAG + \" TAG]...\\n\"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" + OPTION_PHONE + \" 91234567 \"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" + OPTION_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_INCORRECT_DIRECTORY_ERROR \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NO_SUCH_PATH \u003d \"Path does not exist in ProfBook.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" private EditGroupDescriptor editGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" private EditStudentDescriptor editStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * Constructs an EditCommand for editing a group\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * @param target The path to the target group to be edited.","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @param editGroupDescriptor The descriptor containing the details to edit.","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" public EditCommand(AbsolutePath target, EditGroupDescriptor editGroupDescriptor) {","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" this.editGroupDescriptor \u003d new EditGroupDescriptor(editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" * Constructs an EditCommand for editing a student\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * @param target The path to the target student to be edited.","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" * @param editStudentDescriptor The descriptor containing the details to edit.","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" public EditCommand(AbsolutePath target, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" this.editStudentDescriptor \u003d new EditStudentDescriptor(editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" * edited with {@code editStudentDescriptor}.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" private static Student createEditedStudent(Student studentToEdit, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" Name updatedName \u003d editStudentDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" Phone updatedPhone \u003d editStudentDescriptor.getPhone().orElse(studentToEdit.getPhone());","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" Email updatedEmail \u003d editStudentDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" Address updatedAddress \u003d editStudentDescriptor.getAddress().orElse(studentToEdit.getAddress());","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" StudentId updatedId \u003d editStudentDescriptor.getId().orElse(studentToEdit.getId());","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(studentToEdit.getAllTask());","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" return new Student(taskList, updatedName, updatedEmail, updatedPhone, updatedAddress, updatedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" * Creates and returns a {@code Group} with the details of {@code groupToEdit}","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" * edited with {@code editGroupDescriptor}.","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" private static Group createEditedGroup(Group groupToEdit, EditGroupDescriptor editGroupDescriptor) {","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" assert groupToEdit !\u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" Name updatedName \u003d editGroupDescriptor.getName().orElse(groupToEdit.getName());","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" Id updatedId \u003d editGroupDescriptor.getId().orElse(groupToEdit.getId());","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(groupToEdit.getAllTask());","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d groupToEdit.getChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" return new Group(taskList, students, updatedName, updatedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" * Executes the EditCommand to edit a group or student\u0027s details.","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" * @param state The current state of the application.","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the result of the execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If there\u0027s an error during command execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NO_SUCH_PATH);","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" if (target.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cGroup\u003e rootOperation \u003d state.rootChildOperation();","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" GroupId groupId \u003d target.getGroupId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" if (!rootOperation.hasChild(groupId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(ERROR_MESSAGE_NO_SUCH_GROUP);","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" Group groupToEdit \u003d rootOperation.getChild(groupId);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" Group editedGroup \u003d createEditedGroup(groupToEdit, this.editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" rootOperation.deleteChild(groupId);","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" rootOperation.addChild(groupId, editedGroup);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" state.updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(MESSAGE_EDIT_GROUP_SUCCESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" } else if (target.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e groupOperation \u003d state.groupChildOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d target.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" Student studentToEdit \u003d groupOperation.getChild(studentId);","lastModifiedDate":"2023-10-20"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" Student editedStudent \u003d createEditedStudent(studentToEdit, this.editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" groupOperation.deleteChild(studentId);","lastModifiedDate":"2023-10-20"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" groupOperation.addChild(editedStudent.getId(), editedStudent);","lastModifiedDate":"2023-10-20"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" state.updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(MESSAGE_EDIT_STUDENT_SUCCESS);","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" throw new CommandException(MESSAGE_INCORRECT_DIRECTORY_ERROR);","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditCommand is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" if (this.editStudentDescriptor \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherEditCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":195,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.editGroupDescriptor.equals(otherEditCommand.editGroupDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" return this.target.equals(otherEditCommand.target)","lastModifiedDate":"2023-10-20"},{"lineNumber":198,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.editStudentDescriptor.equals(otherEditCommand.editStudentDescriptor);","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"NgChunMan"},"content":" if (this.editStudentDescriptor !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"NgChunMan"},"content":" .add(\"toEdit\", this.editStudentDescriptor)","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"NgChunMan"},"content":" if (this.editGroupDescriptor !\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"NgChunMan"},"content":" .add(\"toEdit\", this.editGroupDescriptor)","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":218,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"NgChunMan"},"content":" return null;","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":189,"NereusWB922":32}},{"path":"src/main/java/seedu/address/logic/newcommands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * The HelpCommand class represents a command to display program usage instructions to the user.","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * When executed, it displays a help message with information on how to use the program.","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"ChangeDirectoryCommand: cd [targetPath]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" + \"CreateStudentCommand: touch [groupId/studentId] -n [name] -p [phone] -e [email] -a [address]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" + \"CreateGroupCommand: mkdir [groupId] -n [groupName]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" + \"CreateTodoCommand: todo -d [task]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" + \"CreateDeadlineCommand: “deadline -d [task] -dt [yyyy/MM/dd hh:mm]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" + \"DeleteCommand: rm -type [targetType] -target [targetId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" + \"EditCommand: edit [path]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" + \"MarkCommand: mark -d [task] -level [student/group] -target [StudentID/groupId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" + \"UnmarkCommand: unmark -d [task] -level [student/group] -target [StudentID/groupId]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" + \"SearchCommand: search [task]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" + \"HelpCommand: help\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" + \"MoveStudentToGroupCommand: mv [StudentID] [sourcePath] [destinationPath]\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" + \"ShowChildrenListCommand: ls\\n\"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" + \"ShowTaskListCommand: cat\\n\";","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Executes the HelpCommand to display program usage instructions.","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * @param state The current program state.","lastModifiedDate":"2023-10-15"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult containing the help message and related flags.","lastModifiedDate":"2023-10-15"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"NgChunMan":43}},{"path":"src/main/java/seedu/address/logic/newcommands/MoveStudentToGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-02"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-02"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-02"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-02"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Represents a command for moving a student from one group to another within ProfBook.","lastModifiedDate":"2023-10-02"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" * This command is typically used to change the group affiliation of a student.","lastModifiedDate":"2023-10-02"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class MoveStudentToGroupCommand extends Command {","lastModifiedDate":"2023-10-02"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public static final String COMMAND_WORD \u003d \"mv\";","lastModifiedDate":"2023-10-02"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the group\";","lastModifiedDate":"2023-10-02"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SOURCE_IS_NOT_STUDENT \u003d \"Source path must be a student directory\";","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_DEST_IS_NOT_GROUP \u003d \"Destination path must be a group directory\";","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_STUDENT_NOT_FOUND \u003d \"Source student not found in ProfBook\";","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_GROUP_NOT_FOUND \u003d \"Destination Group not found in ProfBook\";","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_MOVE_STUDENT_SUCCESS \u003d \"Student $1$s is moved to this group: %2$s\";","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_MOVE_COMMAND \u003d \"Move command is invalid.\";","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": student\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath source;","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath dest;","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-02"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * Constructs a {@code MoveStudentToGroupCommand} with the specified source and destination paths.","lastModifiedDate":"2023-10-02"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-02"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * @param source The absolute path to the source group from which the student will be moved.","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * @param dest The absolute path to the destination group to which the student will be moved.","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-02"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public MoveStudentToGroupCommand(AbsolutePath source, AbsolutePath dest) {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" requireAllNonNull(source, dest);","lastModifiedDate":"2023-10-02"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" this.source \u003d source;","lastModifiedDate":"2023-10-02"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" this.dest \u003d dest;","lastModifiedDate":"2023-10-02"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * ProfBook.","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" // Check move studen to group","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" if (source.isStudentDirectory() \u0026\u0026 dest.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // Check student exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasStudent(source)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_STUDENT_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" // Check group exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasGroup(dest)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_GROUP_NOT_FOUND);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" StudentId toBeMovedId \u003d source.getStudentId().get();","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e sourceGroup \u003d state.groupChildOperation(source);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" Student studentToBeMoved \u003d sourceGroup.getChild(toBeMovedId);","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e destGroup \u003d state.groupChildOperation(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" destGroup.addChild(toBeMovedId, studentToBeMoved);","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" sourceGroup.deleteChild(toBeMovedId);","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" state.updateList();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_MOVE_STUDENT_SUCCESS, source.getStudentId().get(), dest.getGroupId().get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_INVALID_MOVE_COMMAND);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-12"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-02"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof MoveStudentToGroupCommand)) {","lastModifiedDate":"2023-10-12"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-02"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-02"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand otherMoveStudentToGroupCommand \u003d (MoveStudentToGroupCommand) other;","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" return this.source.equals(otherMoveStudentToGroupCommand.source)","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.dest.equals(otherMoveStudentToGroupCommand.dest);","lastModifiedDate":"2023-10-13"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-12"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-02"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-02"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" .add(\"Source Path\", source)","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" .add(\"Dest Path\", dest)","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-12"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-02"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-02"}],"authorContributionMap":{"NgChunMan":73,"NereusWB922":42,"mingyuanc":6}},{"path":"src/main/java/seedu/address/logic/newcommands/ShowChildrenListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * Show Task List.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class ShowChildrenListCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"ls\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Show children List of %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_CHILDREN_MANAGER \u003d \"Cannot show children list for this path: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommand.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand() {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" target \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand(AbsolutePath path) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" target \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" if (target \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasChildrenListInCurrentPath()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(MESSAGE_NOT_CHILDREN_MANAGER);","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(state.getCurrPath());","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" state.showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, \"current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_PATH_NOT_FOUND, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // Check path is children manager","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasChildrenListInPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_CHILDREN_MANAGER, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" state.showChildrenList();","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Showing children list for path: \" + target.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ShowChildrenListCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":97}},{"path":"src/main/java/seedu/address/logic/newcommands/ShowTaskListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * Show Task List.","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class ShowTaskListCommand extends Command {","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final String COMMAND_WORD \u003d \"cat\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Show task list of %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_PATH_NOT_FOUND \u003d \"Path does not exist in ProfBook: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_NOT_TASK_MANAGER \u003d \"Cannot show task list for this path: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommand.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private final AbsolutePath target;","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand() {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" target \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand(AbsolutePath path) {","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" target \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Executes the MoveStudentToGroupCommand, moving a student from the source group to the destination group in","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * ProfBook.","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @return A CommandResult indicating the outcome of the command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CommandResult execute(State state) throws CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" if (target \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d state.getCurrPath();","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInCurrentPath()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_TASK_MANAGER, currPath.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(currPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" state.showTaskList();","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, currPath.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" // Check path exists in ProfBook","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_PATH_NOT_FOUND, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // Check path is task manager","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" if (!state.hasTaskListInPath(target)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" throw new CommandException(String.format(MESSAGE_NOT_TASK_MANAGER, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" state.setDisplayPath(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" state.showTaskList();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Showing task list for path: \" + target.toString());","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, target.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Checks if this MoveStudentToGroupCommand is equal to another object.","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ShowTaskListCommand)) {","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of this MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" * @return A string representation of the MoveStudentToGroupCommand.","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/seedu/address/logic/newcommands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands.exceptions;","lastModifiedDate":"2023-10-01"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-01"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":" public CommandException(String message) {","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":" super(message);","lastModifiedDate":"2023-10-01"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" super(message, cause);","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-01"}],"authorContributionMap":{"zannloo":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!areOptionsPresent(argMultimap, OPTION_NAME, OPTION_ADDRESS, OPTION_PHONE, OPTION_EMAIL)","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(OPTION_TAG));","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" * Returns true if none of the options contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" private static boolean areOptionsPresent(ArgumentMultimap argumentMultimap, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return Stream.of(options).allMatch(option -\u003e argumentMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"NereusWB922":16,"-":45}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Stores mapping of options to their respective arguments.","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * can be inserted multiple times for the same option.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /** Options mapped to their respective arguments**/","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private final Map\u003cOption, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Associates the specified argument value with {@code option} key in this map.","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param option Option key with which the specified argument value is to be associated","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param argValue Argument value to be associated with the specified option key","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public void put(Option option, String argValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e argValues \u003d getAllValues(option);","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" argMultimap.put(option, argValues);","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Returns the last value of {@code option}.","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cString\u003e getValue(Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e values \u003d getAllValues(option);","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns all values of {@code option}.","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * If the option does not exist or has no values, this will return an empty list.","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public List\u003cString\u003e getAllValues(Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (!argMultimap.containsKey(option)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(option));","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * Returns the preamble (text before the first valid option). Trims any leading/trailing spaces.","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return getValue(new Option(\"\")).orElse(\"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" * Throws a {@code ParseException} if any of the options given in {@code options} appeared more than","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" public void verifyNoDuplicateOptionsFor(Option... options) throws ParseException {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Option[] duplicatedOptions \u003d Stream.of(options).distinct()","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" .filter(option -\u003e argMultimap.containsKey(option) \u0026\u0026 argMultimap.get(option).size() \u003e 1)","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" .toArray(Option[]::new);","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (duplicatedOptions.length \u003e 0) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicateOptions(duplicatedOptions));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"NereusWB922":27,"-":51}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where options are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps options to their","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * respective argument values. Only the given options will be recognized in the arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param options Options to tokenize the arguments string with","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @return ArgumentMultimap object that maps options to their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static ArgumentMultimap tokenize(String argsString, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" // Add a space at the end to avoid skipping last option without value, e.g. \"-t smart -t\"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" List\u003cOptionPosition\u003e positions \u003d findAllOptionPositions(argsString + \" \", options);","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" return extractArguments(argsString + \" \", positions);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Finds all zero-based option positions in the given arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @param options Options to find in the arguments string","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @return List of zero-based option positions in the given arguments string","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" private static List\u003cOptionPosition\u003e findAllOptionPositions(String argsString, Option... options) {","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return Arrays.stream(options)","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" .flatMap(option -\u003e findOptionPositions(argsString, option).stream())","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" * {@see findAllOptionPositions}","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private static List\u003cOptionPosition\u003e findOptionPositions(String argsString, Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" List\u003cOptionPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" // find long name","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" String longName \u003d option.getLongName();","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" int longNamePosition \u003d findOptionPosition(argsString, longName, 0);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" while (longNamePosition !\u003d -1) {","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" OptionPosition extendedOption \u003d new OptionPosition(option, longNamePosition, false);","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" positions.add(extendedOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" longNamePosition \u003d findOptionPosition(argsString, longName, longNamePosition);","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // find short name (if applicable)","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (option.hasShortName()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" String shortName \u003d option.getShortName();","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" int shortNamePosition \u003d findOptionPosition(argsString, shortName, 0);","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" while (shortNamePosition !\u003d -1) {","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" OptionPosition extendedOption \u003d new OptionPosition(option, shortNamePosition, true);","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" positions.add(extendedOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" shortNamePosition \u003d findOptionPosition(argsString, shortName, shortNamePosition);","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" * Returns the index of the first occurrence of {@code option} in","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * is valid if there is a whitespace before {@code option}. Returns -1 if no","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code option} \u003d \"p/\" and","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code option} \u003d \"p/\" and","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" private static int findOptionPosition(String argsString, String option, int fromIndex) {","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" int optionIndex \u003d argsString.indexOf(\" \" + option + \" \", fromIndex);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" return optionIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" : optionIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Extracts options and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" * extracted options to their respective arguments. Options are extracted based on their zero-based positions in","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003coption\u003evalue \u003coption\u003evalue ...}","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" * @param optionPositions Zero-based positions of all options in {@code argsString}","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * @return ArgumentMultimap object that maps options to their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cOptionPosition\u003e optionPositions) {","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" optionPositions.sort((option1, option2) -\u003e option1.getStartPosition() - option2.getStartPosition());","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" // Insert a OptionPosition to represent the preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" OptionPosition preambleMarker \u003d new OptionPosition(new Option(\"\"), 0, false);","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" optionPositions.add(0, preambleMarker);","lastModifiedDate":"2023-10-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" // Add a dummy OptionPosition to represent the end of the string","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" OptionPosition endPositionMarker \u003d new OptionPosition(new Option(\"\"), argsString.length(), false);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" optionPositions.add(endPositionMarker);","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" // Map options to their argument values (if any)","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c optionPositions.size() - 1; i++) {","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" // Extract and store options and their arguments","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" Option argOption \u003d optionPositions.get(i).getOption();","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" String argValue \u003d extractArgumentValue(argsString, optionPositions.get(i), optionPositions.get(i + 1));","lastModifiedDate":"2023-10-10"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" argMultimap.put(argOption, argValue);","lastModifiedDate":"2023-10-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentOptionPosition}.","lastModifiedDate":"2023-10-10"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" * The end position of the value is determined by {@code nextOptionPosition}.","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" OptionPosition currentOptionPosition,","lastModifiedDate":"2023-10-10"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" OptionPosition nextOptionPosition) {","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" Option option \u003d currentOptionPosition.getOption();","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" int optionLength \u003d currentOptionPosition.isShortHand()","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" ? option.getShortNameLength()","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" : option.getLongNameLength();","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" int valueStartPos \u003d currentOptionPosition.getStartPosition() + optionLength;","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" String value \u003d argsString.substring(valueStartPos, nextOptionPosition.getStartPosition());","lastModifiedDate":"2023-10-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" * Represents a option\u0027s position in an arguments string.","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" private static class OptionPosition {","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" private final int startPosition;","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" private final Option option;","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" private final boolean isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" OptionPosition(Option option, int startPosition, boolean isShortHand) {","lastModifiedDate":"2023-10-10"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" this.option \u003d option;","lastModifiedDate":"2023-10-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" this.isShortHand \u003d isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" Option getOption() {","lastModifiedDate":"2023-10-10"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" return option;","lastModifiedDate":"2023-10-10"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" boolean isShortHand() {","lastModifiedDate":"2023-10-10"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return isShortHand;","lastModifiedDate":"2023-10-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"NereusWB922":91,"-":81}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /* Option definitions */","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_NAME \u003d new Option(\"--name\", \"-n\");","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_PHONE \u003d new Option(\"--phone\", \"-p\");","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_EMAIL \u003d new Option(\"--email\", \"-e\");","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_ADDRESS \u003d new Option(\"--address\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_TAG \u003d new Option(\"--tag\", \"-t\");","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_ID \u003d new Option(\"--id\", \"-i\");","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_DESC \u003d new Option(\"--desc\", \"-d\");","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final Option OPTION_DATETIME \u003d new Option(\"--datetime\", \"-dt\");","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" public static final Option OPTION_ALL \u003d new Option(\"--all\", \"-al\");","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"zannloo":1,"NereusWB922":9,"-":8}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_PHONE).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getValue(OPTION_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get()));","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" parseTagsForEdit(argMultimap.getAllValues(OPTION_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"NereusWB922":16,"-":69}},{"path":"src/main/java/seedu/address/logic/parser/Option.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * An option is a command line argument that can be used in a command.","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * An option typically has a long name and may have an optional short name.","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * E.g. \u0027--name\u0027 in \u0027mkstu ~/grp-001/A12345678Y --name Ming Yuan\u0027.","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Option {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private final String longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private final String shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private final boolean hasShortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Constructs an option with both long and short names.","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param longName The long name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param shortName The short name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Option(String longName, String shortName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" this.longName \u003d longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.shortName \u003d shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.hasShortName \u003d true;","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Constructs an option with only a long name.","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param longName The long name of the option.","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public Option(String longName) {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.longName \u003d longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.shortName \u003d null;","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" this.hasShortName \u003d false;","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public boolean hasShortName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" return hasShortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public int getShortNameLength() {","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return getShortName().length();","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public int getLongNameLength() {","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" return getLongName().length();","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public String getLongName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public String getShortName() {","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" return shortName;","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return this.longName;","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-10"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(longName, shortName);","lastModifiedDate":"2023-10-10"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Option)) {","lastModifiedDate":"2023-10-10"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" Option otherOption \u003d (Option) other;","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (shortName !\u003d null) {","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return longName.equals(otherOption.longName) \u0026\u0026 shortName.equals(otherOption.shortName);","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" return longName.equals(otherOption.longName);","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"NereusWB922":86}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ChangeDirectoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ChangeDirectoryCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ChangeDirectoryCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class ChangeDirectoryCommandParser implements Parser\u003cChangeDirectoryCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ChangeDirectoryCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ChangeDirectoryCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * and returns an ChangeDirectoryCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public ChangeDirectoryCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, ChangeDirectoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" logger.info(\"Creating ChangeDirectoryCommand with dest: \" + path.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return new ChangeDirectoryCommand(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":52}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ALL;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DATETIME;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateDeadlineForGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"public class CreateDeadlineCommandParser implements Parser\u003cCreateDeadlineCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" //deadline: only need one deadline command","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateDeadlineCommand","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateDeadlineCommand object for execution.","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public CreateDeadlineCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args, OPTION_DESC, OPTION_DATETIME, OPTION_ALL);","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_DESC, OPTION_DATETIME)","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_DESC, OPTION_DATETIME, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" LocalDateTime by \u003d ParserUtil.parseDateTime(argMultimap.getValue(OPTION_DATETIME).get());","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" Deadline deadline \u003d new Deadline(argMultimap.getValue(OPTION_DESC).get(), by);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getValue(OPTION_ALL).isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommand(targetPath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" String category \u003d ParserUtil.parseCategory(argMultimap.getValue(OPTION_ALL).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommand(targetPath, deadline, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":8,"NereusWB922":53}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class CreateGroupCommandParser implements Parser\u003cCreateGroupCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a group directory.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public CreateGroupCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME);","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_NAME) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME);","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" //todo: is possible to create group without provide id -\u003e will auto generate id","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" if (!targetPath.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(INVALID_PATH_MESSAGE);","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" GroupId id \u003d ParserUtil.parseGroupId(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" Group group \u003d new Group(name, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" return new CreateGroupCommand(targetPath, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":62}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateStudentCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class CreateStudentCommandParser implements Parser\u003cCreateStudentCommand\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a student directory.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateStudentCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateStudentCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public CreateStudentCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" //todo: need usage format from command class","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_NAME, OPTION_ADDRESS, OPTION_PHONE, OPTION_EMAIL)","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS);","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" //todo: is possible to create student without provide id -\u003e will auto generate id","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" if (!targetPath.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(INVALID_PATH_MESSAGE);","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" StudentId id \u003d ParserUtil.parseStudentId(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" Student student \u003d new Student(new TaskList(new ArrayList\u003c\u003e()), name, email, phone, address, id);","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return new CreateStudentCommand(targetPath, student);","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":76}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/CreateTodoCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ALL;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new CreateTodoForGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"public class CreateTodoCommandParser implements Parser\u003cCreateTodoCommand\u003e {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" //todo only need one todo command for both group and student","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the CreateTodoForGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * and returns an CreateTodoForGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public CreateTodoCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args, OPTION_DESC, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (!ParserUtil.areOptionsPresent(argMultimap, OPTION_DESC)","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, CreateTodoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_DESC, OPTION_ALL);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" ToDo todo \u003d new ToDo(argMultimap.getValue(OPTION_DESC).get());","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getValue(OPTION_ALL).isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommand(targetPath, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" String category \u003d ParserUtil.parseCategory(argMultimap.getValue(OPTION_ALL).get());","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommand(targetPath, todo, category);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":7,"NereusWB922":51}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/DeleteForStudentsAndGroupsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":" * Parses input arguments and creates a new DeleteForStudentsAndGroupsCommand object","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"public class DeleteForStudentsAndGroupsCommandParser implements Parser\u003cDeleteForStudentsAndGroupsCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":" private static final String INVALID_PATH_MESSAGE \u003d \"Destination path provided is not a group or student directory.\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteForStudentsAndGroupsCommand","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" * and returns an DeleteForStudentsAndGroupsCommand object for execution.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public DeleteForStudentsAndGroupsCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, DeleteForStudentsAndGroupsCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return new DeleteForStudentsAndGroupsCommand(targetPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":31,"NereusWB922":14}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTaskCommandParser.class);","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteForStudentsAndGroupsCommand","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * and returns an DeleteForStudentsAndGroupsCommand object for execution.","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public DeleteTaskCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Parsing delete task command with arguments: \" + args);","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Index parsed (One Based): \" + index.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" logger.warning(\"Error parsing delete task command: \" + pe.getMessage());","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":38}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ID;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.EditCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * Parses user input to create an `EditCommand` for editing student or group details.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" * This parser handles commands that allow users to modify information of existing students or groups.","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" * Parses the given command arguments and creates an `EditCommand` object.","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" * @param args The command arguments to be parsed.","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" * @return An `EditCommand` object based on the parsed arguments.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * @throws ParseException If the command arguments are invalid or if parsing fails.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public EditCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" requireNonNull(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" ArgumentTokenizer.tokenize(args, OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" argMultimap.verifyNoDuplicateOptionsFor(OPTION_NAME, OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS, OPTION_ID);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath targetPath \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" targetPath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" if (targetPath.isStudentDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" EditStudentDescriptor editStudentDescriptor \u003d getEditStudentDescriptor(argMultimap);","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" if (!editStudentDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return new EditCommand(targetPath, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" // bug: what if user pass phone option?","lastModifiedDate":"2023-10-20"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" if (targetPath.isGroupDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" EditGroupDescriptor editGroupDescriptor \u003d getEditGrouDescriptor(argMultimap);","lastModifiedDate":"2023-10-20"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" if (!editGroupDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" return new EditCommand(targetPath, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" return null;","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" private EditStudentDescriptor getEditStudentDescriptor(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ID).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" editStudentDescriptor.setId(ParserUtil.parseStudentId(argMultimap.getValue(OPTION_ID).get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_PHONE).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(OPTION_PHONE).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_EMAIL).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(OPTION_EMAIL).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ADDRESS).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" editStudentDescriptor","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" .setAddress(ParserUtil.parseAddress(argMultimap.getValue(OPTION_ADDRESS).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" return editStudentDescriptor;","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" private EditGroupDescriptor getEditGrouDescriptor(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_NAME).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" editGroupDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(OPTION_NAME).get()));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" if (argMultimap.getValue(OPTION_ID).isPresent()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" editGroupDescriptor.setId(ParserUtil.parseGroupId(argMultimap.getValue(OPTION_ID).get()));","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return editGroupDescriptor;","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":66,"NereusWB922":39}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/HelpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.HelpCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * The HelpCommandParser class is responsible for parsing user input and creating a HelpCommand","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * based on the input. It implements the Parser interface for parsing commands.","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommandParser implements Parser\u003cHelpCommand\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Parses the user input to create a HelpCommand.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" * @return A HelpCommand based on the input.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * @throws ParseException If the user input is invalid or in the wrong format.","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public HelpCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" return new HelpCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":32,"NereusWB922":3}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/MoveStudentToGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new MoveStudentToGroupCommand object","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class MoveStudentToGroupCommandParser implements Parser\u003cMoveStudentToGroupCommand\u003e {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the MoveStudentToGroupCommand","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * and returns an MoveStudentToGroupCommand object for execution.","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @return A MoveStudentToGroupCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public MoveStudentToGroupCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, MoveStudentToGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" String[] paths \u003d argMultimap.getPreamble().split(\" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" if (paths.length !\u003d 2) {","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, MoveStudentToGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" RelativePath source \u003d ParserUtil.parseRelativePath(paths[0]);","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absoluteSource \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" absoluteSource \u003d currPath.resolve(source);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" RelativePath dest \u003d ParserUtil.parseRelativePath(paths[1]);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absoluteDest \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" absoluteDest \u003d currPath.resolve(dest);","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" return new MoveStudentToGroupCommand(absoluteSource, absoluteDest);","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NereusWB922":61}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" T parse(String userInput, AbsolutePath currPath) throws ParseException;","lastModifiedDate":"2023-10-20"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2023-10-11"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.Option;","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class ParserUtil {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(name);","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new Name(trimmedName);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(phone);","lastModifiedDate":"2023-10-11"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2023-10-11"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2023-10-11"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(address);","lastModifiedDate":"2023-10-11"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2023-10-11"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2023-10-11"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-11"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2023-10-11"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(email);","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String path} into an {@code RelativePath}.","lastModifiedDate":"2023-10-11"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code path} is invalid.","lastModifiedDate":"2023-10-11"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath parseRelativePath(String path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" String trimmedPath \u003d path.trim();","lastModifiedDate":"2023-10-11"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d null;","lastModifiedDate":"2023-10-11"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-11"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" relativePath \u003d new RelativePath(trimmedPath);","lastModifiedDate":"2023-10-11"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-11"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-11"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" return relativePath;","lastModifiedDate":"2023-10-11"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code RelativePath} to extract a {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @param path The {@code RelativePath} to parse.","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * @return The extracted {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException If the path is invalid or doesn\u0027t contain a valid {@code StudentId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" public static StudentId parseStudentId(AbsolutePath path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cStudentId\u003e studentIdOptional \u003d path.getStudentId();","lastModifiedDate":"2023-10-11"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" if (!studentIdOptional.isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(\"No student id found in the path.\");","lastModifiedDate":"2023-10-11"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" return studentIdOptional.get();","lastModifiedDate":"2023-10-11"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String student id} into a {@code StudentId}.","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" public static StudentId parseStudentId(String id) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-20"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" if (!StudentId.isValidStudentId(trimmedId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" return new StudentId(trimmedId);","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code RelativePath} to extract a {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" * @param path The {@code RelativePath} to parse.","lastModifiedDate":"2023-10-12"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" * @return The extracted {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException If the path is invalid or doesn\u0027t contain a valid {@code GroupId}.","lastModifiedDate":"2023-10-12"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" public static GroupId parseGroupId(AbsolutePath path) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-11"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupIdOptional \u003d path.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" if (!groupIdOptional.isPresent()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(\"No group id found in the path.\");","lastModifiedDate":"2023-10-11"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" return groupIdOptional.get();","lastModifiedDate":"2023-10-11"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String group id} into a {@code GroupId}.","lastModifiedDate":"2023-10-20"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-20"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code id} is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" public static GroupId parseGroupId(String id) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(id);","lastModifiedDate":"2023-10-20"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2023-10-20"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" if (!GroupId.isValidGroupId(trimmedId)) {","lastModifiedDate":"2023-10-20"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(GroupId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-20"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" return new GroupId(trimmedId);","lastModifiedDate":"2023-10-20"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" * Parses a {@code String dateTime} into a {@code LocalDateTime}.","lastModifiedDate":"2023-10-12"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" * @param dateTimeStr The dateTime string.","lastModifiedDate":"2023-10-12"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the given {@code path} is invalid.","lastModifiedDate":"2023-10-12"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" public static LocalDateTime parseDateTime(String dateTimeStr) throws ParseException {","lastModifiedDate":"2023-10-12"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(dateTimeStr);","lastModifiedDate":"2023-10-12"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" String trimmedDateTimeStr \u003d dateTimeStr.trim();","lastModifiedDate":"2023-10-12"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-10-12"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-12"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" dateTime \u003d LocalDateTime.parse(trimmedDateTimeStr, DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-10-12"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-12"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-12"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" return dateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" * Returns true if none of the options contains empty {@code Optional} values in the given","lastModifiedDate":"2023-10-11"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2023-10-11"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" public static boolean areOptionsPresent(ArgumentMultimap argumentMultimap, Option... options) {","lastModifiedDate":"2023-10-11"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" return Stream.of(options).allMatch(option -\u003e argumentMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":220,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":221,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":222,"author":{"gitId":"zannloo"},"content":" * Parses a {@code String cat} into a {@code String}.","lastModifiedDate":"2023-10-14"},{"lineNumber":223,"author":{"gitId":"zannloo"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2023-10-14"},{"lineNumber":224,"author":{"gitId":"zannloo"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":225,"author":{"gitId":"zannloo"},"content":" * @throws ParseException if the given {@code cat} is invalid.","lastModifiedDate":"2023-10-14"},{"lineNumber":226,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":227,"author":{"gitId":"zannloo"},"content":" public static String parseCategory(String cat) throws ParseException {","lastModifiedDate":"2023-10-15"},{"lineNumber":228,"author":{"gitId":"zannloo"},"content":" requireNonNull(cat);","lastModifiedDate":"2023-10-14"},{"lineNumber":229,"author":{"gitId":"zannloo"},"content":" String trimmedCat \u003d cat.trim();","lastModifiedDate":"2023-10-14"},{"lineNumber":230,"author":{"gitId":"zannloo"},"content":" if (!(cat.equals(\"allStu\")) \u0026\u0026 !(cat.equals(\"allGrp\"))) {","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"zannloo"},"content":" throw new ParseException(\"Format is invalid. Should be allStu or allGrp\");","lastModifiedDate":"2023-10-14"},{"lineNumber":232,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":233,"author":{"gitId":"zannloo"},"content":" return new String(trimmedCat);","lastModifiedDate":"2023-10-14"},{"lineNumber":234,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"zannloo":15,"NereusWB922":220}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ProfBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-10-11"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ChangeDirectoryCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.EditCommand;","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ShowChildrenListCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.ShowTaskListCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-11"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Parses user input.","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"public class ProfBookParser {","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ProfBookParser.class);","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the applicaiton","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public Command parseCommand(String userInput, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-10-11"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-10-11"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-10-11"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-10-11"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-10-11"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-10-11"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" switch (commandWord) {","lastModifiedDate":"2023-10-11"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" case CreateStudentCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" return new CreateStudentCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" case CreateGroupCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-11"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new CreateGroupCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" case CreateTodoCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" return new CreateTodoCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" case CreateDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" return new CreateDeadlineCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" case MoveStudentToGroupCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return new MoveStudentToGroupCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" case ChangeDirectoryCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" return new ChangeDirectoryCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" case ShowTaskListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" case ShowChildrenListCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" case DeleteForStudentsAndGroupsCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return new DeleteForStudentsAndGroupsCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return new EditCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" return new HelpCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return new DeleteTaskCommandParser().parse(arguments, currPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-10-11"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-10-11"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2023-10-11"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NgChunMan":9,"NereusWB922":96}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ShowChildrenListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ShowChildrenListCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ShowChildrenListCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ShowChildrenListCommandParser implements Parser\u003cShowChildrenListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_COMMAND_CREATED \u003d \"Created new \\\"cat\\\" command: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowChildrenListCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ShowChildrenListCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * and returns an ShowChildrenListCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A ShowChildrenListCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public ShowChildrenListCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, \"Current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" target \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, path.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return new ShowChildrenListCommand(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/logic/parser/newcommandparser/ShowTaskListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.ShowTaskListCommand;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Parses input arguments and creates a new ShowTaskListCommand object","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class ShowTaskListCommandParser implements Parser\u003cShowTaskListCommand\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_COMMAND_CREATED \u003d \"Created new \\\"ls\\\" command: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ShowTaskListCommandParser.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Parses the given {@code String} of arguments in the context of the ShowTaskListCommand","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * and returns an ShowTaskListCommand object for execution.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param args The user input string.","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param currPath The current path of the application.","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A ShowTaskListCommand based on the input.","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public ShowTaskListCommand parse(String args, AbsolutePath currPath) throws ParseException {","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, \"Current directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d ParserUtil.parseRelativePath(argMultimap.getPreamble());","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d null;","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" target \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" logger.fine(String.format(MESSAGE_COMMAND_CREATED, path.toString()));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return new ShowTaskListCommand(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/field/EditGroupDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.model.field;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" * Represents the descriptor for editing the details of a group in ProfBook. The descriptor contains fields for","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * updating the group\u0027s name and id. It helps to track which fields have been edited by the user.","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * An instance of this class is used within the {@code EditCommand} to specify the details to be edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"public class EditGroupDescriptor {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" private Name name;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" private Id id;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public EditGroupDescriptor() {}","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" public EditGroupDescriptor(EditGroupDescriptor toCopy) {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" return CollectionUtil.isAnyNonNull(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" * Sets the name field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" * @param name The new name to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" * Gets the name field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the name if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" * Sets the id field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" * @param id The new id to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" public void setId(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" * Gets the id field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the id if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cId\u003e getId() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditStudentDescriptor is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditGroupDescriptor)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor otherEditGroupDescriptor \u003d (EditGroupDescriptor) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" if (this.name \u003d\u003d null || otherEditGroupDescriptor.name \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" if (this.id \u003d\u003d null || otherEditGroupDescriptor.id \u003d\u003d null) {","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" return this.name.equals(otherEditGroupDescriptor.name) \u0026\u0026 this.id.equals(otherEditGroupDescriptor.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditStudentDescriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":114}},{"path":"src/main/java/seedu/address/model/field/EditStudentDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.model.field;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" * Represents the descriptor for editing the details of a student in ProfBook. The descriptor contains fields for","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * updating the student\u0027s name, phone, email, address, and id. It helps to track which fields have been edited by","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" * the user.","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * An instance of this class is used within the {@code EditCommand} to specify the details to be edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"public class EditStudentDescriptor {","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" private Name name;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" private Phone phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" private Email email;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" private Address address;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private StudentId id;","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" public EditStudentDescriptor() {}","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * Copy constructor.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public EditStudentDescriptor(EditStudentDescriptor toCopy) {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" setName(toCopy.name);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" setId(toCopy.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" * Sets the name field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" * @param name The new name to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void setName(Name name) {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" * Gets the name field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the name if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" * Sets the phone field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * @param phone The new phone to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" * Gets the phone field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the phone if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" * Sets the email field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" * @param email The new phone to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" * Gets the email field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the email if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" * Sets the address field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" * @param address The new address to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" * Gets the address field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the address if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" * Sets the id field in the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" * @param id The new id to set.","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" public void setId(StudentId id) {","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" * Gets the id field from the descriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" * @return An Optional containing the id if it\u0027s set, empty otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cStudentId\u003e getId() {","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" return Optional.ofNullable(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" * Checks if this EditStudentDescriptor is equal to another object.","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" * @param other The object to compare with.","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" if (!(other instanceof EditStudentDescriptor)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor otherEditStudentDescriptor \u003d (EditStudentDescriptor) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" return this.name.equals(otherEditStudentDescriptor.name)","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.phone.equals(otherEditStudentDescriptor.phone)","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.email.equals(otherEditStudentDescriptor.email)","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.address.equals(otherEditStudentDescriptor.address)","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NgChunMan"},"content":" \u0026\u0026 this.id.equals(otherEditStudentDescriptor.id);","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of this EditStudentDescriptor.","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" * @return A string representation of the object.","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" .add(\"address\", address)","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":" .add(\"id\", id)","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" .toString();","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":173,"NereusWB922":4}},{"path":"src/main/java/seedu/address/model/id/GroupId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * The {@code GroupId} class represents a group identifier (ID)","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * with a specific format.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"public class GroupId extends Id {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final String VALIDATION_REGEX \u003d \"[Gg][Rr][Pp]-\\\\d{3}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \"Group Id should be in the format \u0027grp-XXX\u0027 where XXX is a 3-digit number.\";","lastModifiedDate":"2023-10-11"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Private constructor to create a {@code GroupId} object with a valid group id string.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param id The valid group Id.","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public GroupId(String id) {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidGroupId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return true if given string is a valid group id.","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static boolean isValidGroupId(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof GroupId)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" GroupId otherStudentId \u003d (GroupId) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return id.equals(otherStudentId.id);","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(id, \"GroupId\");","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/id/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Represents an identifier (ID) with a string value.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public abstract class Id {","lastModifiedDate":"2023-10-11"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" protected final String id;","lastModifiedDate":"2023-10-11"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code Id} object with the specified ID value.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param id The ID value to store.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public Id(String id) {","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id.toUpperCase();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" return this.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":22}},{"path":"src/main/java/seedu/address/model/id/StudentId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-11"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-11"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * The {@code StudentId} class represents a student identifier (ID)","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * with a specific format.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"public class StudentId extends Id {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}[a-zA-Z]\";","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \"The string should be 4 digits number follow with any letter.\";","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code StudentId} object with the valid ID value.","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param id A valid student id.","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public StudentId(String id) {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidStudentId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return true if given string is a valid studentId","lastModifiedDate":"2023-10-11"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static boolean isValidStudentId(String test) {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-10-11"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-11"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-11"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-11"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof StudentId)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-11"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" StudentId otherStudentId \u003d (StudentId) other;","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return id.equals(otherStudentId.id);","lastModifiedDate":"2023-10-11"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-11"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-11"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(id, \"StudentId\");","lastModifiedDate":"2023-10-11"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":51}},{"path":"src/main/java/seedu/address/model/id/exceptions/InvalidIdException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.id.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code InvalidIdException} class represents an exception that is thrown when an invalid ID is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * It is used to indicate that an ID does not match the expected format or criteria.","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class InvalidIdException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidIdException} with the specified error message.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public InvalidIdException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/seedu/address/model/path/AbsolutePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-20"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-20"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-20"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.exceptions.InvalidIdException;","lastModifiedDate":"2023-10-20"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElement;","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElementType;","lastModifiedDate":"2023-10-11"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-20"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Absolute Path for storing group and student id.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"public class AbsolutePath extends Path {","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code AbsolutePath} from a path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param path The path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException if the given path string is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (!path.startsWith(\"~\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Absolute path should start with ~/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" commonConstructor(path);","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" logger.info(this.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code AbsolutePath} with path element list.","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @param fullPathElements The list of elements for the full path.","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath(List\u003cPathElement\u003e fullPathElements) {","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" super(fullPathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * Resolves a relative path against this absolute path, resulting in a new absolute path.","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" * @param relative The relative path to resolve against this absolute path.","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" * @return A new AbsolutePath representing the resolved path.","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered during resolution.","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath resolve(RelativePath relative) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e fullPathElements \u003d new ArrayList\u003c\u003e(this.pathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e relativePathElements \u003d relative.pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // If relativePath start from root, should return the relativePath","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (relativePathElements.get(0).getType() \u003d\u003d PathElementType.ROOT) {","lastModifiedDate":"2023-10-11"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return new AbsolutePath(relativePathElements);","lastModifiedDate":"2023-10-11"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" Path.appendPathElements(fullPathElements, relativePathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return new AbsolutePath(fullPathElements);","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a group directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a group directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public boolean isGroupDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.GROUPID;","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a student directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a student directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public boolean isStudentDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.STUDENTID;","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * Checks whether the path represents a root directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * @return {@code true} if the path is a root directory; {@code false} otherwise.","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public boolean isRootDirectory() {","lastModifiedDate":"2023-10-20"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" PathElement lastElement \u003d this.pathElements.get(this.pathElements.size() - 1);","lastModifiedDate":"2023-10-20"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return lastElement.getType() \u003d\u003d PathElementType.ROOT;","lastModifiedDate":"2023-10-20"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the student ID from the path directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" * @return The student ID.","lastModifiedDate":"2023-10-20"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" * @throws UnsupportedPathOperationException If the operation is not supported based on the directory\u0027s state.","lastModifiedDate":"2023-10-20"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidIdException If the retrieved ID is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cStudentId\u003e getStudentId() {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" if (this.isGroupDirectory() || this.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c this.pathElements.size(); i++) {","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" PathElement currElement \u003d this.pathElements.get(i);","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" if (currElement.getType() \u003d\u003d PathElementType.STUDENTID) {","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" return Optional.of(new StudentId(currElement.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the group ID from the path directory.","lastModifiedDate":"2023-10-20"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-20"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * @return The group ID.","lastModifiedDate":"2023-10-20"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * @throws UnsupportedPathOperationException If the operation is not supported based on the directory\u0027s state.","lastModifiedDate":"2023-10-20"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidIdException If the retrieved ID is invalid.","lastModifiedDate":"2023-10-20"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" public Optional\u003cGroupId\u003e getGroupId() {","lastModifiedDate":"2023-10-20"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" if (this.isRootDirectory()) {","lastModifiedDate":"2023-10-20"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c this.pathElements.size(); i++) {","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" PathElement currElement \u003d this.pathElements.get(i);","lastModifiedDate":"2023-10-20"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" if (currElement.getType() \u003d\u003d PathElementType.GROUPID) {","lastModifiedDate":"2023-10-20"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" return Optional.of(new GroupId(currElement.toString()));","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" return Optional.empty();","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof AbsolutePath)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" return super.equals(obj);","lastModifiedDate":"2023-10-07"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(super.hashCode(), \"ABSOLUTEPATH\");","lastModifiedDate":"2023-10-07"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":160}},{"path":"src/main/java/seedu/address/model/path/Path.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElement;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.PathElementType;","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.exceptions.InvalidPathElementException;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Represents a path in our application.","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public abstract class Path {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(Path.class);","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" protected final List\u003cPathElement\u003e pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Constructs an empty {@code Path}.","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public Path() {","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" this.pathElements \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code Path} from a list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param pathElements The list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public Path(List\u003cPathElement\u003e pathElements) {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.pathElements \u003d pathElements;","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * Common constructor logic for initializing a {@code Path} from a string representation.","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * @param path The string representation of the path.","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" protected void commonConstructor(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" if (path.startsWith(\"/\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" path \u003d path.substring(1, path.length());","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (path.endsWith(\"/\")) {","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" path \u003d path.substring(0, path.length() - 1);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" String[] elementStrs \u003d path.split(\"/\");","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" List\u003cPathElement\u003e elements \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" for (String elementStr : elementStrs) {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" PathElement element \u003d PathElement.parsePathElement(elementStr);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" elements.add(element);","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathElementException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Encountered invalid path element: \" + elementStr);","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" appendPathElements(this.pathElements, elements);","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" * Appends a list of path elements to an existing list of path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Handles path element traversal, validation, and structure checks.","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param destination The list to which path elements will be appended.","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @param source The list of path elements to append.","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException If an invalid path element is encountered or if the path structure is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" protected static void appendPathElements(List\u003cPathElement\u003e destination, List\u003cPathElement\u003e source)","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" for (PathElement element : source) {","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" if (element.getType() \u003d\u003d PathElementType.CURRENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" if (element.getType() \u003d\u003d PathElementType.PARENT \u0026\u0026 !destination.isEmpty()) {","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" PathElement prevElement \u003d destination.get(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" if (prevElement.getType() \u003d\u003d PathElementType.ROOT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Unable to navigate above home directory\");","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" if (prevElement.getType() !\u003d PathElementType.PARENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" destination.remove(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" } else if (!destination.isEmpty()) {","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" PathElement prevElement \u003d destination.get(destination.size() - 1);","lastModifiedDate":"2023-09-29"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" int priorityDiff \u003d element.getPriorityDiff(prevElement);","lastModifiedDate":"2023-09-29"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" // Make sure curr element is has 1 level lower","lastModifiedDate":"2023-09-29"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" if (priorityDiff !\u003d -1 \u0026\u0026 prevElement.getType() !\u003d PathElementType.PARENT) {","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathException(\"Invalid path structure.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" destination.add(element);","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" if (destination.size() \u003d\u003d 0) {","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" destination.add(PathElement.parsePathElement(\".\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathElementException e) {","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(e.getMessage());","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" logger.info(destination.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" List\u003cString\u003e pathElementStrings \u003d pathElements.stream()","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" .map(PathElement::toString)","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" return String.join(\"/\", pathElementStrings);","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof Path)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" Path other \u003d (Path) obj;","lastModifiedDate":"2023-10-07"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" return this.pathElements.equals(other.pathElements);","lastModifiedDate":"2023-10-07"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(pathElements);","lastModifiedDate":"2023-10-07"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":144}},{"path":"src/main/java/seedu/address/model/path/RelativePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Relative Path for storing group and student id.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class RelativePath extends Path {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Construct {@code RelativePath} from a path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param path The path string.","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathException if the given path string is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public RelativePath(String path) throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" commonConstructor(path);","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" logger.info(path.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof RelativePath)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return super.equals(obj);","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(super.hashCode(), \"RELATIVEPATH\");","lastModifiedDate":"2023-10-07"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":45}},{"path":"src/main/java/seedu/address/model/path/element/PathElement.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.element.exceptions.InvalidPathElementException;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Represent an element in a path.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class PathElement {","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private String elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private PathElementType type;","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * Constructs a {@code PathElement} with the element string and type.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param elementStr The element string.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of the element.","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public PathElement(String elementStr, PathElementType type) {","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.elementStr \u003d elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.type \u003d type;","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * Parses a path element from a string and returns a {@code PathElement} object.","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param element The string representation of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @return A PathElement object representing the parsed path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidPathElementException If the path element is invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public static PathElement parsePathElement(String element) throws InvalidPathElementException {","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" if (element.equals(\"~\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.ROOT);","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" } else if (element.equals(\"..\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.PARENT);","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" } else if (element.equals(\".\")) {","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.CURRENT);","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" } else if (StudentId.isValidStudentId(element)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.STUDENTID);","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } else if (GroupId.isValidGroupId(element)) {","lastModifiedDate":"2023-10-11"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return new PathElement(element, PathElementType.GROUPID);","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidPathElementException();","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" * Gets the type of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" * @return The type of the path element.","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public PathElementType getType() {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" return this.type;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * Calculates the priority difference between two path elements.","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @param other The other path element to compare with.","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * @return The priority difference.","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public int getPriorityDiff(PathElement other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return this.type.getPriority() - other.type.getPriority();","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" return this.elementStr;","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-10-07"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-07"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (!(obj instanceof PathElement)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-07"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" PathElement other \u003d (PathElement) obj;","lastModifiedDate":"2023-10-07"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return elementStr.equals(other.elementStr) \u0026\u0026 type \u003d\u003d other.type;","lastModifiedDate":"2023-10-07"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-07"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" return Objects.hash(elementStr, type);","lastModifiedDate":"2023-10-07"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":94}},{"path":"src/main/java/seedu/address/model/path/element/PathElementType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code PathElementType} enum represents the types of elements that can appear in a path.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public enum PathElementType {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" STUDENTID(0), GROUPID(1), ROOT(2), PARENT(-1), CURRENT(-2);","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" private final int priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" PathElementType(int priority) {","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public int getPriority() {","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" return this.priority;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":18}},{"path":"src/main/java/seedu/address/model/path/element/exceptions/InvalidPathElementException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.element.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An exception thrown when an invalid path element is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidPathElementException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidPathElementException} with the specified detail message.","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param message The message explaining the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public InvalidPathElementException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(\"Invalid id provided.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/seedu/address/model/path/exceptions/InvalidPathException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An exception thrown when an invalid path is encountered.","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidPathException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code InvalidPathException} with a message.","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param message The message explaining the reason for the exception.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidPathException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/seedu/address/model/path/exceptions/UnsupportedPathOperationException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The {@code UnsupportedPathOperationException} class represents an","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * exception that is thrown when an operation is not supported or is","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * invalid based on the state of a path directory.","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public class UnsupportedPathOperationException extends Exception {","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Constructs an {@code UnsupportedPathOperationException} with the specified error message.","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing why the operation is not supported or invalid.","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public UnsupportedPathOperationException(String message) {","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/seedu/address/model/profbook/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Address {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" /*","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" * @param address A valid address.","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" public Address(String address) {","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(address);","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" value \u003d address;","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":65}},{"path":"src/main/java/seedu/address/model/profbook/ChildrenAndTaskListManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * A child element that is both Children and TaskList Manager.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public abstract class ChildrenAndTaskListManager\u003cT extends IChildElement\u003e implements IChildElement {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private ChildrenManager\u003cT\u003e childrenManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private TaskListManager taskListManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children and task list manager.","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public ChildrenAndTaskListManager() {","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" childrenManager \u003d new ChildrenManager\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" taskListManager \u003d new TaskListManager();","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children and tasklist manager with given children and tasklist.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public ChildrenAndTaskListManager(Map\u003cId, T\u003e children, TaskList taskList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" childrenManager \u003d new ChildrenManager\u003c\u003e(children);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" taskListManager \u003d new TaskListManager(taskList);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager\u003cT\u003e getChildrenManger() {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return childrenManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public TaskListManager getTaskListManager() {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" return taskListManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Children Manager \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * @param child - The child in question","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" childrenManager.addChild(id, child);","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" * @return The deleted Child","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.deleteChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" * @return true if the child is present","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.hasChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @return The specified Child","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getChild(id);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" * Returns Number of current children","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * @return The Number of current children","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.numOfChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" * @return list of all current children","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getAllChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public Map\u003cId, T\u003e getChildren() {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return childrenManager.getChildren();","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList Manager \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" * Adds a new tasks to the task list","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" * @param t","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" taskListManager.addTask(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @return The deleted class","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" public Task deleteTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.deleteTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" * @return The marked task","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" public Task markTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.markTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" * @return The un-marked task","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" public Task unmarkTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.unmarkTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" * @param query - The String to match","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e findTask(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.findTask(query);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" * @return The specified task","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" public Task getTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.getTask(index);","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" * Returns all current task","lastModifiedDate":"2023-10-16"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.getAllTask();","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" public boolean checkDuplicates(Task t) {","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" return taskListManager.checkDuplicates(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChildrenAndTaskListManager\u003c?\u003e)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e otherChildrenAndTaskListManager \u003d (ChildrenAndTaskListManager\u003c?\u003e) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" return this.childrenManager.equals(otherChildrenAndTaskListManager.childrenManager)","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.taskListManager.equals(otherChildrenAndTaskListManager.taskListManager);","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":204}},{"path":"src/main/java/seedu/address/model/profbook/ChildrenManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the logic of a ProfBookModel that contains children","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * As of v1.2 it is only root and group class","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e to represent the children type, as of v1.2 only student and group","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class ChildrenManager\u003cT extends IChildElement\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * Maps the id to the children","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" private final Map\u003cId, T\u003e children;","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Construct a children manager with given task list and children map.","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager(Map\u003cId, T\u003e children) {","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(children);","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" this.children \u003d children;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * Construct a new children manager.","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public ChildrenManager() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" T currChild \u003d this.children.get(id);","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" if (currChild !\u003d null) {","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" throw new DuplicateChildException(id.toString());","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.children.put(id, child);","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" T child \u003d this.getChild(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.children.remove(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return child;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * @return true if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-12"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" return this.children.containsKey(id);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" T child \u003d this.children.get(id);","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" if (child \u003d\u003d null) {","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" throw new NoSuchChildException(id.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return child;","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" return this.children.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" * @return list of all current children","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.children.values());","lastModifiedDate":"2023-09-29"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" for (Map.Entry\u003cId, T\u003e entry : this.children.entrySet()) {","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ret.append(entry.getKey().toString()).append(\": \").append(entry.getValue().toString()).append(\"\\n\");","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" return ret.toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" public Map\u003cId, T\u003e getChildren() {","lastModifiedDate":"2023-10-01"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" return new HashMap\u003c\u003e(this.children);","lastModifiedDate":"2023-10-01"},{"lineNumber":124,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof ChildrenManager\u003c?\u003e)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" ChildrenManager\u003c?\u003e otherChildrenManger \u003d (ChildrenManager\u003c?\u003e) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" return this.children.equals(otherChildrenManger.children);","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":26,"mingyuanc":114}},{"path":"src/main/java/seedu/address/model/profbook/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Email {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" + \"characters.\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" // alphanumeric and special characters","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @param email A valid email address.","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public Email(String email) {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(email);","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" value \u003d email;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":79}},{"path":"src/main/java/seedu/address/model/profbook/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.GroupCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for a group within a tutorial group","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class Group extends ChildrenAndTaskListManager\u003cStudent\u003e {","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Name of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" private final Name name;","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" * Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" private final Id id;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Group instance with all fields.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The task list associated with this group","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" * @param students - The list of students in this group","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * @param name - The group name","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public Group(TaskList taskList, Map\u003cId, Student\u003e students, Name name, Id id) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super(students, taskList);","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(name, id);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new Group instance without task list and student map.","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public Group(Name name, Id id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public Id getId() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return id;","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public Name getName() {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return name;","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public Group getClone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" return new Group(new TaskList(getAllTask()), this.getChildren(),","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" new Name(this.name.fullName), this.id);","lastModifiedDate":"2023-10-01"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return new GroupCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" .add(\"Group Id\", id)","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" .add(\"Students\", super.toString())","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherGroup)","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.name.equals(otherGroup.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.id.equals(otherGroup.id);","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":4,"NgChunMan":3,"NereusWB922":45,"mingyuanc":52}},{"path":"src/main/java/seedu/address/model/profbook/IChildElement.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" * Encapsulate required logic for child element of ProfBok Model","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public interface IChildElement extends Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" IChildElement getClone();","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":4,"mingyuanc":12}},{"path":"src/main/java/seedu/address/model/profbook/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Name {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" /*","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" public final String fullName;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" * @param name A valid name.","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" public Name(String name) {","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(name);","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" fullName \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" return fullName;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" return fullName.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":67}},{"path":"src/main/java/seedu/address/model/profbook/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Phone {","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" public final String value;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" public Phone(String phone) {","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" requireNonNull(phone);","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" value \u003d phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" return value;","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-09-29"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" return value.hashCode();","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":61}},{"path":"src/main/java/seedu/address/model/profbook/Root.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for the whole application data","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"public class Root extends ChildrenManager\u003cGroup\u003e {","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Constructs a profbook instance with task list and children.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The Task list associated with this object","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * @param children - The Groups under the root","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public Root(Map\u003cId, Group\u003e children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" super(children);","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new prof book instance.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public Root() {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", \"Root\")","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" .add(\"Students\", super.toString())","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Root)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" Root otherRoot \u003d (Root) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherRoot);","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":25,"mingyuanc":26}},{"path":"src/main/java/seedu/address/model/profbook/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.Set;","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.StudentCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for a student\u0027s data","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"public class Student extends TaskListManager implements IChildElement {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" // Identity field","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * Name of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" private final Name name;","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private final Email email;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" private final Phone phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" // Data fields","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" private final Address address;","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * Unique identifier of the student","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private final StudentId id;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Student instance with all fields.","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" * @param taskList - The task list associated with this student","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" * @param name - The group name","lastModifiedDate":"2023-09-29"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * @param email - The email of the student","lastModifiedDate":"2023-09-29"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" * @param phone - Student\u0027s Phone number","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * @param address - Students address","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the group","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public Student(TaskList taskList, Name name, Email email, Phone phone, Address address, StudentId id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" super(taskList);","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" this.name \u003d name;","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" this.email \u003d email;","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" this.address \u003d address;","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" this.id \u003d id;","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new Student without task list.","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public Student(Name name, Email email, Phone phone, Address address, StudentId id) {","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" super();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" this.email \u003d email;","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.phone \u003d phone;","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" this.address \u003d address;","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" public Name getName() {","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" return name;","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public StudentId getId() {","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" return id;","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" public Email getEmail() {","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" return email;","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" public Phone getPhone() {","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" return phone;","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" public Address getAddress() {","lastModifiedDate":"2023-09-30"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" return address;","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2023-09-30"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return tags;","lastModifiedDate":"2023-09-30"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" return new StudentCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" * Creates a clone of the current element, this is to achieve immutability","lastModifiedDate":"2023-10-01"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" * @return The clone of the IChildElement","lastModifiedDate":"2023-10-01"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public Student getClone() {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" return new Student(new TaskList(getAllTask()), new Name(this.name.fullName),","lastModifiedDate":"2023-10-14"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" new Email(this.email.value), new Phone(this.phone.value), new Address(this.address.value), this.id);","lastModifiedDate":"2023-10-01"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" .add(\"Student Id\", id)","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" .add(\"name\", name)","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" .add(\"email\", email)","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" .add(\"address\", address)","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":" .toString();","lastModifiedDate":"2023-09-29"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" return super.equals(otherStudent)","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.address.equals(otherStudent.address)","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.email.equals(otherStudent.email)","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.id.equals(otherStudent.id)","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.name.equals(otherStudent.name)","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.phone.equals(otherStudent.phone)","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.tags.equals(otherStudent.tags);","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":50,"mingyuanc":94}},{"path":"src/main/java/seedu/address/model/profbook/TaskListManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" * Encapsulate the logic of a prof book model, mainly the need for a task list","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * at every level","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"public class TaskListManager {","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" * Task list instance of this class","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Constructs a task list manager with task list given","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" public TaskListManager(TaskList taskList) {","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" requireAllNonNull(taskList);","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new task list manager","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public TaskListManager() {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * Check if index is between 0 and task list size.","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return index \u003e 0 \u0026\u0026 index \u003c\u003d taskList.size();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Return task list size.","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return taskList.size();","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" * Adds a new tasks to the task list","lastModifiedDate":"2023-09-29"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-09-29"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted class","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" public Task deleteTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.delete(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-09-29"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" * @return The marked task","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" public Task markTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.mark(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" * @return The un-marked task","lastModifiedDate":"2023-09-29"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public Task unmarkTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.mark(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-09-29"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" * @param query - The String to match","lastModifiedDate":"2023-09-29"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-09-29"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":" public List\u003cTask\u003e findTask(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-10-01"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.find(query);","lastModifiedDate":"2023-09-29"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-09-29"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" * @return The specified task","lastModifiedDate":"2023-09-29"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-29"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" public Task getTask(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" * Returns all current task","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" return this.taskList.getAllTask();","lastModifiedDate":"2023-09-29"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":128,"author":{"gitId":"Nid21cs"},"content":" public boolean checkDuplicates(Task t) {","lastModifiedDate":"2023-10-13"},{"lineNumber":129,"author":{"gitId":"Nid21cs"},"content":" return this.taskList.containsDuplicates(t);","lastModifiedDate":"2023-10-13"},{"lineNumber":130,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof TaskListManager)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" TaskListManager otherTaskListManager \u003d (TaskListManager) other;","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" return this.taskList.equals(otherTaskListManager.taskList);","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":42,"mingyuanc":98,"Nid21cs":6}},{"path":"src/main/java/seedu/address/model/profbook/exceptions/DuplicateChildException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook.exceptions;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals that the operation will result in duplicate Child (Children are considered duplicates if they have the same","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" * id).","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"public class DuplicateChildException extends RuntimeException {","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" public DuplicateChildException(String e) {","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" super(\"Operation would result in duplicate \" + e);","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"mingyuanc":11}},{"path":"src/main/java/seedu/address/model/profbook/exceptions/NoSuchChildException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.profbook.exceptions;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals when there is no such child present in current class","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"public class NoSuchChildException extends RuntimeException {","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" public NoSuchChildException(String e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" super(\"No such child found: \" + e);","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"mingyuanc":10}},{"path":"src/main/java/seedu/address/model/statemanager/ChildOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.ChildrenAndTaskListManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.ChildrenManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.TaskListManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the logic to perform a generic child operation for child manager","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e The type of child that is required","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"public class ChildOperation\u003cT extends IChildElement\u003e implements IChildOperation\u003cT\u003e {","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" private final ChildrenManager\u003cT\u003e baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" private final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" public ChildOperation(ChildrenManager\u003cT\u003e baseDir) {","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" this.baseDir \u003d baseDir;","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" public void addChild(Id id, T child) throws DuplicateChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addChild(id, child);","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" * @return true if child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" public boolean hasChild(Id id) {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.hasChild(id);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" public T deleteChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"deleting\" + id.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.deleteChild(id);","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public T getChild(Id id) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"getting\" + id.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getChild(id);","lastModifiedDate":"2023-10-01"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" * Updates the child with a new child of the same id","lastModifiedDate":"2023-10-01"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-01"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" * @param child - The new child to replace old child","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-01"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-01"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" public void updateChild(Id id, T child) throws NoSuchChildException {","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.deleteChild(id);","lastModifiedDate":"2023-10-01"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-01"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addChild(id, child);","lastModifiedDate":"2023-10-01"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" } catch (DuplicateChildException e) {","lastModifiedDate":"2023-10-01"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" this.logger.warning(\"In updateChild, unexpected duplicate error\");","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" throw new RuntimeException(\"ERROR: Code should not reach here\");","lastModifiedDate":"2023-10-01"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-01"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" * @return List of all current children","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" public List\u003cT\u003e getAllChildren() {","lastModifiedDate":"2023-10-15"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(\"getting all child\");","lastModifiedDate":"2023-10-15"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.baseDir.getAllChildren());","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" public int numOfChildren() {","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.numOfChildren();","lastModifiedDate":"2023-10-01"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" public void addTaskToAllChildren(Task task, int level) {","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" List\u003cIChildElement\u003e children \u003d new ArrayList\u003c\u003e(getAllChildren());","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" level--;","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" while (level \u003e 0) {","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" List\u003cIChildElement\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" for (IChildElement child : children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" if (child instanceof ChildrenAndTaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e ctlm \u003d (ChildrenAndTaskListManager\u003c?\u003e) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" list.addAll(ctlm.getAllChildren());","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" children \u003d new ArrayList\u003c\u003e(list);","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" level--;","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" addAllTaskToAllChildren(task, children);","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" private void addAllTaskToAllChildren(Task task, List\u003c? extends IChildElement\u003e children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" for (IChildElement child : children) {","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" Task clonedTask \u003d task.clone();","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" if (child instanceof TaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" TaskListManager tlm \u003d (TaskListManager) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" tlm.addTask(clonedTask);;","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" } else if (child instanceof ChildrenAndTaskListManager) {","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" ChildrenAndTaskListManager\u003c?\u003e ctlm \u003d (ChildrenAndTaskListManager\u003c?\u003e) child;","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" ctlm.addTask(clonedTask);","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(\"All children must be task list manager.\");","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"mingyuanc"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"mingyuanc"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"mingyuanc"},"content":" ChildOperation\u003c?\u003e that \u003d (ChildOperation\u003c?\u003e) o;","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"mingyuanc"},"content":" return Objects.equals(baseDir, that.baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"mingyuanc"},"content":" return Objects.hash(baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":39,"mingyuanc":134}},{"path":"src/main/java/seedu/address/model/statemanager/IChildOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":" * Interface for classes that operations that involve children, ensures that all","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":" * basic functions are present to interact","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" * with ChildManager instance.","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" * @param \u003cT\u003e Type of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"public interface IChildOperation\u003cT extends IChildElement\u003e {","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" * Adds the child to list of children","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" * @param child - The child in question","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" * @throws DuplicateChildException If attempting to add child with the same ID","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":" void addChild(Id id, T child) throws DuplicateChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" * Checks if the child is present","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" boolean hasChild(Id id);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" * Deletes the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted Child","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" T deleteChild(Id id) throws NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" * Returns the child specified by the id","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * @return The specified Child","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" T getChild(Id id) throws NoSuchChildException;","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" * Updates the child with a new child of the same id","lastModifiedDate":"2023-10-01"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" * @param id - Unique identifier of the child","lastModifiedDate":"2023-10-01"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" * @param child - The new child to replace old child","lastModifiedDate":"2023-10-01"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchChildException If there is no such Child found","lastModifiedDate":"2023-10-01"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" void updateChild(Id id, T child) throws NoSuchChildException;","lastModifiedDate":"2023-10-01"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" * Returns a list of all current children","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" * @return list of all current children","lastModifiedDate":"2023-10-15"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" List\u003cT\u003e getAllChildren();","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Adds a task to children within the hierarchy up to a specified depth level.","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" * e.g. if target is root and level is 2, task will be added to all student","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public void addTaskToAllChildren(Task task, int level);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * Returns Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @return The Number of current children","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" int numOfChildren();","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"zannloo":1,"NereusWB922":7,"mingyuanc":74}},{"path":"src/main/java/seedu/address/model/statemanager/ITaskOperations.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" * Interface for classes that operations that involve a task list, ensures that all basic functions are present to","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" * interact with TaskListManager instance","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"public interface ITaskOperations {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Checks if current task is present","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":" boolean hasTask(Task t);","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Check if index is between 0 and task list size.","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" boolean isValidIndex(int index);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Return the size of the task list.","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" int getTaskListSize();","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Adds a new tasks to the task list.","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Task must not be duplicated class.","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" * @param t","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" void addTask(Task t);","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" * Deletes the task at the specified index","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" * @return The deleted class","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" Task deleteTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as completed","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" * @return The marked task","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" Task markTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" * Marks the task at the specified index as not completed","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" * @return The un-marked task","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" Task unmarkTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" * Finds all matching task, compares by the task\u0027s description","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" * @param query - The String to match","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all matching Tasks","lastModifiedDate":"2023-09-30"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" List\u003cTask\u003e findTask(String query) throws NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":72,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" * Returns the task at the specified index","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" * @param index - The index of the targeted class","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" * @return The specified task","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" * @throws NoSuchTaskException if no task can be found by the index","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" Task getTask(int index) throws NoSuchTaskException;","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" * Returns all current task","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" * @return A list of all Tasks","lastModifiedDate":"2023-09-30"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" List\u003cTask\u003e getAllTasks() throws NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":12,"mingyuanc":74,"Nid21cs":3}},{"path":"src/main/java/seedu/address/model/statemanager/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * The API of the State component.","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public interface State {","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings();","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath();","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ProfBook State \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Return current directory.","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getCurrPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-20"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * Return current display path.","lastModifiedDate":"2023-10-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getDisplayPath();","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * Return true if display panel is showing task list.","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" public boolean isShowTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Return true if current path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInCurrentPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" * Return true if current path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInCurrentPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Returns true if group in given path exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be path with group information.","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * i.e. Group directory or Student Directory.","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public boolean hasGroup(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" * Returns true if student exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be student path.","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public boolean hasStudent(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" * Returns true if given path exists in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public boolean hasPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" * Change directory to destination path","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must exist in ProfBook and is not student path.","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" public void changeDirectory(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Display Panel Settings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * Return the current list shown on display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" * Update list with latest data according to","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" * current display path and display content.","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public void updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Set the path to be shown on display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must exist in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void setDisplayPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" * Return true if current display path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInDisplayPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" * Return true if current display path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInDisplayPath();","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" * Displays a children list on the display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" * This method should be called after checking that the current display path contains children list","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" * by using the {@link hasChildrenListInDisplayPath} method.","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" public void showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" * Displays a task list on the display panel.","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" * This method should be called after checking that the current display path contains task list","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" * by using the {@link hasTaskListInDisplayPath} method.","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" public void showTaskList();","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d State Management Operation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * Creates a ChildOperation class that performs operation on root.","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cGroup\u003e rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" * Creates a ChildOperation that performs operation on the specified group.","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be a directory with group information and exist in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cStudent\u003e groupChildOperation(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" * Creates a TaskOperation that performs task operation on the specified task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be a directory with task list and exist in the ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" public TaskOperation taskOperation(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Helper Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" * Return true if given path has task list.","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" * Return true if given path has children list.","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInPath(AbsolutePath path);","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":150,"mingyuanc":1}},{"path":"src/main/java/seedu/address/model/statemanager/StateManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2023-09-30"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.IChildElement;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Represents the in-memory model of the ProfBook data.","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"public class StateManager implements State {","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(State.class);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_INTERNAL_ERROR \u003d \"Internal error: %1$s\";","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" private final Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" private final ObservableList\u003cDisplayable\u003e displayList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" private boolean showTaskList \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath displayPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Construct a state manager with curren path, root (ProfBook) and userPrefs.","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public StateManager(AbsolutePath currentPath, Root root, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" requireAllNonNull(currentPath, root, userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" this.currentPath \u003d currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" this.displayPath \u003d currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d root;","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" return userPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ProfBook State \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getCurrPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return this.currentPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-20"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" public AbsolutePath getDisplayPath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" return this.displayPath;","lastModifiedDate":"2023-10-20"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public boolean isShowTaskList() {","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return this.showTaskList;","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInCurrentPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" return hasTaskListInPath(currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInCurrentPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" return hasChildrenListInPath(currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" public boolean hasGroup(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!path.isRootDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"path must have group information\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" return root.hasChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public boolean hasStudent(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"path must be student path\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" if (!hasGroup(path)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d getGroupFromPath(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" return grp.hasChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" public boolean hasPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":" if (path.isRootDirectory()) {","lastModifiedDate":"2023-10-15"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" if (path.isGroupDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" return root.hasChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d getGroupFromPath(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" return grp.hasChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" public void changeDirectory(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Student path is not navigable\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" currentPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" displayPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" logger.fine(\"Change directory to \" + currentPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" showChildrenList();","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Display Panel Settings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" public ObservableList\u003cDisplayable\u003e getDisplayList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return displayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" public void updateList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" List\u003c? extends Displayable\u003e temp;","lastModifiedDate":"2023-10-16"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" if (showTaskList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d taskOperation(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" temp \u003d new ArrayList\u003c\u003e(taskOperation.getAllTasks());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":" } else {","lastModifiedDate":"2023-10-15"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003c? extends IChildElement\u003e childOperation \u003d null;","lastModifiedDate":"2023-10-16"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" if (displayPath.isRootDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" childOperation \u003d rootChildOperation();","lastModifiedDate":"2023-10-16"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" childOperation \u003d groupChildOperation(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" temp \u003d new ArrayList\u003c\u003e(childOperation.getAllChildren());","lastModifiedDate":"2023-10-16"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" displayList.clear();","lastModifiedDate":"2023-10-16"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" displayList.setAll(temp);","lastModifiedDate":"2023-10-16"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" public void setDisplayPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" displayPath \u003d path;","lastModifiedDate":"2023-10-16"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInDisplayPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" return hasTaskListInPath(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInDisplayPath() {","lastModifiedDate":"2023-10-16"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" return hasChildrenListInPath(displayPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" public void showChildrenList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasChildrenListInDisplayPath(),","lastModifiedDate":"2023-10-16"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Current display path must have children list\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" showTaskList \u003d false;","lastModifiedDate":"2023-10-16"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" public void showTaskList() {","lastModifiedDate":"2023-10-16"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasTaskListInDisplayPath(),","lastModifiedDate":"2023-10-16"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Current display path must have task list: \" + displayPath));","lastModifiedDate":"2023-10-16"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" showTaskList \u003d true;","lastModifiedDate":"2023-10-16"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":" updateList();","lastModifiedDate":"2023-10-16"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d State Management Operation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cGroup\u003e rootChildOperation() {","lastModifiedDate":"2023-10-16"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" return new ChildOperation\u003c\u003e(root);","lastModifiedDate":"2023-10-16"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" public ChildOperation\u003cStudent\u003e groupChildOperation(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isGroupDirectory() || path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have group information\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasGroup(path),","lastModifiedDate":"2023-10-17"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Group must exist in ProfBook\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":237,"author":{"gitId":"NereusWB922"},"content":" return new ChildOperation\u003c\u003e(getGroupFromPath(path).getChildrenManger());","lastModifiedDate":"2023-10-16"},{"lineNumber":238,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":239,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":240,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":241,"author":{"gitId":"NereusWB922"},"content":" public TaskOperation taskOperation(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":243,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasTaskListInPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":244,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have task list\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":245,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasPath(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":246,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":248,"author":{"gitId":"NereusWB922"},"content":" if (path.isGroupDirectory()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":249,"author":{"gitId":"NereusWB922"},"content":" return new TaskOperation(getGroupFromPath(path).getTaskListManager());","lastModifiedDate":"2023-10-16"},{"lineNumber":250,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":251,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":252,"author":{"gitId":"NereusWB922"},"content":" return new TaskOperation(getStudentFromPath(path));","lastModifiedDate":"2023-10-16"},{"lineNumber":253,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":254,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":255,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Helper Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":256,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":257,"author":{"gitId":"NereusWB922"},"content":" public boolean hasTaskListInPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":258,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":259,"author":{"gitId":"NereusWB922"},"content":" return path.isGroupDirectory() || path.isStudentDirectory();","lastModifiedDate":"2023-10-16"},{"lineNumber":260,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":261,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":262,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":263,"author":{"gitId":"NereusWB922"},"content":" public boolean hasChildrenListInPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":264,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":265,"author":{"gitId":"NereusWB922"},"content":" return path.isRootDirectory() || path.isGroupDirectory();","lastModifiedDate":"2023-10-16"},{"lineNumber":266,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":267,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":268,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":269,"author":{"gitId":"NereusWB922"},"content":" * Return the group of the given path.","lastModifiedDate":"2023-10-16"},{"lineNumber":270,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must has a valid group info","lastModifiedDate":"2023-10-16"},{"lineNumber":271,"author":{"gitId":"NereusWB922"},"content":" * i.e group exists in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":272,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":273,"author":{"gitId":"NereusWB922"},"content":" private Group getGroupFromPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":274,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":275,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isGroupDirectory() || path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":276,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must have group info\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":277,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasGroup(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":278,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Group must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":279,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":280,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":281,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":282,"author":{"gitId":"NereusWB922"},"content":" return root.getChild(grpId);","lastModifiedDate":"2023-10-16"},{"lineNumber":283,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":284,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":285,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":286,"author":{"gitId":"NereusWB922"},"content":" * Return the group of the given path.","lastModifiedDate":"2023-10-16"},{"lineNumber":287,"author":{"gitId":"NereusWB922"},"content":" * {@code path} must be student path that exists in ProfBook.","lastModifiedDate":"2023-10-16"},{"lineNumber":288,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":289,"author":{"gitId":"NereusWB922"},"content":" private Student getStudentFromPath(AbsolutePath path) {","lastModifiedDate":"2023-10-16"},{"lineNumber":290,"author":{"gitId":"NereusWB922"},"content":" requireNonNull(path);","lastModifiedDate":"2023-10-16"},{"lineNumber":291,"author":{"gitId":"NereusWB922"},"content":" checkArgument(path.isStudentDirectory(),","lastModifiedDate":"2023-10-16"},{"lineNumber":292,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Path must be student directory\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":293,"author":{"gitId":"NereusWB922"},"content":" checkArgument(hasStudent(path),","lastModifiedDate":"2023-10-16"},{"lineNumber":294,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INTERNAL_ERROR, \"Student must exist in ProfBook\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":295,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":296,"author":{"gitId":"NereusWB922"},"content":" GroupId grpId \u003d path.getGroupId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":297,"author":{"gitId":"NereusWB922"},"content":" StudentId stuId \u003d path.getStudentId().get();","lastModifiedDate":"2023-10-16"},{"lineNumber":298,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":299,"author":{"gitId":"NereusWB922"},"content":" return root.getChild(grpId).getChild(stuId);","lastModifiedDate":"2023-10-16"},{"lineNumber":300,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":301,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":302,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":303,"author":{"gitId":"NereusWB922"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-10-16"},{"lineNumber":304,"author":{"gitId":"NereusWB922"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-10-16"},{"lineNumber":305,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":306,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":307,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":308,"author":{"gitId":"NereusWB922"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-10-16"},{"lineNumber":309,"author":{"gitId":"NereusWB922"},"content":" if (!(other instanceof StateManager)) {","lastModifiedDate":"2023-10-16"},{"lineNumber":310,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":311,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":312,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":313,"author":{"gitId":"NereusWB922"},"content":" StateManager otherStateManager \u003d (StateManager) other;","lastModifiedDate":"2023-10-16"},{"lineNumber":314,"author":{"gitId":"NereusWB922"},"content":" return this.showTaskList \u003d\u003d otherStateManager.showTaskList","lastModifiedDate":"2023-10-16"},{"lineNumber":315,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.currentPath.equals(otherStateManager.currentPath)","lastModifiedDate":"2023-10-16"},{"lineNumber":316,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.displayList.equals(otherStateManager.displayList)","lastModifiedDate":"2023-10-16"},{"lineNumber":317,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.displayPath.equals(otherStateManager.displayPath)","lastModifiedDate":"2023-10-16"},{"lineNumber":318,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.root.equals(otherStateManager.root)","lastModifiedDate":"2023-10-16"},{"lineNumber":319,"author":{"gitId":"NereusWB922"},"content":" \u0026\u0026 this.userPrefs.equals(otherStateManager.userPrefs);","lastModifiedDate":"2023-10-16"},{"lineNumber":320,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":321,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":322,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":323,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-21"},{"lineNumber":324,"author":{"gitId":"NereusWB922"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2023-10-21"},{"lineNumber":325,"author":{"gitId":"NereusWB922"},"content":" .add(\"showTaskList\", showTaskList)","lastModifiedDate":"2023-10-21"},{"lineNumber":326,"author":{"gitId":"NereusWB922"},"content":" .add(\"Current Path\", currentPath)","lastModifiedDate":"2023-10-21"},{"lineNumber":327,"author":{"gitId":"NereusWB922"},"content":" .add(\"Display List\", displayList)","lastModifiedDate":"2023-10-21"},{"lineNumber":328,"author":{"gitId":"NereusWB922"},"content":" .add(\"Display Path\", displayPath)","lastModifiedDate":"2023-10-21"},{"lineNumber":329,"author":{"gitId":"NereusWB922"},"content":" .add(\"root\", root)","lastModifiedDate":"2023-10-21"},{"lineNumber":330,"author":{"gitId":"NereusWB922"},"content":" .add(\"userPrefs\", userPrefs)","lastModifiedDate":"2023-10-21"},{"lineNumber":331,"author":{"gitId":"NereusWB922"},"content":" .toString();","lastModifiedDate":"2023-10-21"},{"lineNumber":332,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":333,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":334,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":300,"mingyuanc":34}},{"path":"src/main/java/seedu/address/model/statemanager/TaskOperation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.statemanager;","lastModifiedDate":"2023-10-15"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import java.util.Objects;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-10-15"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.TaskListManager;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates the required logic for task operation","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"public class TaskOperation implements ITaskOperations {","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_DUPLICATE_TASK \u003d \"Task must not exist in task list.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final String MESSAGE_TASK_NOT_FOUND \u003d \"Task not found in task list.\";","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":" private final TaskListManager baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" private final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":" public TaskOperation(TaskListManager baseDir) {","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":" this.baseDir \u003d baseDir;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":" void stateLogger(String log) {","lastModifiedDate":"2023-10-15"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":" this.logger.info(log);","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":" void stateErrorLogger(String errMsg) {","lastModifiedDate":"2023-10-15"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":" this.logger.severe(errMsg);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return this.baseDir.getTaskListSize();","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" public boolean hasTask(Task t) {","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.checkDuplicates(t);","lastModifiedDate":"2023-10-15"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return this.baseDir.isValidIndex(index);","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-10-15"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" checkArgument(!hasTask(task), MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" this.baseDir.addTask(task);","lastModifiedDate":"2023-10-15"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"Adding\" + task.toString());","lastModifiedDate":"2023-10-15"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"deleting \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.deleteTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public Task markTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"marking \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.markTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" public Task unmarkTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"un marking \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.unmarkTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e findTask(String query) {","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"finding \" + query);","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.findTask(query);","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" checkArgument(isValidIndex(index), MESSAGE_TASK_NOT_FOUND);","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"getting \" + index);","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getTask(index);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-10-15"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" this.stateLogger(\"getting all \");","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.getAllTask();","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" public String toString() {","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" return this.baseDir.toString();","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" return true;","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" return false;","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" TaskOperation that \u003d (TaskOperation) o;","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" return Objects.equals(baseDir, that.baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" @Override","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" public int hashCode() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" return Objects.hash(baseDir);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-15"}],"authorContributionMap":{"NereusWB922":24,"mingyuanc":94}},{"path":"src/main/java/seedu/address/model/taskmanager/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.DeadlineCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * The Deadline class represents a deadline task for the ProfBook.","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * It extends the Task class and provides additional methods specific to deadline tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private static final DateTimeFormatter OUTPUT_DATETIME_FORMATTER \u003d","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" DateTimeFormatter.ofPattern(\"EEEE, MMMM d, yyyy h:mm a\");","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" private LocalDateTime dueBy;","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Deadline object with the given description and deadline.","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Deadline task","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" * @param deadline LocalDateTime object that stores the date of the deadline for the task","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" this.dueBy \u003d deadline;","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" assert this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" assert !this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public String getDeadline() {","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return this.dueBy.format(OUTPUT_DATETIME_FORMATTER);","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public Deadline clone() {","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" return new Deadline(description, dueBy);","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" return new DeadlineCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" return \"[D][\" + getStatusIcon() + \"] \" + this.description + \"(by: \" + this.dueBy + \")\";","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * Checks if this Deadline is equal to another Deadline object.","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" * Two tasks are equal if they have the same description, isDone and dueBy status and time.","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this task against.","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a Task equivalent to this task, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" Deadline deadline \u003d (Deadline) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":85,"author":{"gitId":"Nid21cs"},"content":" return dueBy.equals(deadline.dueBy) \u0026\u0026 isDone.equals(deadline.isDone)","lastModifiedDate":"2023-10-13"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" \u0026\u0026 description.equals(deadline.description);","lastModifiedDate":"2023-10-13"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"zannloo":2,"NereusWB922":22,"Nid21cs":65}},{"path":"src/main/java/seedu/address/model/taskmanager/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.Displayable;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic for Tasks in TaskList","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The Task class represents a single task for the addressbook.","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It is an abstract class that provides a common interface for different types of tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public abstract class Task implements Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" protected String description;","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * @param s The description of the task.","lastModifiedDate":"2023-10-01"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public Task(String s) {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.description \u003d s;","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public abstract void mark();","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" public abstract void unmark();","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public String getDesc() {","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" return description;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" return isDone;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public abstract Task clone();","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"zannloo":1,"NereusWB922":14,"mingyuanc":5,"Nid21cs":22}},{"path":"src/main/java/seedu/address/model/taskmanager/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.List;","lastModifiedDate":"2023-10-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":" * Encapsulates logic of a TaskList","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"public class TaskList {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":" private final List\u003cTask\u003e taskList;","lastModifiedDate":"2023-10-01"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * Constructs a {@code TaskList}.","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" * @param taskList A valid task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":" public TaskList(List\u003cTask\u003e taskList) {","lastModifiedDate":"2023-10-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" int initialSize \u003d this.taskList.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" taskList.add(t);","lastModifiedDate":"2023-09-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" assert this.taskList.size() \u003d\u003d initialSize + 1 : \"Task Deadline should be added to the list\";","lastModifiedDate":"2023-09-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * @return The deleted task.","lastModifiedDate":"2023-09-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" public Task delete(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" if (index - 1 \u003e this.taskList.size() || index \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" int initialSize \u003d this.taskList.size();","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" this.taskList.remove(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" assert this.taskList.size() \u003d\u003d initialSize - 1 : \"Task should be removed from the list\";","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" * @param taskNumber The number of the task to be marked.","lastModifiedDate":"2023-09-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" * @return The marked task.","lastModifiedDate":"2023-09-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" public Task mark(int taskNumber) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" if (taskNumber - 1 \u003e this.taskList.size() || taskNumber \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(taskNumber - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" task.mark();","lastModifiedDate":"2023-09-30"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * Unmarks a task.","lastModifiedDate":"2023-09-30"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" * @param taskNumber The number of the task to be unmarked.","lastModifiedDate":"2023-09-30"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" * @return The unmarked task.","lastModifiedDate":"2023-09-30"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level or taskNumber provided is too large.","lastModifiedDate":"2023-09-30"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" public Task unmark(int taskNumber) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" if (taskNumber - 1 \u003e this.taskList.size() || taskNumber \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(taskNumber - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" task.unmark();","lastModifiedDate":"2023-09-30"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" * Finds tasks that match the given query.","lastModifiedDate":"2023-09-30"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":" * @param query The query to match.","lastModifiedDate":"2023-09-30"},{"lineNumber":90,"author":{"gitId":"Nid21cs"},"content":" * @return A list of tasks that match the query.","lastModifiedDate":"2023-09-30"},{"lineNumber":91,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level.","lastModifiedDate":"2023-09-30"},{"lineNumber":92,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":93,"author":{"gitId":"Nid21cs"},"content":" public List\u003cTask\u003e find(String query) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":94,"author":{"gitId":"Nid21cs"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":95,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"There are 0 tasks at this level at the moment.\");","lastModifiedDate":"2023-09-30"},{"lineNumber":96,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"Nid21cs"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2023-09-30"},{"lineNumber":99,"author":{"gitId":"Nid21cs"},"content":" if (task.description.contains(query)) {","lastModifiedDate":"2023-09-30"},{"lineNumber":100,"author":{"gitId":"Nid21cs"},"content":" list.add(task);","lastModifiedDate":"2023-09-30"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":102,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":103,"author":{"gitId":"Nid21cs"},"content":" return list;","lastModifiedDate":"2023-09-30"},{"lineNumber":104,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":106,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":107,"author":{"gitId":"Nid21cs"},"content":" * Retrieves a task from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":108,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":109,"author":{"gitId":"Nid21cs"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-30"},{"lineNumber":110,"author":{"gitId":"Nid21cs"},"content":" * @return The retrieved task.","lastModifiedDate":"2023-09-30"},{"lineNumber":111,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If the index is out of bounds.","lastModifiedDate":"2023-09-30"},{"lineNumber":112,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":113,"author":{"gitId":"Nid21cs"},"content":" public Task get(int index) throws NoSuchTaskException {","lastModifiedDate":"2023-09-30"},{"lineNumber":114,"author":{"gitId":"Nid21cs"},"content":" if (index - 1 \u003e this.taskList.size() || index \u003c 0) {","lastModifiedDate":"2023-09-30"},{"lineNumber":115,"author":{"gitId":"Nid21cs"},"content":" throw new NoSuchTaskException(\"Please input an index between 1 and\" + this.taskList.size());","lastModifiedDate":"2023-09-30"},{"lineNumber":116,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":117,"author":{"gitId":"Nid21cs"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-09-30"},{"lineNumber":118,"author":{"gitId":"Nid21cs"},"content":" return task;","lastModifiedDate":"2023-09-30"},{"lineNumber":119,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":121,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":122,"author":{"gitId":"Nid21cs"},"content":" * Retrieves all tasks from the task list.","lastModifiedDate":"2023-09-30"},{"lineNumber":123,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-09-30"},{"lineNumber":124,"author":{"gitId":"Nid21cs"},"content":" * @return A list of all tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":125,"author":{"gitId":"Nid21cs"},"content":" * @throws NoSuchTaskException If there are no tasks at this level.","lastModifiedDate":"2023-09-30"},{"lineNumber":126,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public List\u003cTask\u003e getAllTask() {","lastModifiedDate":"2023-10-14"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" return new ArrayList\u003c\u003e(this.taskList);","lastModifiedDate":"2023-10-01"},{"lineNumber":129,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":131,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":132,"author":{"gitId":"Nid21cs"},"content":" * Checks if this TaskList is equal to another object.","lastModifiedDate":"2023-10-13"},{"lineNumber":133,"author":{"gitId":"Nid21cs"},"content":" * Two TaskLists are equal if their task lists are equal.","lastModifiedDate":"2023-10-13"},{"lineNumber":134,"author":{"gitId":"Nid21cs"},"content":" * The task lists are compared based on the equals method of the Task class.","lastModifiedDate":"2023-10-13"},{"lineNumber":135,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this TaskList against.","lastModifiedDate":"2023-10-13"},{"lineNumber":136,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a TaskList equivalent to this task list, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":137,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":138,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":139,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":140,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":141,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":142,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":143,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":144,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":145,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":146,"author":{"gitId":"Nid21cs"},"content":" TaskList taskList1 \u003d (TaskList) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":147,"author":{"gitId":"Nid21cs"},"content":" return this.taskList.equals(taskList1.taskList);","lastModifiedDate":"2023-10-13"},{"lineNumber":148,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":149,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":150,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":151,"author":{"gitId":"Nid21cs"},"content":" * Checks if the task list contains a duplicate of the specified task.","lastModifiedDate":"2023-10-13"},{"lineNumber":152,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-13"},{"lineNumber":153,"author":{"gitId":"Nid21cs"},"content":" * @param t the task to be checked for duplication in the task list","lastModifiedDate":"2023-10-13"},{"lineNumber":154,"author":{"gitId":"Nid21cs"},"content":" * @return true if a duplicate of the specified task is found in the task list, false otherwise","lastModifiedDate":"2023-10-13"},{"lineNumber":155,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":156,"author":{"gitId":"Nid21cs"},"content":" public boolean containsDuplicates(Task t) {","lastModifiedDate":"2023-10-13"},{"lineNumber":157,"author":{"gitId":"Nid21cs"},"content":" for (Task check : this.taskList) {","lastModifiedDate":"2023-10-13"},{"lineNumber":158,"author":{"gitId":"Nid21cs"},"content":" if (check.equals(t)) {","lastModifiedDate":"2023-10-13"},{"lineNumber":159,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":160,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":161,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":162,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":163,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":164,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":165,"author":{"gitId":"Nid21cs"},"content":" * Retrieves size of the current task list for testing purposes","lastModifiedDate":"2023-10-12"},{"lineNumber":166,"author":{"gitId":"Nid21cs"},"content":" *","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"Nid21cs"},"content":" * @return size of the task list.","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"Nid21cs"},"content":" public int size() {","lastModifiedDate":"2023-10-12"},{"lineNumber":170,"author":{"gitId":"Nid21cs"},"content":" return taskList.size();","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" return this.taskList.toString();","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":7,"mingyuanc":19,"Nid21cs":151}},{"path":"src/main/java/seedu/address/model/taskmanager/ToDo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.TodoCard;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.ui.UiPart;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * The ToDo class represents a deadline task for the ProfBook.","lastModifiedDate":"2023-09-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" * It extends the Task class and provides additional methods specific to ToDo tasks.","lastModifiedDate":"2023-09-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-09-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" public ToDo(String s) {","lastModifiedDate":"2023-09-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" super(s);","lastModifiedDate":"2023-09-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" assert this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-09-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" assert !this.isDone;","lastModifiedDate":"2023-09-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public ToDo clone() {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return new ToDo(description);","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" return new TodoCard(this, displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is added to a list.","lastModifiedDate":"2023-09-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is added","lastModifiedDate":"2023-09-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-09-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-09-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return \"[T]\" + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" * Checks if this ToDo is equal to another ToDo object.","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" * Two tasks are equal if they have the same description and isDone status.","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" * @param o The object to compare this task against.","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" * @return true if the given object represents a Task equivalent to this task, false otherwise.","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" return true;","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" return false;","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" ToDo task \u003d (ToDo) o;","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" return isDone.equals(task.isDone) \u0026\u0026 description.equals(task.description);","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-09-30"}],"authorContributionMap":{"NereusWB922":14,"Nid21cs":54}},{"path":"src/main/java/seedu/address/model/taskmanager/exceptions/NoSuchTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager.exceptions;","lastModifiedDate":"2023-09-30"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"/**","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":" * Signals when the index does not point to a specific task in the tasklist","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":" */","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class NoSuchTaskException extends RuntimeException {","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":" public NoSuchTaskException(String e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":" super(e);","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":1,"Nid21cs":1,"mingyuanc":8}},{"path":"src/main/java/seedu/address/model/util/SampleProfBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.util;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Sample ProfBook data.","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"public class SampleProfBook {","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public static Student[] getSampleStudents1() {","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" return new Student[] {","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Tejas\"), new Email(\"tejas@gmail.com\"), new Phone(\"67352798\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" new Address(\"170 Ghim Moh Road Ncss Centre\"), new StudentId(\"0001Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Jackie\"), new Email(\"jackie@gmail.com\"), new Phone(\"65341488\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" new Address(\"1 Park Road 03-K78 People\u0027s Park Complex\"), new StudentId(\"0002Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Raman\"), new Email(\"raman@gmail.com\"), new Phone(\"64755838\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" new Address(\"3Rd Floor, 80 Raffles Place, Uob Plaza 2\"), new StudentId(\"0003Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Yarn Meng\"), new Email(\"yarnmeng@gmail.com\"), new Phone(\"65467742\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" new Address(\"480 Lorong 6 Toa Payoh Atrium 4th Storey HDB Hub\"), new StudentId(\"0004Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Kiat Win\"), new Email(\"kiatwin@gmail.com\"), new Phone(\"62102572\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" new Address(\"4 Loyang Walk Loyang Industrial Estate\"), new StudentId(\"0005Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" };","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static Student[] getSampleStudents2() {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return new Student[] {","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Ming Yuan\"), new Email(\"mingyuan@gmail.com\"), new Phone(\"64380137\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Woodlands, Malaysia\"), new StudentId(\"0006Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Zann\"), new Email(\"zann@gmail.com\"), new Phone(\"62924352\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in bedok\"), new StudentId(\"0007Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Nereus\"), new Email(\"nereus@gmail.com\"), new Phone(\"63365480\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Muar, Johor, Malaysia\"), new StudentId(\"0008Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Gary\"), new Email(\"gary@gmail.com\"), new Phone(\"67792128\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in Malaysia\"), new StudentId(\"0009Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" new Student(new Name(\"Nidhish\"), new Email(\"nidhish@gmail.com\"), new Phone(\"63480398\"),","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" new Address(\"Somewhere in Sinagpore\"), new StudentId(\"0010Y\")),","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" };","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" tasks.add(new ToDo(\"Task \" + i));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" ToDo todo \u003d new ToDo(\"Task \" + i + 5);","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" todo.mark();","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" tasks.add(todo);","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" return tasks;","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public static Group getGroup1() {","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d new Group(new Name(\"Group One\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Student[] students \u003d getSampleStudents1();","lastModifiedDate":"2023-10-14"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" for (Student s : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" grp.addChild(s.getId(), s);","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" return grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" public static Group getGroup2() {","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" Group grp \u003d new Group(new Name(\"Best Group in CS2103T\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" Student[] students \u003d getSampleStudents2();","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" for (Student s : students) {","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" grp.addChild(s.getId(), s);","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e tasks \u003d getTasks();","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" grp.addTask(task);","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return grp;","lastModifiedDate":"2023-10-14"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" public static Root getRoot() {","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root();","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" Group grp1 \u003d getGroup1();","lastModifiedDate":"2023-10-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" Group grp2 \u003d getGroup2();","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" root.addChild(grp1.getId(), grp1);","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" root.addChild(grp2.getId(), grp2);","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return root;","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/seedu/address/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label currDirectory;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public CommandBox(CommandExecutor commandExecutor, String currPath) {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" setCurrDirectory(currPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Set current directory label","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" public void setCurrDirectory(String curr) {","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" this.currDirectory.setText(curr + \"/\u003e\");","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"NereusWB922":14,"-":82}},{"path":"src/main/java/seedu/address/ui/DeadlineCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.CheckBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class DeadlineCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"DeadlineCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public final Deadline deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private Label type;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private CheckBox checkBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private Label desc;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private Label by;","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public DeadlineCard(Deadline deadline, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" type.setText(\"Deadline\");","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" desc.setText(deadline.getDesc());","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" by.setText(deadline.getDeadline());","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" checkBox.setSelected(deadline.getStatus());","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" checkBox.setDisable(true);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" if (displayedIndex % 2 \u003d\u003d 0) {","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #534531;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #866937;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":49}},{"path":"src/main/java/seedu/address/ui/Displayable.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * Item that can be displayed on display panel","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public interface Displayable {","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Get card that can display on panel","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public UiPart\u003cRegion\u003e getDisplayCard(int displayedIndex);","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":13}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_NAME \u003d \"\u003c\u003c %1$s \u003e\u003e\";","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ID \u003d \"ID: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"GroupCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public final Group group;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private Label name;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.group \u003d group;","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" id.setText(String.format(DISPLAY_ID, group.getId().toString().toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" name.setText(String.format(DISPLAY_NAME, group.getName().fullName.toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":38}},{"path":"src/main/java/seedu/address/ui/ItemListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * Panel containing the list of children items.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class ItemListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"ItemListPanel.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ItemListPanel.class);","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private ListView\u003cDisplayable\u003e itemListView;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code ListPanel} with the given {@code ObservableList} and FXML file name.","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public ItemListPanel(ObservableList\u003cDisplayable\u003e itemList) {","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" logger.info(itemList.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" itemListView.setItems(itemList);","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" itemListView.setCellFactory(listView -\u003e new ItemListViewCell());","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * Custom {@code ListCell} that displays the graphics of an item using its Displayable methods.","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" class ItemListViewCell extends ListCell\u003cDisplayable\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" protected void updateItem(Displayable item, boolean empty) {","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" super.updateItem(item, empty);","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (empty || item \u003d\u003d null) {","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" setGraphic(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" setText(null);","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" setGraphic(item.getDisplayCard(getIndex() + 1).getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandResult;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" private ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private ItemListPanel itemListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" private CommandBox commandBox;","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" private StackPane itemListPanelPlaceholder;","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public MainWindow(Stage primaryStage, ProfBookLogicManager logic) {","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" itemListPanel \u003d new ItemListPanel(logic.getDisplayList());","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" itemListPanelPlaceholder.getChildren().add(itemListPanel.getRoot());","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" commandBox \u003d new CommandBox(this::executeCommand, logic.getCurrPath());","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" public ItemListPanel getItemListPanel() {","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" return itemListPanel;","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" commandBox.setCurrDirectory(logic.getCurrPath());","lastModifiedDate":"2023-10-16"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NereusWB922":15,"-":184}},{"path":"src/main/java/seedu/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private static final Image icon \u003d new Image(MainApp.class.getResourceAsStream(\"/images/folder.png\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private ImageView storeIcon;","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" storeIcon.setImage(icon);","lastModifiedDate":"2023-10-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NereusWB922":7,"-":28}},{"path":"src/main/java/seedu/address/ui/StudentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Comparator;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class StudentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_NAME \u003d \"%1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ID \u003d \"ID: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_PHONE \u003d \"Phone: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_ADDRESS \u003d \"Address: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static final String DISPLAY_EMAIL \u003d \"Email: %1$s\";","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"StudentCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public final Student student;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private Label name;","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" private Label id;","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private Label phone;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" private Label address;","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private Label email;","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" private FlowPane tags;","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public StudentCard(Student student, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" this.student \u003d student;","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" id.setText(String.format(DISPLAY_ID, student.getId().toString().toUpperCase()));","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" name.setText(String.format(DISPLAY_NAME, student.getName().fullName));","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" phone.setText(String.format(DISPLAY_PHONE, student.getPhone().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" address.setText(String.format(DISPLAY_ADDRESS, student.getAddress().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" email.setText(String.format(DISPLAY_EMAIL, student.getEmail().value));","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" student.getTags().stream()","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/main/java/seedu/address/ui/TodoCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.ui;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.CheckBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class TodoCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private static final String FXML \u003d \"TodoCard.fxml\";","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public final ToDo todo;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private HBox cardPane;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private CheckBox checkBox;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private Label type;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private Label index;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" @FXML","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private Label desc;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public TodoCard(ToDo todo, int displayedIndex) {","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" super(FXML);","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.todo \u003d todo;","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" index.setText(displayedIndex + \". \");","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" type.setText(\"Todo\");","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" desc.setText(todo.getDesc());","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" checkBox.setSelected(todo.getStatus());","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" checkBox.setDisable(true);","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if (displayedIndex % 2 \u003d\u003d 0) {","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #534531;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" cardPane.setStyle(\"-fx-background-color: #866937;\");","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":46}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.ProfBookLogicManager;","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private static final String ICON_APPLICATION \u003d \"/images/profbook_icon.png\";","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private ProfBookLogicManager logic;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public UiManager(ProfBookLogicManager logic) {","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NereusWB922":4,"-":84}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"0.0\" prefWidth\u003d\"200.0\" StackPane.alignment\u003d\"TOP_CENTER\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"currDirectory\" alignment\u003d\"BOTTOM_LEFT\" text\u003d\"~/grp-001\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" alignment\u003d\"BOTTOM_LEFT\" onAction\u003d\"#handleCommandEntered\" prefHeight\u003d\"0.0\" prefWidth\u003d\"148.0\" promptText\u003d\"Enter command here...\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"NereusWB922":9,"-":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 5px 2px ;","lastModifiedDate":"2023-10-15"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.3), 10, 0, 0, 3);","lastModifiedDate":"2023-10-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled:even #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #3a3153;","lastModifiedDate":"2023-10-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":".list-cell:filled:odd #cardPane {","lastModifiedDate":"2023-10-15"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #463086;","lastModifiedDate":"2023-10-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #04535b;","lastModifiedDate":"2023-10-15"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" -fx-border-color: #ffffff;","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2023-10-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 10px;","lastModifiedDate":"2023-10-15"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: derive(#0af5aa, 30%);","lastModifiedDate":"2023-10-15"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-15"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"#saveLocationStatus {","lastModifiedDate":"2023-10-15"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" -fx-spacing: 20px;","lastModifiedDate":"2023-10-15"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-15"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill:#010504;","lastModifiedDate":"2023-10-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2023-10-16"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"NereusWB922"},"content":"#currDirectory {","lastModifiedDate":"2023-10-16"},{"lineNumber":329,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: rgb(0, 255, 81);","lastModifiedDate":"2023-10-17"},{"lineNumber":330,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-16"},{"lineNumber":331,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":332,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":333,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":334,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"NereusWB922"},"content":" -fx-font-family: \"Monospaced\";","lastModifiedDate":"2023-10-16"},{"lineNumber":347,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2023-10-16"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":351,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":360,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":371,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":372,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":373,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":374,"author":{"gitId":"NereusWB922"},"content":"#type {","lastModifiedDate":"2023-10-16"},{"lineNumber":375,"author":{"gitId":"NereusWB922"},"content":" -fx-hgap: 7;","lastModifiedDate":"2023-10-16"},{"lineNumber":376,"author":{"gitId":"NereusWB922"},"content":" -fx-vgap: 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":377,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":378,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":379,"author":{"gitId":"NereusWB922"},"content":"#type {","lastModifiedDate":"2023-10-16"},{"lineNumber":380,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":381,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":382,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":383,"author":{"gitId":"NereusWB922"},"content":".todo {","lastModifiedDate":"2023-10-16"},{"lineNumber":384,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-16"},{"lineNumber":385,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":386,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #ebbd51;","lastModifiedDate":"2023-10-16"},{"lineNumber":387,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":388,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":389,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":390,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12;","lastModifiedDate":"2023-10-16"},{"lineNumber":391,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"},{"lineNumber":392,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":393,"author":{"gitId":"NereusWB922"},"content":".deadline {","lastModifiedDate":"2023-10-16"},{"lineNumber":394,"author":{"gitId":"NereusWB922"},"content":" -fx-text-fill: white;","lastModifiedDate":"2023-10-16"},{"lineNumber":395,"author":{"gitId":"NereusWB922"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2023-10-16"},{"lineNumber":396,"author":{"gitId":"NereusWB922"},"content":" -fx-background-color: #358047;","lastModifiedDate":"2023-10-16"},{"lineNumber":397,"author":{"gitId":"NereusWB922"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2023-10-16"},{"lineNumber":398,"author":{"gitId":"NereusWB922"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":399,"author":{"gitId":"NereusWB922"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2023-10-16"},{"lineNumber":400,"author":{"gitId":"NereusWB922"},"content":" -fx-font-size: 12;","lastModifiedDate":"2023-10-16"},{"lineNumber":401,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":74,"-":327}},{"path":"src/main/resources/view/DeadlineCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.CheckBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"desc\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"by\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$by\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"5.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"type\" styleClass\u003d\"deadline\" text\u003d\"\\$type\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"15.00\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cCheckBox fx:id\u003d\"checkBox\" alignment\u003d\"CENTER_RIGHT\" mnemonicParsing\u003d\"false\" prefHeight\u003d\"18.0\" prefWidth\u003d\"17.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cFont size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003c/CheckBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":63}},{"path":"src/main/resources/view/GroupCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"children\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\" text\u003d\"1.\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":44}},{"path":"src/main/resources/view/ItemListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" \u003cListView fx:id\u003d\"itemListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"ProfBook\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cImage url\u003d\"@/images/profbook_icon.png\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" alignment\u003d\"BOTTOM_LEFT\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox fx:id\u003d\"itemList\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003cStackPane fx:id\u003d\"itemListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"NereusWB922":10,"-":48}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" prefHeight\u003d\"20.0\" prefWidth\u003d\"200.0\" style\u003d\"-fx-spacing: 5;\"\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" text\u003d\"\\$storedestination\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cImageView fx:id\u003d\"storeIcon\" fitHeight\u003d\"26.0\" fitWidth\u003d\"26.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"NereusWB922":17,"-":10}},{"path":"src/main/resources/view/StudentCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"children_cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" prefHeight\u003d\"134.0\" prefWidth\u003d\"150.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\" /\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"3.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/main/resources/view/TodoCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.CheckBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" styleClass\u003d\"todo_cardPane\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"index\" styleClass\u003d\"cell_big_label\" text\u003d\"1.\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"desc\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cLabel fx:id\u003d\"type\" styleClass\u003d\"todo\" text\u003d\"\\$type\"\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets left\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" \u003cHBox alignment\u003d\"CENTER_RIGHT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" \u003cCheckBox fx:id\u003d\"checkBox\" alignment\u003d\"CENTER\" contentDisplay\u003d\"CENTER\" mnemonicParsing\u003d\"false\" prefHeight\u003d\"18.0\" prefWidth\u003d\"0.0\"\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" \u003cFont size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" \u003c/CheckBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" assertNotNull(AppUtil.getImage(\"/images/profbook_icon.png\"));","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"NereusWB922":1,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"zannloo":2,"-":203}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + OPTION_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + OPTION_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" \"; // empty string not allowed for addresses","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + OPTION_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"NereusWB922":22,"-":108}},{"path":"src/test/java/seedu/address/logic/newcommands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DATETIME;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ID;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.newcommandparser.ParserUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"public class CommandTestUtil {","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2023-10-13"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2023-10-13"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_DATETIME_STR \u003d \"2023-09-22 11:30\";","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_TASK_DESC \u003d \"Assignment 1: Software Engineer Project\";","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ID_STUDENT \u003d \"0011Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ID_GROUP \u003d \"grp-123\";","lastModifiedDate":"2023-10-13"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" public static final String VALID_CATEGORY_STUDENT \u003d \" --all allStu\";","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" public static final String VALID_CATEGORY_GROUP \u003d \" -all allGrp\";","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_ROOT_DIR_PREAMBLE \u003d \"~/\";","lastModifiedDate":"2023-10-13"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_GROUP_DIR_PREAMBLE \u003d \"/grp-123\";","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" public static final String VALID_STUDENT_DIR_PREAMBLE \u003d \"/grp-123/0011Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + OPTION_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + OPTION_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + OPTION_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + OPTION_ADDRESS + \" \" + VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-13"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-13"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + OPTION_TAG + \" \" + VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-13"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" public static final String DATETIME_DESC \u003d \" \" + OPTION_DATETIME + \" \" + VALID_DATETIME_STR;","lastModifiedDate":"2023-10-13"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" public static final String ID_DESC_STUDENT \u003d \" \" + OPTION_ID + \" \" + VALID_ID_STUDENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public static final String ID_DESC_GROUP \u003d \" \" + OPTION_ID + \" \" + VALID_ID_GROUP;","lastModifiedDate":"2023-10-13"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public static final String TASK_DESC_DESC \u003d \" \" + OPTION_DESC + \" \" + VALID_TASK_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_NAME_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" + OPTION_NAME + \" \" + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2023-10-13"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + OPTION_PHONE + \" \" + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2023-10-13"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + OPTION_EMAIL + \" \" + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2023-10-13"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \"","lastModifiedDate":"2023-10-13"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" + OPTION_ADDRESS + \" \"; // empty string not allowed for addresses","lastModifiedDate":"2023-10-13"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + OPTION_TAG + \" \" + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2023-10-13"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validRootRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validGroupRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" private static RelativePath validStudentRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validRootAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validGroupAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" private static AbsolutePath validStudentAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" private static LocalDateTime validDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" static {","lastModifiedDate":"2023-10-13"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" validRootRelativePath \u003d ParserUtil.parseRelativePath(VALID_ROOT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" validGroupRelativePath \u003d ParserUtil.parseRelativePath(VALID_GROUP_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" validStudentRelativePath \u003d ParserUtil.parseRelativePath(VALID_STUDENT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" validRootAbsolutePath \u003d new AbsolutePath(VALID_ROOT_DIR_PREAMBLE);","lastModifiedDate":"2023-10-20"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" validGroupAbsolutePath \u003d validRootAbsolutePath.resolve(validGroupRelativePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" validStudentAbsolutePath \u003d validRootAbsolutePath.resolve(validStudentRelativePath);","lastModifiedDate":"2023-10-20"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" validDateTime \u003d ParserUtil.parseDateTime(VALID_DATETIME_STR);","lastModifiedDate":"2023-10-13"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException | InvalidPathException e) {","lastModifiedDate":"2023-10-20"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(e.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidRootRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return validRootRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidGroupRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" return validGroupRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" public static RelativePath getValidStudentRelativePath() {","lastModifiedDate":"2023-10-13"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" return validStudentRelativePath;","lastModifiedDate":"2023-10-13"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidRootAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" return validRootAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidGroupAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" return validGroupAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" public static AbsolutePath getValidStudentAbsolutePath() {","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" return validStudentAbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public static LocalDateTime getValidDateTime() {","lastModifiedDate":"2023-10-13"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" return validDateTime;","lastModifiedDate":"2023-10-13"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * - the {@code actualState} matches {@code expectedState}","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandSuccess(Command command, State actualState, CommandResult expectedCommandResult,","lastModifiedDate":"2023-10-21"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" State expectedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-21"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" CommandResult result \u003d command.execute(actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedState, actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2023-10-21"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2023-10-21"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, State, CommandResult, State)}","lastModifiedDate":"2023-10-21"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2023-10-21"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandSuccess(Command command, State actualState, String expectedMessage,","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" State expectedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2023-10-21"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" assertCommandSuccess(command, actualState, expectedCommandResult, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-21"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" * - the {@code actualState} remain unchanged","lastModifiedDate":"2023-10-21"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-21"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" public static void assertCommandFailure(Command command, State actualState,","lastModifiedDate":"2023-10-21"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" String expectedMessage, State unchangedState) {","lastModifiedDate":"2023-10-21"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(actualState), expectedMessage);","lastModifiedDate":"2023-10-21"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" assertEquals(unchangedState, actualState);","lastModifiedDate":"2023-10-21"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"zannloo":2,"NereusWB922":157}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateDeadlineCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS_ALL_GROUPS;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateDeadlineCommand.MESSAGE_SUCCESS_ALL_STUDENTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.RelativePath;","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-06"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-15"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-15"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":"class CreateDeadlineCommandTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForStudentAccepted_addSuccessful() throws InvalidPathException,","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" UnsupportedPathOperationException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" Student calissa \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" .withName(\"Calissa\")","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" .withEmail(\"callissa@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0012Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" studentMap.put(calissa.getId(), calissa);","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", duedate);","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" assertFalse(calissa.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d new RelativePath(\"0012Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" TaskOperation target \u003d state.taskOperation(absolutePath);","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" new CommandResult(String.format(MESSAGE_SUCCESS, deadline));","lastModifiedDate":"2023-10-22"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" assertTrue(target.hasTask(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" assertTrue(calissa.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllStudentsInGroupAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-15"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-15"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-15"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-15"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-15"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-15"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" studentMap.put(alice.getId(), alice);","lastModifiedDate":"2023-10-15"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" studentMap.put(bob.getId(), bob);","lastModifiedDate":"2023-10-15"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-003\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-003\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-03-03T00:00\");","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" assertFalse(alice.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" assertFalse(bob.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" RelativePath path \u003d new RelativePath(\"grp-003\");","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline, \"allStu\");","lastModifiedDate":"2023-10-20"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" assertTrue(alice.checkDuplicates(deadline));","lastModifiedDate":"2023-10-15"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" assertTrue(bob.checkDuplicates(deadline));","lastModifiedDate":"2023-10-15"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-15"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllGroupsInRootAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list1 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list2 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" TaskList taskList1 \u003d new TaskList(list1);","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" TaskList taskList2 \u003d new TaskList(list2);","lastModifiedDate":"2023-10-16"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" Group grp1 \u003d new Group(taskList1, studentMap, new Name(\"Amazing\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" Group grp2 \u003d new Group(taskList2, studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp1);","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-002\"), grp2);","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", duedate);","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"zannloo"},"content":" RelativePath path \u003d new RelativePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":150,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"zannloo"},"content":" assertFalse(grp1.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"zannloo"},"content":" assertFalse(grp2.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":153,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(absolutePath, deadline, \"allGrp\");","lastModifiedDate":"2023-10-20"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":157,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":158,"author":{"gitId":"zannloo"},"content":" assertTrue(grp1.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":159,"author":{"gitId":"zannloo"},"content":" assertTrue(grp2.checkDuplicates(deadline));","lastModifiedDate":"2023-10-16"},{"lineNumber":160,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":161,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":164,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":166,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"zannloo"},"content":" public void execute_duplicateDeadline_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":171,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":172,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" RelativePath path \u003d new RelativePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d currPath.resolve(path);","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":181,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" CreateDeadlineCommand createDeadlineCommand \u003d new CreateDeadlineCommand(absolutePath, deadline);","lastModifiedDate":"2023-10-20"},{"lineNumber":183,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand.MESSAGE_DUPLICATE_DEADLINE_TASK, (","lastModifiedDate":"2023-10-12"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e createDeadlineCommand.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":189,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":190,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":191,"author":{"gitId":"zannloo"},"content":" void equals_sameInstanceForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":193,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":194,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-06"},{"lineNumber":195,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":196,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":197,"author":{"gitId":"zannloo"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2023-10-06"},{"lineNumber":198,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":199,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":200,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":201,"author":{"gitId":"zannloo"},"content":" void equals_sameInstanceForGroupDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":203,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":204,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-11"},{"lineNumber":205,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":206,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":207,"author":{"gitId":"zannloo"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2023-10-11"},{"lineNumber":208,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":209,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":210,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":211,"author":{"gitId":"zannloo"},"content":" void equals_sameCommandForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":213,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":214,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":215,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":216,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":218,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":219,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":220,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":221,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":222,"author":{"gitId":"zannloo"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-06"},{"lineNumber":223,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":224,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":225,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":226,"author":{"gitId":"zannloo"},"content":" void equals_sameCommandForGroupDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":228,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":229,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-11"},{"lineNumber":230,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":231,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":233,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-11"},{"lineNumber":234,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-11"},{"lineNumber":235,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":236,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":237,"author":{"gitId":"zannloo"},"content":" assertTrue(command1.equals(command2));","lastModifiedDate":"2023-10-11"},{"lineNumber":238,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":239,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":240,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":241,"author":{"gitId":"zannloo"},"content":" void equals_differentDescriptionForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":243,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":244,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":245,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":246,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":248,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":249,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 2\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":250,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":251,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":252,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":253,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":254,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":255,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-07"},{"lineNumber":256,"author":{"gitId":"zannloo"},"content":" void equals_differentPathForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":257,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":258,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-07"},{"lineNumber":259,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-07"},{"lineNumber":260,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":261,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":262,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":263,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-07"},{"lineNumber":264,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-07"},{"lineNumber":265,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":266,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":267,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":268,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":269,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":270,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":271,"author":{"gitId":"zannloo"},"content":" void equals_differentDueDateForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":272,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":273,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":274,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":275,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":276,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":277,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":278,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":279,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 1\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":280,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":281,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":282,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":283,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":284,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":285,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":286,"author":{"gitId":"zannloo"},"content":" void equals_differentFieldsForStudentDirectory_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":287,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":288,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate1 \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":289,"author":{"gitId":"zannloo"},"content":" Deadline deadline1 \u003d new Deadline(\"Assignment 1\", duedate1);","lastModifiedDate":"2023-10-06"},{"lineNumber":290,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command1 \u003d new CreateDeadlineCommand(path1, deadline1);","lastModifiedDate":"2023-10-11"},{"lineNumber":291,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":292,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":293,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate2 \u003d LocalDateTime.parse(\"2023-12-03T23:59\");","lastModifiedDate":"2023-10-06"},{"lineNumber":294,"author":{"gitId":"zannloo"},"content":" Deadline deadline2 \u003d new Deadline(\"Assignment 2\", duedate2);","lastModifiedDate":"2023-10-06"},{"lineNumber":295,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command2 \u003d new CreateDeadlineCommand(path2, deadline2);","lastModifiedDate":"2023-10-11"},{"lineNumber":296,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":297,"author":{"gitId":"zannloo"},"content":" assertFalse(command1.equals(command2));","lastModifiedDate":"2023-10-07"},{"lineNumber":298,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":299,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":300,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-06"},{"lineNumber":301,"author":{"gitId":"zannloo"},"content":" void toString_sameStringForStudentDirectory_success() throws InvalidPathException {","lastModifiedDate":"2023-10-11"},{"lineNumber":302,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":303,"author":{"gitId":"zannloo"},"content":" LocalDateTime duedate \u003d LocalDateTime.parse(\"2023-12-03T23:58\");","lastModifiedDate":"2023-10-06"},{"lineNumber":304,"author":{"gitId":"zannloo"},"content":" Deadline deadline \u003d new Deadline(\"Assignment 1\", duedate);","lastModifiedDate":"2023-10-06"},{"lineNumber":305,"author":{"gitId":"zannloo"},"content":" CreateDeadlineCommand command \u003d new CreateDeadlineCommand(path, deadline);","lastModifiedDate":"2023-10-11"},{"lineNumber":306,"author":{"gitId":"zannloo"},"content":" String expected \u003d \"seedu.address.logic.newcommands.CreateDeadlineCommand{\"","lastModifiedDate":"2023-10-12"},{"lineNumber":307,"author":{"gitId":"NereusWB922"},"content":" + \"toCreateDeadline\u003d\"","lastModifiedDate":"2023-10-21"},{"lineNumber":308,"author":{"gitId":"zannloo"},"content":" + \"[D][ ] Assignment 1(by: 2023-12-03T23:58)}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":309,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":310,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2023-10-06"},{"lineNumber":311,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":312,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":313,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":269,"NereusWB922":43,"mingyuanc":1}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateGroupCommand.MESSAGE_DUPLICATE_GROUP;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateGroupCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"public class CreateGroupCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndGroup_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateGroupCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" public void execute_createGroup_success() throws CommandException, InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" CommandResult successCommandResult \u003d new CommandResult(String.format(MESSAGE_SUCCESS, group));","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" assertEquals(successCommandResult, createGroupCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void execute_duplicateGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class, MESSAGE_DUPLICATE_GROUP, () -\u003e createGroupCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" public void equals_sameInstance_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" Name name \u003d new Name(\"Group 1\");","lastModifiedDate":"2023-10-12"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" GroupId id \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-13"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" CreateGroupCommand duplicateCreateGroupCommand \u003d new CreateGroupCommand(target, group);","lastModifiedDate":"2023-10-20"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" assertEquals(createGroupCommand, duplicateCreateGroupCommand);","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // public void testOutputString() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" // TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" // Name name \u003d new Name(\"Group 1\");","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // GroupId id \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" // Group group \u003d new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativePath \u003d new RelativePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" // CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(relativePath, group);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" // String expected \u003d \"seedu.address.logic.newcommands.CreateGroupCommand\"","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // + \"{toCreateGroup\u003dseedu.address.model.profbook.Group{Group Id\u003dgrp-001, name\u003dGroup 1, Students\u003d}}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" // assertEquals(expected, createGroupCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":67,"NereusWB922":27}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-15"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":"class CreateStudentCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" private Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPersonNullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateStudentCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, (","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e new CreateStudentCommand(new AbsolutePath(\"~/grp-001/0001Y\"), null));","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateStudentCommand(null, validStudent));","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" void execute_studentAcceptedByGroup_success() throws Exception {","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-12"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" .withEmail(\"bobthebuilder@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-12"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-12"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-12"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, bob);","lastModifiedDate":"2023-10-12"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" CommandResult commandResult \u003d createStudentCommand.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(CreateStudentCommand.MESSAGE_SUCCESS, Messages.format(bob)),","lastModifiedDate":"2023-10-22"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-12"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-15"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" public void execute_duplicateStudent_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" Student duplicatedStudent \u003d new StudentBuilder()","lastModifiedDate":"2023-10-15"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" .withName(\"alice\")","lastModifiedDate":"2023-10-15"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" .withEmail(\"aliceinwonderland@example.com\")","lastModifiedDate":"2023-10-15"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-15"},{"lineNumber":84,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-15"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" .withTags(\"friends\")","lastModifiedDate":"2023-10-15"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-15"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" studentMap.put(duplicatedStudent.getId(), duplicatedStudent);","lastModifiedDate":"2023-10-15"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"ProfBook\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-15"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-12"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, validStudent);","lastModifiedDate":"2023-10-12"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-12"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand.MESSAGE_DUPLICATE_STUDENT, (","lastModifiedDate":"2023-10-12"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" ) -\u003e createStudentCommand.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-12"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" void testEquals() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-12"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-12"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-12"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-12"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-12"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-12"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-12"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-12"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-12"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-12"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createAliceCommand \u003d new CreateStudentCommand(path, alice);","lastModifiedDate":"2023-10-12"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createBobCommand \u003d new CreateStudentCommand(path, bob);","lastModifiedDate":"2023-10-12"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" assertTrue(createAliceCommand.equals(createAliceCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-12"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createAliceCommandCopy \u003d new CreateStudentCommand(path, alice);","lastModifiedDate":"2023-10-12"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":" assertTrue(createAliceCommand.equals(createAliceCommandCopy));","lastModifiedDate":"2023-10-12"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":130,"author":{"gitId":"zannloo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(1));","lastModifiedDate":"2023-10-12"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(null));","lastModifiedDate":"2023-10-12"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-12"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":" assertFalse(createAliceCommand.equals(createBobCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":140,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":141,"author":{"gitId":"zannloo"},"content":" void toString_sameString_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":143,"author":{"gitId":"zannloo"},"content":" CreateStudentCommand createStudentCommand \u003d new CreateStudentCommand(path, ALICE);","lastModifiedDate":"2023-10-12"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":" String expected \u003d CreateStudentCommand.class.getCanonicalName() + \"{toCreateStudent\u003d\" + ALICE + \"}\";","lastModifiedDate":"2023-10-12"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, createStudentCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":122,"NereusWB922":20,"mingyuanc":5}},{"path":"src/test/java/seedu/address/logic/newcommands/CreateTodoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS_ALL_GROUPS;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CreateTodoCommand.MESSAGE_SUCCESS_ALL_STUDENTS;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":"public class CreateTodoCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndTodo_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateTodoCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" public void execute_todoForAllStudentsInGroupAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" Student alice \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" .withName(\"Alice\")","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" Student bob \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withTaskList(new ArrayList\u003c\u003e()).build();","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" studentMap.put(alice.getId(), alice);","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" studentMap.put(bob.getId(), bob);","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new Group(new TaskList(null), studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-003\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-003\"), grp);","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" ToDo todo \u003d new ToDo(\"Assignment 1\");","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" assertFalse(alice.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" assertFalse(bob.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-003\");","lastModifiedDate":"2023-10-20"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" CreateTodoCommand command \u003d new CreateTodoCommand(path, todo, \"allStu\");","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" assertTrue(alice.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" assertTrue(bob.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_STUDENTS);","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" public void execute_deadlineForAllGroupsInRootAccepted_addSuccessful()","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list1 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e list2 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" TaskList taskList1 \u003d new TaskList(list1);","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" TaskList taskList2 \u003d new TaskList(list2);","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" Group grp1 \u003d new Group(taskList1, studentMap, new Name(\"Amazing\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" Group grp2 \u003d new Group(taskList2, studentMap, new Name(\"AmazingGroup\"), new GroupId(\"grp-002\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp1);","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-002\"), grp2);","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" ToDo todo \u003d new ToDo(\"Assignment 3\");","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~\");","lastModifiedDate":"2023-10-20"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" assertFalse(grp1.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" assertFalse(grp2.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" CreateTodoCommand command \u003d new CreateTodoCommand(path, todo, \"allGrp\");","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" CommandResult runCommand \u003d command.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" assertTrue(grp1.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" assertTrue(grp2.checkDuplicates(todo));","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" CommandResult returnStatement \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" new CommandResult(MESSAGE_SUCCESS_ALL_GROUPS);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" assertEquals(runCommand, returnStatement);","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" public void execute_createTodoTask_success() throws CommandException, InvalidPathException,","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" UnsupportedPathOperationException {","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo read book\");","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" CommandResult successCommandResult \u003d new CommandResult(String.format(MESSAGE_SUCCESS, target));","lastModifiedDate":"2023-10-20"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" assertEquals(successCommandResult, createTodoCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" public void execute_duplicateTodoTask_throwCommandException() throws InvalidPathException,","lastModifiedDate":"2023-10-16"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" UnsupportedPathOperationException {","lastModifiedDate":"2023-10-16"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo read book\");","lastModifiedDate":"2023-10-16"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" TaskOperation taskOperation \u003d state.taskOperation(target);","lastModifiedDate":"2023-10-20"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" taskOperation.addTask(todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-20"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" CreateTodoCommand.MESSAGE_DUPLICATE_TODO_TASK_STUDENT, () -\u003e createTodoCommand.execute(state));","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" public void equals_sameInstance_success() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo test\");","lastModifiedDate":"2023-10-12"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand duplicateCreateTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" assertTrue(createTodoCommand.equals(duplicateCreateTodoCommand));","lastModifiedDate":"2023-10-12"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" public void equals_differentTodoTask_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" ToDo todoTest1 \u003d new ToDo(\"Todo test1\");","lastModifiedDate":"2023-10-12"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" ToDo todoTest2 \u003d new ToDo(\"Todo test2\");","lastModifiedDate":"2023-10-12"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand1 \u003d new CreateTodoCommand(target, todoTest1);","lastModifiedDate":"2023-10-20"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand2 \u003d new CreateTodoCommand(target, todoTest2);","lastModifiedDate":"2023-10-20"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" assertFalse(createTodoCommand1.equals(createTodoCommand2));","lastModifiedDate":"2023-10-12"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":" public void toString_validateOutputString_correctStringRepresentation() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" ToDo todo \u003d new ToDo(\"Todo test\");","lastModifiedDate":"2023-10-12"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath target \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" CreateTodoCommand createTodoCommand \u003d new CreateTodoCommand(target, todo);","lastModifiedDate":"2023-10-20"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" String expected \u003d \"seedu.address.logic.newcommands.CreateTodoCommand{toCreateTodo\u003d\"","lastModifiedDate":"2023-10-21"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" + \"[T][ ] Todo test}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" assertEquals(expected, createTodoCommand.toString());","lastModifiedDate":"2023-10-12"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":194,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":67,"zannloo":92,"NereusWB922":35}},{"path":"src/test/java/seedu/address/logic/newcommands/DeleteForStudentsAndGroupsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-14"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-14"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-14"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-14"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-14"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-14"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-14"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-14"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-22"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-14"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-14"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-14"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-14"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-14"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-14"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-14"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-14"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-14"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-14"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-14"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.GroupBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-14"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":"class DeleteForStudentsAndGroupsCommandTest {","lastModifiedDate":"2023-10-14"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public void constructor_nullPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-14"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteForStudentsAndGroupsCommand(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" void execute_deleteStudent_success() throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" groups.put(grp.getId(), grp);","lastModifiedDate":"2023-10-15"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" Student stu \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-15"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" StudentId studentId \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" assertTrue(grp.hasChild(studentId));","lastModifiedDate":"2023-10-15"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" CommandResult commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" assertFalse(root.hasChild(studentId));","lastModifiedDate":"2023-10-15"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(DeleteForStudentsAndGroupsCommand.MESSAGE_SUCCESS_FOR_STUDENT, Messages.format(stu)),","lastModifiedDate":"2023-10-22"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-14"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" void execute_deleteGroup_success() throws InvalidPathException, CommandException {","lastModifiedDate":"2023-10-14"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" CommandResult commandResult \u003d command.execute(state);","lastModifiedDate":"2023-10-14"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" GroupId groupId \u003d new GroupId(\"grp-001\");","lastModifiedDate":"2023-10-14"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" assertFalse(root.hasChild(groupId));","lastModifiedDate":"2023-10-14"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" assertEquals(String.format(DeleteForStudentsAndGroupsCommand.MESSAGE_SUCCESS_FOR_GROUP, Messages.format(grp)),","lastModifiedDate":"2023-10-22"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2023-10-14"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" public void execute_noSuchStudent_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_NO_SUCH_STUDENT_OR_GROUP, (","lastModifiedDate":"2023-10-14"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" public void execute_noSuchGroup_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-002/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_NO_SUCH_STUDENT_OR_GROUP, (","lastModifiedDate":"2023-10-14"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" public void execute_incorrectDirectory_throwsCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-14"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-14"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":" Group grp \u003d new GroupBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" groups.put(new GroupId(\"grp-001\"), grp);","lastModifiedDate":"2023-10-14"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":128,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":129,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"zannloo"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-14"},{"lineNumber":132,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand.MESSAGE_INCORRECT_DIRECTORY_ERROR, (","lastModifiedDate":"2023-10-14"},{"lineNumber":133,"author":{"gitId":"zannloo"},"content":" ) -\u003e command.execute(state)","lastModifiedDate":"2023-10-14"},{"lineNumber":134,"author":{"gitId":"zannloo"},"content":" );","lastModifiedDate":"2023-10-14"},{"lineNumber":135,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":136,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":137,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":138,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":139,"author":{"gitId":"zannloo"},"content":" void testEquals() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathGrp001 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathGrp002 \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathStu001 \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathStu002 \u003d new AbsolutePath(\"~/grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":145,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG001 \u003d new DeleteForStudentsAndGroupsCommand(pathGrp001);","lastModifiedDate":"2023-10-14"},{"lineNumber":146,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG002 \u003d new DeleteForStudentsAndGroupsCommand(pathGrp002);","lastModifiedDate":"2023-10-14"},{"lineNumber":147,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS001 \u003d new DeleteForStudentsAndGroupsCommand(pathStu001);","lastModifiedDate":"2023-10-14"},{"lineNumber":148,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS002 \u003d new DeleteForStudentsAndGroupsCommand(pathStu002);","lastModifiedDate":"2023-10-14"},{"lineNumber":149,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":150,"author":{"gitId":"zannloo"},"content":" // same object(Group) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":151,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteG001.equals(deleteG001));","lastModifiedDate":"2023-10-14"},{"lineNumber":152,"author":{"gitId":"zannloo"},"content":" // same object(Student) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":153,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteS001.equals(deleteS001));","lastModifiedDate":"2023-10-14"},{"lineNumber":154,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":155,"author":{"gitId":"zannloo"},"content":" // same values(Group) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":156,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteG001Copy \u003d new DeleteForStudentsAndGroupsCommand(pathGrp001);","lastModifiedDate":"2023-10-14"},{"lineNumber":157,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteG001.equals(deleteG001Copy));","lastModifiedDate":"2023-10-14"},{"lineNumber":158,"author":{"gitId":"zannloo"},"content":" // same values(Student) -\u003e returns true","lastModifiedDate":"2023-10-14"},{"lineNumber":159,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand deleteS001Copy \u003d new DeleteForStudentsAndGroupsCommand(pathStu001);","lastModifiedDate":"2023-10-14"},{"lineNumber":160,"author":{"gitId":"zannloo"},"content":" assertTrue(deleteS001.equals(deleteS001Copy));","lastModifiedDate":"2023-10-14"},{"lineNumber":161,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":162,"author":{"gitId":"zannloo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":163,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":164,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(1));","lastModifiedDate":"2023-10-14"},{"lineNumber":165,"author":{"gitId":"zannloo"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":166,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":167,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(null));","lastModifiedDate":"2023-10-14"},{"lineNumber":168,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":169,"author":{"gitId":"zannloo"},"content":" // different group -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":170,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(deleteG002));","lastModifiedDate":"2023-10-14"},{"lineNumber":171,"author":{"gitId":"zannloo"},"content":" // different student -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":172,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(deleteS002));","lastModifiedDate":"2023-10-14"},{"lineNumber":173,"author":{"gitId":"zannloo"},"content":" // different area to delete -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":174,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteG001.equals(deleteS001));","lastModifiedDate":"2023-10-14"},{"lineNumber":175,"author":{"gitId":"zannloo"},"content":" // different student -\u003e returns false","lastModifiedDate":"2023-10-14"},{"lineNumber":176,"author":{"gitId":"zannloo"},"content":" assertFalse(deleteS001.equals(deleteS002));","lastModifiedDate":"2023-10-14"},{"lineNumber":177,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":178,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-14"},{"lineNumber":179,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-14"},{"lineNumber":180,"author":{"gitId":"zannloo"},"content":" void toString_sameString_success() throws InvalidPathException {","lastModifiedDate":"2023-10-14"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":182,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommand command \u003d new DeleteForStudentsAndGroupsCommand(path);","lastModifiedDate":"2023-10-14"},{"lineNumber":183,"author":{"gitId":"zannloo"},"content":" String expected \u003d DeleteForStudentsAndGroupsCommand.class.getCanonicalName()","lastModifiedDate":"2023-10-14"},{"lineNumber":184,"author":{"gitId":"zannloo"},"content":" + \"{toDeleteStudentOrGroup\u003d\" + path + \"}\";","lastModifiedDate":"2023-10-14"},{"lineNumber":185,"author":{"gitId":"zannloo"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2023-10-14"},{"lineNumber":186,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-14"},{"lineNumber":187,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-14"}],"authorContributionMap":{"zannloo":165,"NereusWB922":22}},{"path":"src/test/java/seedu/address/logic/newcommands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.FIRST_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.SECOND_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.util.SampleProfBook;","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private State actualState;","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private State expectedState;","lastModifiedDate":"2023-10-21"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" private TaskOperation taskOperation;","lastModifiedDate":"2023-10-21"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" @BeforeEach","lastModifiedDate":"2023-10-21"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public void setup() throws InvalidPathException {","lastModifiedDate":"2023-10-21"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currentPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" Root root1 \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-21"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" Root root2 \u003d SampleProfBook.getRoot();","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" actualState \u003d new StateManager(currentPath, root1, new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" expectedState \u003d new StateManager(currentPath, root2, new UserPrefs());","lastModifiedDate":"2023-10-21"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" // Display task","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath displayPath \u003d new AbsolutePath(\"~/grp-002/\");","lastModifiedDate":"2023-10-21"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" actualState.setDisplayPath(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" actualState.showTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expectedState.setDisplayPath(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" expectedState.showTaskList();","lastModifiedDate":"2023-10-21"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" taskOperation \u003d expectedState.taskOperation(displayPath);","lastModifiedDate":"2023-10-21"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" Task taskToDelete \u003d taskOperation.getTask(FIRST_INDEX.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2023-10-21"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" taskToDelete.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" taskOperation.deleteTask(FIRST_INDEX.getOneBased());","lastModifiedDate":"2023-10-21"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" expectedState.updateList();","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" assertCommandSuccess(deleteCommand, actualState, expectedMessage, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(taskOperation.getTaskListSize() + 1);","lastModifiedDate":"2023-10-21"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" assertCommandFailure(deleteCommand, actualState,","lastModifiedDate":"2023-10-21"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX, expectedState);","lastModifiedDate":"2023-10-21"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" public void equals() {","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(SECOND_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" // same object -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2023-10-21"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" // same values -\u003e returns true","lastModifiedDate":"2023-10-21"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(FIRST_INDEX);","lastModifiedDate":"2023-10-21"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2023-10-21"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // different types -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2023-10-21"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" // null -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2023-10-21"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // different person -\u003e returns false","lastModifiedDate":"2023-10-21"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void toStringMethod() {","lastModifiedDate":"2023-10-21"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-21"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" DeleteTaskCommand deleteCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-10-21"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2023-10-21"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":102}},{"path":"src/test/java/seedu/address/logic/newcommands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditGroupDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.field.EditStudentDescriptor;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"public class EditCommandTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndEditGroupDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditCommand(null, (EditGroupDescriptor) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullRelativePathAndEditStudentDescriptor_throwsNullPointerException() {","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditCommand(null, (EditStudentDescriptor) null));","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" public void equals_differentRelativePath_fail() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path1 \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path2 \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" EditCommand firstEditCommand \u003d new EditCommand(path1, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" EditCommand secondEditCommand \u003d new EditCommand(path2, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" assertFalse(firstEditCommand.equals(secondEditCommand));","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" public void toString_validateOutputString_correctStringRepresentation() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" EditGroupDescriptor editGroupDescriptor \u003d new EditGroupDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" EditCommand firstEditCommand \u003d new EditCommand(path, editGroupDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" String expected \u003d \"seedu.address.logic.newcommands.EditCommand{toEdit\u003dseedu.address.model\"","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" + \".field.EditGroupDescriptor{name\u003dnull, id\u003dnull}}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" assertEquals(expected, firstEditCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" public void execute_noSuchGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-20"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" EditCommand editCommand \u003d new EditCommand(path, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, EditCommand.MESSAGE_NO_SUCH_PATH, () -\u003e editCommand.execute(state));","lastModifiedDate":"2023-10-20"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" public void execute_invalidDirectory_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" EditCommand editCommand \u003d new EditCommand(path, editStudentDescriptor);","lastModifiedDate":"2023-10-20"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" EditCommand.MESSAGE_INCORRECT_DIRECTORY_ERROR, () -\u003e editCommand.execute(state));","lastModifiedDate":"2023-10-16"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":70,"NereusWB922":16}},{"path":"src/test/java/seedu/address/logic/newcommands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"public class HelpCommandTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public void execute_validCommand_success() throws CommandException, InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" HelpCommand helpCommand \u003d new HelpCommand();","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" CommandResult commandResult \u003d helpCommand.execute(state);","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" CommandResult expexctedCommandResult \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" new CommandResult(HelpCommand.SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" assertEquals(commandResult, expexctedCommandResult);","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NgChunMan":32,"NereusWB922":3}},{"path":"src/test/java/seedu/address/logic/newcommands/MoveStudentToGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"package seedu.address.logic.newcommands;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.logic.newcommands.exceptions.CommandException;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":"public class MoveStudentToGroupCommandTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public static final String ERROR_MESSAGE_INCORRECT_DIRECTORY \u003d \"Directory is invalid\";","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" public void constructor_nullSourcePathAndDestinationPath_throwsNullPointerException() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" assertThrows(NullPointerException.class, () -\u003e new MoveStudentToGroupCommand(null, null));","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" public void execute_invalidPathForSourceGroup_throwCommandException() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Group\u003e children \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" Root root \u003d new Root(children);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" Map\u003cId, Student\u003e students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" Group group \u003d new Group(new TaskList(new ArrayList\u003c\u003e()), students, new Name(\"Group1\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" root.addChild(group.getId(), group);","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" AbsolutePath currPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath sourcePath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-20"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath destPath \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" State state \u003d new StateManager(currPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand moveStudentToGroupCommand \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" new MoveStudentToGroupCommand(sourcePath, destPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" assertThrows(CommandException.class, () -\u003e moveStudentToGroupCommand.execute(state));","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" public void equals() throws InvalidPathException {","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath sourcePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath destinationPath \u003d new AbsolutePath(\"~/grp-002\");","lastModifiedDate":"2023-10-20"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand command1 \u003d new MoveStudentToGroupCommand(sourcePath, destinationPath);","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" MoveStudentToGroupCommand command2 \u003d new MoveStudentToGroupCommand(sourcePath, destinationPath);","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" assertEquals(command1, command2);","lastModifiedDate":"2023-10-12"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" // @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" // public void testOutputString() throws InvalidPathException {","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativeSourcePath \u003d new RelativePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" // RelativePath relativeDestinationPath \u003d new RelativePath(\"~/grp-002\");","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" // MoveStudentToGroupCommand moveStudentToGroupCommand \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" // new MoveStudentToGroupCommand(relativeSourcePath, relativeDestinationPath);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" // String expected \u003d","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" // \"seedu.address.logic.newcommands.MoveStudentToGroupCommand{toMoveThisStudentToAnotherGroup\u003dnull}\";","lastModifiedDate":"2023-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" // assertEquals(expected, moveStudentToGroupCommand.toString());","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" // }","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NgChunMan":50,"NereusWB922":20}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME, OPTION_ADDRESS, OPTION_EMAIL, OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_NAME));","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_EMAIL));","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" // missing name option","lastModifiedDate":"2023-10-10"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" // missing phone option","lastModifiedDate":"2023-10-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" // missing email option","lastModifiedDate":"2023-10-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" // missing address option","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" // all options missing","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"NereusWB922":22,"-":174}},{"path":"src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private final Option unknownOption \u003d new Option(\"--unknown\");","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private final Option name \u003d new Option(\"--name\", \"-n\");","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" private final Option id \u003d new Option(\"--id\", \"-i\");","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private final Option address \u003d new Option(\"--address\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code option} match the {@code expectedValues}","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Option)}.","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Option option, String... expectedValues) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(option).get());","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(option).size());","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(option).get(i));","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Option option) {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" assertFalse(argMultimap.getValue(option).isPresent());","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" public void tokenize_noOptions_allTakenAsPreamble() {","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" // \u003c----long hand-----\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \" Some preamble string --name Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" --name Nereus Ng Wei Bin \";","lastModifiedDate":"2023-10-10"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" // \u003c----short hand-----\u003e","lastModifiedDate":"2023-10-10"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" // Preamble present","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" Some preamble string -n Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2023-10-10"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" // No preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \" -n Nereus Ng Wei Bin\";","lastModifiedDate":"2023-10-10"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"Nereus Ng Wei Bin\");","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString --id id-Value --name name-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \"Different Preamble String --id id-Value --name name-Value --address address-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2023-10-10"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"address-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" // All three arguments with mix of short hand","lastModifiedDate":"2023-10-10"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d \"Different Preamble String -i id-Value --name name-Value -a address-Value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"address-Value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" /* Also covers: testing for options not specified as a option */","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" // Options not previously given to the tokenizer should not return any values","lastModifiedDate":"2023-10-10"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" argsString \u003d unknownOption + \"some value\";","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, unknownOption);","lastModifiedDate":"2023-10-10"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown option is taken as part of preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString --id id-Value -a -a -i another id value --name name value --id\";","lastModifiedDate":"2023-10-10"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, name, \"name value\");","lastModifiedDate":"2023-10-10"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"id-Value\", \"another id value\", \"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, address, \"\", \"\");","lastModifiedDate":"2023-10-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" String argsString \u003d \"SomePreambleString--name name joined-ijoined -i not joined--addressjoined\";","lastModifiedDate":"2023-10-10"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, name, id, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString--name name joined-ijoined\");","lastModifiedDate":"2023-10-10"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, name);","lastModifiedDate":"2023-10-10"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" assertArgumentPresent(argMultimap, id, \"not joined--addressjoined\");","lastModifiedDate":"2023-10-10"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" assertArgumentAbsent(argMultimap, address);","lastModifiedDate":"2023-10-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" Option aaa \u003d new Option(\"--aaa\", \"-a\");","lastModifiedDate":"2023-10-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" assertEquals(aaa, new Option(\"--aaa\", \"-a\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, \"--aaa\");","lastModifiedDate":"2023-10-10"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, new Option(\"--aab\", \"-a\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" assertNotEquals(aaa, new Option(\"--aaa\", \"-b\"));","lastModifiedDate":"2023-10-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"NereusWB922":80,"-":96}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" private static final String TAG_EMPTY \u003d \" \" + OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" // invalid option being parsed as preamble","lastModifiedDate":"2023-10-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" // while parsing {@code OPTION_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE));","lastModifiedDate":"2023-10-10"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" Messages.getErrorMessageForDuplicateOptions(OPTION_PHONE, OPTION_EMAIL, OPTION_ADDRESS));","lastModifiedDate":"2023-10-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"NereusWB922":11,"-":197}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.Command;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-20"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath, Command expectedCommand) {","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" Command command \u003d parser.parse(userInput, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2023-10-13"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2023-10-13"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-10-13"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2023-10-20"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath currPath, String expectedMessage) {","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" parser.parse(userInput, currPath);","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"NereusWB922":41}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateDeadlineCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.DATETIME_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.TASK_DESC_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_CATEGORY_STUDENT;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_TASK_DESC;","lastModifiedDate":"2023-10-15"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateDeadlineCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"public class CreateDeadlineCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private CreateDeadlineCommandParser parser \u003d new CreateDeadlineCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" VALID_GROUP_DIR_PREAMBLE + TASK_DESC_DESC + DATETIME_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" new CreateDeadlineCommand(","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" new Deadline(VALID_TASK_DESC, CommandTestUtil.getValidDateTime())));","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresentWithCategory_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" VALID_GROUP_DIR_PREAMBLE + TASK_DESC_DESC + DATETIME_DESC + VALID_CATEGORY_STUDENT,","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" new CreateDeadlineCommand(","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" new Deadline(VALID_TASK_DESC, CommandTestUtil.getValidDateTime()), \"allStu\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":9,"NereusWB922":29}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ID_GROUP;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateGroupCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class CreateGroupCommandParserTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private CreateGroupCommandParser parser \u003d new CreateGroupCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-11"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" Group group \u003d new Group(new Name(VALID_NAME_AMY), new GroupId(VALID_ID_GROUP));","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" VALID_GROUP_DIR_PREAMBLE + NAME_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" new CreateGroupCommand(CommandTestUtil.getValidGroupAbsolutePath(), group));","lastModifiedDate":"2023-10-20"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":29}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-11"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_ID_STUDENT;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateStudentCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-13"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-13"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-13"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-13"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-13"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"public class CreateStudentCommandParserTest {","lastModifiedDate":"2023-10-11"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" private CreateStudentCommandParser parser \u003d new CreateStudentCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-11"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-11"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" Student expectedStu \u003d new Student(","lastModifiedDate":"2023-10-13"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" new TaskList(new ArrayList\u003c\u003e()),","lastModifiedDate":"2023-10-13"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" new Name(VALID_NAME_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" new Email(VALID_EMAIL_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" new Phone(VALID_PHONE_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" new Address(VALID_ADDRESS_AMY),","lastModifiedDate":"2023-10-13"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" new StudentId(VALID_ID_STUDENT));","lastModifiedDate":"2023-10-13"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + NAME_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2023-10-13"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" new CreateStudentCommand(CommandTestUtil.getValidStudentAbsolutePath(), expectedStu));","lastModifiedDate":"2023-10-20"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-11"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"NereusWB922":47}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/CreateTodoCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-13"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.TASK_DESC_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_CATEGORY_STUDENT;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_TASK_DESC;","lastModifiedDate":"2023-10-13"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CreateTodoCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.taskmanager.ToDo;","lastModifiedDate":"2023-10-13"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class CreateTodoCommandParserTest {","lastModifiedDate":"2023-10-13"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private CreateTodoCommandParser parser \u003d new CreateTodoCommandParser();","lastModifiedDate":"2023-10-13"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-13"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + TASK_DESC_DESC,","lastModifiedDate":"2023-10-13"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" new CreateTodoCommand(CommandTestUtil.getValidStudentAbsolutePath(), new ToDo(VALID_TASK_DESC)));","lastModifiedDate":"2023-10-20"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-13"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresentWithCatergory_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" VALID_STUDENT_DIR_PREAMBLE + TASK_DESC_DESC + VALID_CATEGORY_STUDENT,","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" new CreateTodoCommand(CommandTestUtil.getValidStudentAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" new ToDo(VALID_TASK_DESC), \"allStu\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-13"}],"authorContributionMap":{"zannloo":8,"NereusWB922":26}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/DeleteForStudentsAndGroupsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import seedu.address.logic.newcommands.DeleteForStudentsAndGroupsCommand;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"class DeleteForStudentsAndGroupsCommandParserTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":" DeleteForStudentsAndGroupsCommandParser parser \u003d new DeleteForStudentsAndGroupsCommandParser();","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":" CommandParserTestUtil.assertParseSuccess(parser,","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":" CommandTestUtil.getValidStudentRelativePath().toString(),","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" new DeleteForStudentsAndGroupsCommand(CommandTestUtil.getValidStudentAbsolutePath()));","lastModifiedDate":"2023-10-20"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"zannloo":15,"NereusWB922":2}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-21"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-10-21"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2023-10-21"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-21"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.testutil.TypicalIndexes.FIRST_INDEX;","lastModifiedDate":"2023-10-21"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-21"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-21"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.DeleteTaskCommand;","lastModifiedDate":"2023-10-21"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2023-10-21"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2023-10-21"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath absolutePath \u003d CommandTestUtil.getValidGroupAbsolutePath();","lastModifiedDate":"2023-10-21"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2023-10-21"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser, \"1\", absolutePath, new DeleteTaskCommand(FIRST_INDEX));","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-21"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-21"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2023-10-21"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" assertParseFailure(parser, \"a\", absolutePath,","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-10-21"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-21"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-21"}],"authorContributionMap":{"NereusWB922":28}},{"path":"src/test/java/seedu/address/logic/parser/newcommandparser/MoveStudentToGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.logic.parser.newcommandparser;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_GROUP_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.newcommands.CommandTestUtil.VALID_STUDENT_DIR_PREAMBLE;","lastModifiedDate":"2023-10-13"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.newcommandparser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2023-10-13"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.CommandTestUtil;","lastModifiedDate":"2023-10-13"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.logic.newcommands.MoveStudentToGroupCommand;","lastModifiedDate":"2023-10-13"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class MoveStudentToGroupCommandParserTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" private MoveStudentToGroupCommandParser parser \u003d new MoveStudentToGroupCommandParser();","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-10-13"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" VALID_STUDENT_DIR_PREAMBLE + \" \" + VALID_GROUP_DIR_PREAMBLE,","lastModifiedDate":"2023-10-13"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidRootAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" new MoveStudentToGroupCommand(","lastModifiedDate":"2023-10-13"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidStudentAbsolutePath(),","lastModifiedDate":"2023-10-20"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" CommandTestUtil.getValidGroupAbsolutePath()));","lastModifiedDate":"2023-10-20"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"NereusWB922":24}},{"path":"src/test/java/seedu/address/model/path/AbsolutePathTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package seedu.address.model.path;","lastModifiedDate":"2023-09-29"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-29"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-29"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-29"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-29"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-29"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.Optional;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-09-29"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-29"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-29"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-09-29"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2023-09-29"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-09-29"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-09-29"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.id.exceptions.InvalidIdException;","lastModifiedDate":"2023-09-29"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-09-29"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.path.exceptions.UnsupportedPathOperationException;","lastModifiedDate":"2023-09-29"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"public class AbsolutePathTest {","lastModifiedDate":"2023-09-29"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2023-09-29"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath studentPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" private AbsolutePath groupPath;","lastModifiedDate":"2023-09-29"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Constructor \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public void constructor_pathNotStartedFromRoot_throwInvalidPathException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e {","lastModifiedDate":"2023-09-29"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" new AbsolutePath(\"grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" });","lastModifiedDate":"2023-09-29"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" public void constructor_validPath_returnValidPath() {","lastModifiedDate":"2023-09-29"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0001Y\", path.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" fail(\"Expected no InvalidPathException, but got one.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" public void constructor_pathWithValidNavigation_returnValidPath() {","lastModifiedDate":"2023-09-29"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath path \u003d new AbsolutePath(\"~/grp-001/../grp-002/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" logger.info(path.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0001Y\", path.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" fail(\"Expected no InvalidPathException, but got one.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public void constructor_invalidPathStructure_throwInvalidPathException() {","lastModifiedDate":"2023-09-29"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e {","lastModifiedDate":"2023-09-29"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" new AbsolutePath(\"~/grp-001/../0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" });","lastModifiedDate":"2023-09-29"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public void constructor_equivalentPaths_shouldBeEqual() {","lastModifiedDate":"2023-09-29"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathWithDot \u003d null;","lastModifiedDate":"2023-09-29"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath pathWithoutDot \u003d null;","lastModifiedDate":"2023-09-29"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" pathWithDot \u003d new AbsolutePath(\"~/grp-001/./0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" pathWithoutDot \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" fail(\"Unexpected InvalidPathException\");","lastModifiedDate":"2023-09-29"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertEquals(pathWithDot.toString(), pathWithoutDot.toString());","lastModifiedDate":"2023-09-29"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Resolve Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativeStudentPathWithoutNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-10-10"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativeGroupPathWithoutNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-10-10"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-10"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"grp-002\");","lastModifiedDate":"2023-10-10"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002\", resolvedPath.toString());","lastModifiedDate":"2023-10-10"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithOneValidNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-09-29"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-09-29"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-001/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithTwoValidNavigation_returnNewAbsolutePath()","lastModifiedDate":"2023-09-29"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../../grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-09-29"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0002Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathStartWithRoot()","lastModifiedDate":"2023-10-10"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-10-10"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"~/grp-002/0003Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath resolvedPath \u003d absolutePath.resolve(relativePath);","lastModifiedDate":"2023-10-10"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"~/grp-002/0003Y\", resolvedPath.toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithInvalidOneNavigation_throwsInvalidPathException()","lastModifiedDate":"2023-09-29"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../grp-002/0002Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e absolutePath.resolve(relativePath));","lastModifiedDate":"2023-09-29"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" public void resolve_relativePathWithInvalidNavigationAboveRoot_throwsInvalidPathException()","lastModifiedDate":"2023-09-29"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" throws InvalidPathException {","lastModifiedDate":"2023-09-29"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" AbsolutePath absolutePath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" RelativePath relativePath \u003d new RelativePath(\"../../../grp-002\");","lastModifiedDate":"2023-09-29"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" assertThrows(InvalidPathException.class, () -\u003e absolutePath.resolve(relativePath));","lastModifiedDate":"2023-09-29"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Check Directory Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" @BeforeEach","lastModifiedDate":"2023-09-29"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" public void setUp() {","lastModifiedDate":"2023-09-29"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-29"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-09-29"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" studentPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" groupPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-09-29"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-09-29"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" fail(\"Unexpected Exception.\");","lastModifiedDate":"2023-09-29"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_rootPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" assertTrue(rootPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_studentPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" assertFalse(studentPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" public void isRootDirectory_groupPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.isRootDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_studentPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" assertTrue(studentPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_groupPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" public void isStudentDirectory_rootPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.isStudentDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_groupPath_returnsTrue() {","lastModifiedDate":"2023-09-29"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_studentPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" assertFalse(studentPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" public void isGroupDirectory_rootPath_returnsFalse() {","lastModifiedDate":"2023-09-29"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.isGroupDirectory());","lastModifiedDate":"2023-09-29"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Get ID Method \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-29"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_studentPath_returnsValidStudentId()","lastModifiedDate":"2023-09-29"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cStudentId\u003e studentId \u003d studentPath.getStudentId();","lastModifiedDate":"2023-10-11"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" assertTrue(studentId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"0001Y\", studentId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_studentPath_returnsValidStudentId()","lastModifiedDate":"2023-09-29"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupId \u003d studentPath.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"GRP-001\", groupId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_groupPath_returnsValidGroupId()","lastModifiedDate":"2023-09-29"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" throws UnsupportedPathOperationException, InvalidIdException {","lastModifiedDate":"2023-09-29"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" Optional\u003cGroupId\u003e groupId \u003d groupPath.getGroupId();","lastModifiedDate":"2023-10-11"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" assertTrue(groupId.isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":" assertEquals(\"GRP-001\", groupId.get().toString());","lastModifiedDate":"2023-10-21"},{"lineNumber":237,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":238,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":239,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":240,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_rootPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":241,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.getStudentId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":243,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":244,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":245,"author":{"gitId":"NereusWB922"},"content":" public void getStudentId_groupPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":246,"author":{"gitId":"NereusWB922"},"content":" assertFalse(groupPath.getStudentId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":248,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-29"},{"lineNumber":249,"author":{"gitId":"NereusWB922"},"content":" @Test","lastModifiedDate":"2023-09-29"},{"lineNumber":250,"author":{"gitId":"NereusWB922"},"content":" public void getGroupId_rootPath_returnEmptyOptional() {","lastModifiedDate":"2023-10-11"},{"lineNumber":251,"author":{"gitId":"NereusWB922"},"content":" assertFalse(rootPath.getGroupId().isPresent());","lastModifiedDate":"2023-10-11"},{"lineNumber":252,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-29"},{"lineNumber":253,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-29"}],"authorContributionMap":{"NereusWB922":253}},{"path":"src/test/java/seedu/address/model/taskmanager/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package seedu.address.model.taskmanager;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"public class TaskListTest {","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" @BeforeEach","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" public void setUp() {","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" // Initialize the tasklist with no tasks","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public void testAddToDo() {","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" public void testAddDeadline() {","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime testTime \u003d LocalDateTime.now();","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new Deadline(\"Do junit test\", testTime));","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 1);","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" public void testMark() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" taskList.mark(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.get(1).isDone, true);","lastModifiedDate":"2023-10-12"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" public void testUnMark() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" taskList.unmark(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.get(1).isDone, false);","lastModifiedDate":"2023-10-12"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" @Test","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" public void testDeleteTask() throws NoSuchTaskException {","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" taskList.add(new ToDo(\"Do junit test\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" taskList.delete(1);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" assertEquals(taskList.size(), 0);","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"Nid21cs":57}},{"path":"src/test/java/seedu/address/statemanager/ChildOperationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.statemanager;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.exceptions.DuplicateChildException;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.ChildOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"public class ChildOperationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":" private Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":" private Group group;","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":" private Student student;","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath grpPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath stuPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" private State state;","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" public void init() {","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":" grpPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" stuPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"mingyuanc"},"content":" this.student \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" .withName(\"zann\")","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"zannwhatudoing@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" studentMap.put(new StudentId(\"0001Y\"), this.student);","lastModifiedDate":"2023-10-21"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" this.group \u003d new Group(new TaskList(null), studentMap, new Name(\"gary\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"mingyuanc"},"content":" groups.put(new GroupId(\"grp-001\"), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" state \u003d new StateManager(rootPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"mingyuanc"},"content":" public void getChildOperation_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.root), state.rootChildOperation());","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.group.getChildrenManger()), state.groupChildOperation(grpPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new ChildOperation\u003c\u003e(this.group.getChildrenManger()), state.groupChildOperation(stuPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":78,"author":{"gitId":"mingyuanc"},"content":" public void getGroupChildOperationWithRoot_exceptionThrown() {","lastModifiedDate":"2023-10-16"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e state.groupChildOperation(rootPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyDeleteAndAdd_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" opr.deleteChild(stu);","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" assertFalse(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" opr.addChild(stu, this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyGet_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" assertEquals(this.student, opr.getChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" public void childOperationAddDuplicateChild_exceptionThrown() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":104,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" opr.addChild(stu, this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" } catch (DuplicateChildException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":" assertEquals(\"Operation would result in duplicate \" + stu, e.getMessage());","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyGetAll_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ArrayList\u003cStudent\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" list.add(this.student);","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getAllChildren(), list);","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" public void childOperationVerifyUpdate_noError() {","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" StudentId stu \u003d new StudentId(\"0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" Student newStu \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" .withName(\"angel\")","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"angelyipenqi@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"1234567\")","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" ChildOperation\u003cStudent\u003e opr \u003d state.groupChildOperation(grpPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":" assertTrue(opr.hasChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":" opr.updateChild(stu, newStu);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":" assertEquals(newStu, opr.getChild(stu));","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":137,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":24,"mingyuanc":113}},{"path":"src/test/java/seedu/address/statemanager/TaskOperationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"mingyuanc"},"content":"package seedu.address.statemanager;","lastModifiedDate":"2023-10-16"},{"lineNumber":2,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":3,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-16"},{"lineNumber":4,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-16"},{"lineNumber":5,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-16"},{"lineNumber":6,"author":{"gitId":"mingyuanc"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-10-16"},{"lineNumber":7,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":8,"author":{"gitId":"mingyuanc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-16"},{"lineNumber":9,"author":{"gitId":"mingyuanc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-16"},{"lineNumber":10,"author":{"gitId":"mingyuanc"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-16"},{"lineNumber":11,"author":{"gitId":"mingyuanc"},"content":"import java.util.List;","lastModifiedDate":"2023-10-16"},{"lineNumber":12,"author":{"gitId":"mingyuanc"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-16"},{"lineNumber":13,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":14,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-10-16"},{"lineNumber":15,"author":{"gitId":"mingyuanc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-16"},{"lineNumber":16,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-16"},{"lineNumber":19,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-16"},{"lineNumber":20,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-16"},{"lineNumber":21,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.AbsolutePath;","lastModifiedDate":"2023-10-16"},{"lineNumber":22,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.path.exceptions.InvalidPathException;","lastModifiedDate":"2023-10-16"},{"lineNumber":23,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-16"},{"lineNumber":24,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-16"},{"lineNumber":25,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Root;","lastModifiedDate":"2023-10-16"},{"lineNumber":26,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-16"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"import seedu.address.model.statemanager.State;","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.StateManager;","lastModifiedDate":"2023-10-16"},{"lineNumber":29,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.statemanager.TaskOperation;","lastModifiedDate":"2023-10-16"},{"lineNumber":30,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-16"},{"lineNumber":31,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-16"},{"lineNumber":32,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-16"},{"lineNumber":33,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.model.taskmanager.exceptions.NoSuchTaskException;","lastModifiedDate":"2023-10-16"},{"lineNumber":34,"author":{"gitId":"mingyuanc"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2023-10-16"},{"lineNumber":35,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":36,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":37,"author":{"gitId":"mingyuanc"},"content":"public class TaskOperationTest {","lastModifiedDate":"2023-10-16"},{"lineNumber":38,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":39,"author":{"gitId":"mingyuanc"},"content":" private Root root;","lastModifiedDate":"2023-10-16"},{"lineNumber":40,"author":{"gitId":"mingyuanc"},"content":" private Group group;","lastModifiedDate":"2023-10-16"},{"lineNumber":41,"author":{"gitId":"mingyuanc"},"content":" private Student student;","lastModifiedDate":"2023-10-16"},{"lineNumber":42,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":43,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath rootPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":44,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath grpPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":45,"author":{"gitId":"mingyuanc"},"content":" private AbsolutePath stuPath;","lastModifiedDate":"2023-10-16"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" private State state;","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"mingyuanc"},"content":" private final Task task \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":48,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":49,"author":{"gitId":"mingyuanc"},"content":" @BeforeEach","lastModifiedDate":"2023-10-16"},{"lineNumber":50,"author":{"gitId":"mingyuanc"},"content":" public void init() {","lastModifiedDate":"2023-10-16"},{"lineNumber":51,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":52,"author":{"gitId":"mingyuanc"},"content":" rootPath \u003d new AbsolutePath(\"~/\");","lastModifiedDate":"2023-10-16"},{"lineNumber":53,"author":{"gitId":"mingyuanc"},"content":" grpPath \u003d new AbsolutePath(\"~/grp-001\");","lastModifiedDate":"2023-10-16"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" stuPath \u003d new AbsolutePath(\"~/grp-001/0001Y\");","lastModifiedDate":"2023-10-21"},{"lineNumber":55,"author":{"gitId":"mingyuanc"},"content":" } catch (InvalidPathException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":56,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":57,"author":{"gitId":"mingyuanc"},"content":" return;","lastModifiedDate":"2023-10-16"},{"lineNumber":58,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":59,"author":{"gitId":"mingyuanc"},"content":" this.student \u003d new StudentBuilder()","lastModifiedDate":"2023-10-16"},{"lineNumber":60,"author":{"gitId":"mingyuanc"},"content":" .withName(\"zann\")","lastModifiedDate":"2023-10-16"},{"lineNumber":61,"author":{"gitId":"mingyuanc"},"content":" .withEmail(\"zannwhatudoing@example.com\")","lastModifiedDate":"2023-10-16"},{"lineNumber":62,"author":{"gitId":"mingyuanc"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-16"},{"lineNumber":63,"author":{"gitId":"mingyuanc"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-16"},{"lineNumber":64,"author":{"gitId":"mingyuanc"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-16"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":66,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Student\u003e studentMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" studentMap.put(new StudentId(\"0001Y\"), this.student);","lastModifiedDate":"2023-10-21"},{"lineNumber":68,"author":{"gitId":"mingyuanc"},"content":" this.group \u003d new Group(new TaskList(null), studentMap, new Name(\"gary\"), new GroupId(\"grp-001\"));","lastModifiedDate":"2023-10-16"},{"lineNumber":69,"author":{"gitId":"mingyuanc"},"content":" Map\u003cId, Group\u003e groups \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":70,"author":{"gitId":"mingyuanc"},"content":" groups.put(new GroupId(\"grp-001\"), this.group);","lastModifiedDate":"2023-10-16"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" this.root \u003d new Root(groups);","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" state \u003d new StateManager(rootPath, root, new UserPrefs());","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":74,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":75,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":76,"author":{"gitId":"mingyuanc"},"content":" public void getTaskOperation_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new TaskOperation(this.group.getTaskListManager()), state.taskOperation(grpPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" assertEquals(new TaskOperation(this.student), state.taskOperation(stuPath));","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":80,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":81,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":82,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyDeleteMethod_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":83,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"mingyuanc"},"content":" assertTrue(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":86,"author":{"gitId":"mingyuanc"},"content":" try {","lastModifiedDate":"2023-10-16"},{"lineNumber":87,"author":{"gitId":"mingyuanc"},"content":" for (Task t : this.student.getAllTask()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":88,"author":{"gitId":"mingyuanc"},"content":" System.out.println(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":89,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":90,"author":{"gitId":"mingyuanc"},"content":" opr.deleteTask(1);","lastModifiedDate":"2023-10-16"},{"lineNumber":91,"author":{"gitId":"mingyuanc"},"content":" for (Task t : this.student.getAllTask()) {","lastModifiedDate":"2023-10-16"},{"lineNumber":92,"author":{"gitId":"mingyuanc"},"content":" System.out.println(t);","lastModifiedDate":"2023-10-16"},{"lineNumber":93,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":94,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":95,"author":{"gitId":"mingyuanc"},"content":" } catch (NoSuchTaskException e) {","lastModifiedDate":"2023-10-16"},{"lineNumber":96,"author":{"gitId":"mingyuanc"},"content":" fail();","lastModifiedDate":"2023-10-16"},{"lineNumber":97,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":98,"author":{"gitId":"mingyuanc"},"content":" assertFalse(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":99,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":100,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":101,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":102,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyAdd_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":103,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"mingyuanc"},"content":" opr.deleteTask(1);","lastModifiedDate":"2023-10-16"},{"lineNumber":106,"author":{"gitId":"mingyuanc"},"content":" assertFalse(opr.hasTask(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":107,"author":{"gitId":"mingyuanc"},"content":" opr.addTask(task);","lastModifiedDate":"2023-10-16"},{"lineNumber":108,"author":{"gitId":"mingyuanc"},"content":" assertTrue(this.student.checkDuplicates(task));","lastModifiedDate":"2023-10-16"},{"lineNumber":109,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":110,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":111,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":112,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyMarkUnmark_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":113,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"mingyuanc"},"content":" List\u003cTask\u003e ret \u003d opr.findTask(\"Assignment\");","lastModifiedDate":"2023-10-16"},{"lineNumber":116,"author":{"gitId":"mingyuanc"},"content":" assertEquals(ret.get(0), this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":117,"author":{"gitId":"mingyuanc"},"content":" ret \u003d opr.findTask(\"not here\");","lastModifiedDate":"2023-10-16"},{"lineNumber":118,"author":{"gitId":"mingyuanc"},"content":" assertEquals(0, ret.size());","lastModifiedDate":"2023-10-16"},{"lineNumber":119,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":122,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyGetTasks_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":123,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getTask(1), this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":126,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":127,"author":{"gitId":"mingyuanc"},"content":"","lastModifiedDate":"2023-10-16"},{"lineNumber":128,"author":{"gitId":"mingyuanc"},"content":" @Test","lastModifiedDate":"2023-10-16"},{"lineNumber":129,"author":{"gitId":"mingyuanc"},"content":" public void taskOperationVerifyGetAllTasks_noErrorReturn() {","lastModifiedDate":"2023-10-16"},{"lineNumber":130,"author":{"gitId":"mingyuanc"},"content":" TaskOperation opr;","lastModifiedDate":"2023-10-16"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" opr \u003d state.taskOperation(stuPath);","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"mingyuanc"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-16"},{"lineNumber":133,"author":{"gitId":"mingyuanc"},"content":" list.add(this.task);","lastModifiedDate":"2023-10-16"},{"lineNumber":134,"author":{"gitId":"mingyuanc"},"content":" assertEquals(opr.getAllTasks(), list);","lastModifiedDate":"2023-10-16"},{"lineNumber":135,"author":{"gitId":"mingyuanc"},"content":" }","lastModifiedDate":"2023-10-16"},{"lineNumber":136,"author":{"gitId":"mingyuanc"},"content":"}","lastModifiedDate":"2023-10-16"}],"authorContributionMap":{"NereusWB922":15,"mingyuanc":121}},{"path":"src/test/java/seedu/address/testutil/GroupBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-12"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-10-12"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-12"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import java.util.Map;","lastModifiedDate":"2023-10-12"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.GroupId;","lastModifiedDate":"2023-10-12"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.Id;","lastModifiedDate":"2023-10-12"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Group;","lastModifiedDate":"2023-10-12"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-12"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-12"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-12"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-12"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" * A utility class to help with building Group objects.","lastModifiedDate":"2023-10-12"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"public class GroupBuilder {","lastModifiedDate":"2023-10-12"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" public static final Task DEFAULT_TASK \u003d new Deadline(\"Assignment 1\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_NAME \u003d \"Group ProfBook\";","lastModifiedDate":"2023-10-12"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_ID \u003d \"grp-001\";","lastModifiedDate":"2023-10-12"},{"lineNumber":25,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-12"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" private Map\u003cId, Student\u003e students;","lastModifiedDate":"2023-10-12"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" private Id id;","lastModifiedDate":"2023-10-12"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" private Name name;","lastModifiedDate":"2023-10-12"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" * Creates a {@code GroupBuilder} with the default details.","lastModifiedDate":"2023-10-12"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" public GroupBuilder() {","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e defaultTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" defaultTaskList.add(DEFAULT_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" taskList \u003d new TaskList(defaultTaskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" students \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" Student stu1 \u003d new StudentBuilder().build();","lastModifiedDate":"2023-10-14"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":" Student stu2 \u003d new StudentBuilder()","lastModifiedDate":"2023-10-14"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" .withName(\"Bob\")","lastModifiedDate":"2023-10-14"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2023-10-14"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2023-10-14"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-14"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2023-10-14"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").build();","lastModifiedDate":"2023-10-21"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" students.put(stu1.getId(), stu1);","lastModifiedDate":"2023-10-14"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" students.put(stu2.getId(), stu2);","lastModifiedDate":"2023-10-14"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" id \u003d new GroupId(DEFAULT_ID);","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" public Group build() {","lastModifiedDate":"2023-10-12"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" return new Group(taskList, students, name, id);","lastModifiedDate":"2023-10-12"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-12"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-12"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-12"}],"authorContributionMap":{"zannloo":56,"NereusWB922":1}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_ADDRESS;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_EMAIL;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_NAME;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_PHONE;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import static seedu.address.logic.parser.CliSyntax.OPTION_TAG;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_NAME + \" \" + person.getName().fullName + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_PHONE + \" \" + person.getPhone().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_EMAIL + \" \" + person.getEmail().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_ADDRESS + \" \" + person.getAddress().value + \" \");","lastModifiedDate":"2023-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" s -\u003e sb.append(OPTION_TAG + s.tagName + \" \")","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(OPTION_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(OPTION_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(OPTION_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(OPTION_ADDRESS)","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" .append(\" \").append(address.value).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" sb.append(OPTION_TAG);","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" tags.forEach(s -\u003e sb.append(OPTION_TAG).append(\" \").append(s.tagName).append(\" \"));","lastModifiedDate":"2023-10-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"NereusWB922":17,"-":46}},{"path":"src/test/java/seedu/address/testutil/StudentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-12"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-12"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import java.util.List;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import java.util.Set;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.id.StudentId;","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Address;","lastModifiedDate":"2023-10-11"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Email;","lastModifiedDate":"2023-10-11"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Name;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Phone;","lastModifiedDate":"2023-10-11"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Deadline;","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.Task;","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.taskmanager.TaskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":"public class StudentBuilder {","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public static final String DEFAULT_ID \u003d \"0001Y\";","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"zannloo"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2023-10-06"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" public static final Task DEFAULT_TASK \u003d new Deadline(\"Assignment 3\", LocalDateTime.parse(\"2023-12-03T23:59\"));","lastModifiedDate":"2023-10-12"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"zannloo"},"content":" private TaskList taskList;","lastModifiedDate":"2023-10-06"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" private StudentId id;","lastModifiedDate":"2023-10-15"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" private Name name;","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" private Phone phone;","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"zannloo"},"content":" private Email email;","lastModifiedDate":"2023-10-06"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" private Address address;","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" * Creates a {@code StudentBuilder} with the default details.","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" public StudentBuilder() {","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":" id \u003d new StudentId(DEFAULT_ID);","lastModifiedDate":"2023-10-11"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"zannloo"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2023-10-06"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" List\u003cTask\u003e defaultTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-12"},{"lineNumber":51,"author":{"gitId":"zannloo"},"content":" defaultTaskList.add(DEFAULT_TASK);","lastModifiedDate":"2023-10-12"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" taskList \u003d new TaskList(defaultTaskList);","lastModifiedDate":"2023-10-12"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" * Initializes the StudentBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"zannloo"},"content":" public StudentBuilder(Student studentToCopy) {","lastModifiedDate":"2023-10-06"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" id \u003d studentToCopy.getId();","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":" phone \u003d studentToCopy.getPhone();","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":" address \u003d studentToCopy.getAddress();","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":67,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":68,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":69,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Id} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":70,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":71,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withId(String id) {","lastModifiedDate":"2023-10-06"},{"lineNumber":72,"author":{"gitId":"zannloo"},"content":" this.id \u003d new StudentId(id);","lastModifiedDate":"2023-10-11"},{"lineNumber":73,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":74,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":75,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":76,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":77,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":78,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":79,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withName(String name) {","lastModifiedDate":"2023-10-06"},{"lineNumber":80,"author":{"gitId":"zannloo"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2023-10-06"},{"lineNumber":81,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":82,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":83,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":84,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":85,"author":{"gitId":"zannloo"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":86,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":87,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withTags(String ... tags) {","lastModifiedDate":"2023-10-06"},{"lineNumber":88,"author":{"gitId":"zannloo"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2023-10-06"},{"lineNumber":89,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":90,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":91,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":92,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":93,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Address} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":94,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":95,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withAddress(String address) {","lastModifiedDate":"2023-10-06"},{"lineNumber":96,"author":{"gitId":"zannloo"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2023-10-06"},{"lineNumber":97,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":98,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":99,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":100,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":101,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Phone} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":102,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":103,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withPhone(String phone) {","lastModifiedDate":"2023-10-06"},{"lineNumber":104,"author":{"gitId":"zannloo"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2023-10-06"},{"lineNumber":105,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":106,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":107,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":108,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":109,"author":{"gitId":"zannloo"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":110,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":111,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withEmail(String email) {","lastModifiedDate":"2023-10-06"},{"lineNumber":112,"author":{"gitId":"zannloo"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2023-10-06"},{"lineNumber":113,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":114,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":115,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":116,"author":{"gitId":"zannloo"},"content":" /**","lastModifiedDate":"2023-10-06"},{"lineNumber":117,"author":{"gitId":"zannloo"},"content":" * Sets the {@code TaskList} of the {@code Student} that we are building.","lastModifiedDate":"2023-10-06"},{"lineNumber":118,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":119,"author":{"gitId":"zannloo"},"content":" public StudentBuilder withTaskList(ArrayList arrayList) {","lastModifiedDate":"2023-10-16"},{"lineNumber":120,"author":{"gitId":"zannloo"},"content":" this.taskList \u003d new TaskList(arrayList);","lastModifiedDate":"2023-10-16"},{"lineNumber":121,"author":{"gitId":"zannloo"},"content":" return this;","lastModifiedDate":"2023-10-06"},{"lineNumber":122,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":123,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":124,"author":{"gitId":"zannloo"},"content":" public Student build() {","lastModifiedDate":"2023-10-06"},{"lineNumber":125,"author":{"gitId":"zannloo"},"content":" return new Student(taskList, name, email, phone, address, id);","lastModifiedDate":"2023-10-06"},{"lineNumber":126,"author":{"gitId":"zannloo"},"content":" }","lastModifiedDate":"2023-10-06"},{"lineNumber":127,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"zannloo":125,"NereusWB922":2}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final Index FIRST_INDEX \u003d Index.fromOneBased(1);","lastModifiedDate":"2023-10-21"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final Index SECOND_INDEX \u003d Index.fromOneBased(2);","lastModifiedDate":"2023-10-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"NereusWB922":2,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalStudents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zannloo"},"content":"package seedu.address.testutil;","lastModifiedDate":"2023-10-06"},{"lineNumber":2,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":3,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":4,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":5,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":6,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":7,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":8,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":9,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2023-10-06"},{"lineNumber":10,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2023-10-06"},{"lineNumber":11,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2023-10-06"},{"lineNumber":12,"author":{"gitId":"zannloo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2023-10-06"},{"lineNumber":13,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":14,"author":{"gitId":"zannloo"},"content":"import seedu.address.model.profbook.Student;","lastModifiedDate":"2023-10-06"},{"lineNumber":15,"author":{"gitId":"zannloo"},"content":"/**","lastModifiedDate":"2023-10-06"},{"lineNumber":16,"author":{"gitId":"zannloo"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2023-10-12"},{"lineNumber":17,"author":{"gitId":"zannloo"},"content":" */","lastModifiedDate":"2023-10-06"},{"lineNumber":18,"author":{"gitId":"zannloo"},"content":"public class TypicalStudents {","lastModifiedDate":"2023-10-06"},{"lineNumber":19,"author":{"gitId":"zannloo"},"content":" public static final Student ALICE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0001Y\").withName(\"Alice Pauline\")","lastModifiedDate":"2023-10-21"},{"lineNumber":21,"author":{"gitId":"zannloo"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2023-10-06"},{"lineNumber":22,"author":{"gitId":"zannloo"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2023-10-06"},{"lineNumber":23,"author":{"gitId":"zannloo"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":24,"author":{"gitId":"zannloo"},"content":" public static final Student BENSON \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0002Y\").withName(\"Benson Meier\")","lastModifiedDate":"2023-10-21"},{"lineNumber":26,"author":{"gitId":"zannloo"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2023-10-06"},{"lineNumber":27,"author":{"gitId":"zannloo"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2023-10-06"},{"lineNumber":28,"author":{"gitId":"zannloo"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":29,"author":{"gitId":"zannloo"},"content":" public static final Student CARL \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0003Y\").withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2023-10-21"},{"lineNumber":31,"author":{"gitId":"zannloo"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":32,"author":{"gitId":"zannloo"},"content":" public static final Student DANIEL \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0004Y\").withName(\"Daniel Meier\")","lastModifiedDate":"2023-10-21"},{"lineNumber":34,"author":{"gitId":"zannloo"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2023-10-06"},{"lineNumber":35,"author":{"gitId":"zannloo"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":36,"author":{"gitId":"zannloo"},"content":" public static final Student ELLE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0005Y\").withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2023-10-21"},{"lineNumber":38,"author":{"gitId":"zannloo"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":39,"author":{"gitId":"zannloo"},"content":" public static final Student FIONA \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0006Y\").withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2023-10-21"},{"lineNumber":41,"author":{"gitId":"zannloo"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":42,"author":{"gitId":"zannloo"},"content":" public static final Student GEORGE \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0007Y\").withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2023-10-21"},{"lineNumber":44,"author":{"gitId":"zannloo"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":45,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":46,"author":{"gitId":"zannloo"},"content":" // Manually added","lastModifiedDate":"2023-10-06"},{"lineNumber":47,"author":{"gitId":"zannloo"},"content":" public static final Student HOON \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0008Y\").withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2023-10-21"},{"lineNumber":49,"author":{"gitId":"zannloo"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":50,"author":{"gitId":"zannloo"},"content":" public static final Student IDA \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0009Y\").withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2023-10-21"},{"lineNumber":52,"author":{"gitId":"zannloo"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2023-10-06"},{"lineNumber":53,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":54,"author":{"gitId":"zannloo"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2023-10-06"},{"lineNumber":55,"author":{"gitId":"zannloo"},"content":" public static final Student AMY \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2023-10-21"},{"lineNumber":57,"author":{"gitId":"zannloo"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2023-10-06"},{"lineNumber":58,"author":{"gitId":"zannloo"},"content":" public static final Student BOB \u003d new StudentBuilder()","lastModifiedDate":"2023-10-06"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" .withId(\"0010Y\").withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2023-10-21"},{"lineNumber":60,"author":{"gitId":"zannloo"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2023-10-06"},{"lineNumber":61,"author":{"gitId":"zannloo"},"content":" .build();","lastModifiedDate":"2023-10-06"},{"lineNumber":62,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":63,"author":{"gitId":"zannloo"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2023-10-06"},{"lineNumber":64,"author":{"gitId":"zannloo"},"content":"","lastModifiedDate":"2023-10-06"},{"lineNumber":65,"author":{"gitId":"zannloo"},"content":" private TypicalStudents() {} // prevents instantiation","lastModifiedDate":"2023-10-06"},{"lineNumber":66,"author":{"gitId":"zannloo"},"content":"}","lastModifiedDate":"2023-10-06"}],"authorContributionMap":{"zannloo":55,"NereusWB922":11}}] diff --git a/AY2324S1-CS2103T-W15-2_tp_master/commits.json b/AY2324S1-CS2103T-W15-2_tp_master/commits.json index a668e7d6..61a9ccc2 100644 --- a/AY2324S1-CS2103T-W15-2_tp_master/commits.json +++ b/AY2324S1-CS2103T-W15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NgChunMan":[{"date":"2023-09-27","commitResults":[{"hash":"faa4a61c00b43c3adb6a77257a385521c205865b","isMergeCommit":false,"messageTitle":"Update UI mockup image and contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"6cf1a4c849133200d531b15c5cf08316aa5a120e","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2023-09-29","commitResults":[{"hash":"d97a38718e0ca3f5e25669b53039ef04d1b4b902","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"36bc60fcb1ecf7911a4764e87d54e40915e21823","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":5}}},{"hash":"d4d5bc63bf0ff462fd5af7925ebdbf9eaeac6241","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}}]},{"date":"2023-09-30","commitResults":[{"hash":"5b7a88a860215616241bbb7319adb954fc23ec1e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"4a44f16c552b41274a2c087e2fcb21979cf2df5b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"9badd396d060f98535e77d3553433739f2af2137","isMergeCommit":true,"messageTitle":"Merge pull request #72 from NgChunMan/Update-README","messageBody":"Update README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"0a07aa5a6948d3658b4dc279eb0ecf5ff21fde70","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}}]},{"date":"2023-10-02","commitResults":[{"hash":"982fbf9c51c5623e143df3a39f20ab2e2e11515d","isMergeCommit":false,"messageTitle":"Create initial command class skeletons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":363,"deletions":0}}}]},{"date":"2023-10-12","commitResults":[{"hash":"4f4be7710b76274fe7c2b178d8b38326c07b3020","isMergeCommit":false,"messageTitle":"Implement CreateTodoCommand, CreateGroupCommand, MoveStudentToGroupCommand and test cases for these classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":121},"test-code":{"insertions":134,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"1dd50804b55202ca88e10ccf86d73b6186fd7c83","isMergeCommit":false,"messageTitle":"Add catch block to handle exception that may be thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":96}}},{"hash":"0bdb22f16d3e2d756b2bb2508269f3464c2a962e","isMergeCommit":true,"messageTitle":"Merge with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a9c1d06b0333e83febcc8eacbb8ddc394e6cd47f","isMergeCommit":false,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":187}}},{"hash":"b0dfb7033ed80339033be90b50ad79fc1c083849","isMergeCommit":false,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":8}}},{"hash":"4a1daee27f66be5ca107ec72d89af5c56986a606","isMergeCommit":true,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c38713dd75ed63a49720940900457955d7ea6092","isMergeCommit":false,"messageTitle":"Update test case file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":13},"test-code":{"insertions":12,"deletions":7}}},{"hash":"2908c9537ceb0bd4cf225d2a00c0787e2053c8b5","isMergeCommit":false,"messageTitle":"Throw CommandException in catch block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":38}}},{"hash":"533944aedef73fd555ac1ea8b2bfb94956b72f63","isMergeCommit":false,"messageTitle":"Throw CommandException in catch block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"341748eff7cb8445c7430b190a72ac1202cfd67a","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"aa2fbde8636985cf1f2896a172443d5ad2b0b6fa","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":13}}},{"hash":"d031619fe08451717197a88a4a1d878c0a15e9b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 60-create-initial-command-class-skeletons-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9800d31f2311a377edabfb0f5301b967a947d1dd","isMergeCommit":false,"messageTitle":"Add deleted method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"65eb8ace2ac6303e49aef2981d2cfe4ca5a0b8f4","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}}]},{"date":"2023-10-14","commitResults":[{"hash":"43d70a6e6bfc3c222936a77d565c21825dc76d8c","isMergeCommit":false,"messageTitle":"Update the implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"22b97ba9a0624925dfb9a2d65763a10f693d46e4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-code","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"1d18721a43f953a929dbb7574861f9ddf3466221","isMergeCommit":true,"messageTitle":"Refactor StateManager","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"330f5c24bdcd3bfe6db297dc8ee87a4ccf3c927f","isMergeCommit":false,"messageTitle":"Update the error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":25}}},{"hash":"32d41f79918a74e1cf1d082f0f0b89264df38469","isMergeCommit":false,"messageTitle":"Update HelpCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}}]},{"date":"2023-10-16","commitResults":[{"hash":"062d86346252ed6016dd985ee2eb9f7da46b973f","isMergeCommit":false,"messageTitle":"Add EditCommand and EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":483,"deletions":0},"test-code":{"insertions":93,"deletions":0}}},{"hash":"f96d247ae260d29b98929472cb3a5ea4d2dcb42a","isMergeCommit":false,"messageTitle":"Add HelpCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0}}},{"hash":"0b36393fdc64af4da734fbd5c414cf89ca500efe","isMergeCommit":false,"messageTitle":"Add EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"a47b2e0267b34d790ca85e1d65ca519e28b2348e","isMergeCommit":false,"messageTitle":"Add EditCommandParser to ProfBookParser and javadoc for EditStudentDescriptor and EditGroupDescriptor classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":12}}},{"hash":"2070294d90aa69c778c612a4de213e6b1636f85f","isMergeCommit":false,"messageTitle":"Add HelpCommandTest and update HelpCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":36,"deletions":0}}},{"hash":"9c30e4d5f60ed4d03ae44d7aa9b03c6bcbcc55fa","isMergeCommit":false,"messageTitle":"Remove HelpCommandParser from ProfBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"30c304f4188078c33053ecffe79019d3b9910fa1","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":8}}},{"hash":"0fac334199b9162f9cca4ffaf143928f63059073","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f991eaba905f79849d34d700be72550b8e73e028","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":16}}},{"hash":"6190c79e9cc7ec448dfc3267b6cda334cf125626","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3600651e50703d21200479f6dc434d9403399040","isMergeCommit":false,"messageTitle":"Update error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f7890c6c4c29b12ca0cb468198a8d717bb172b23","isMergeCommit":false,"messageTitle":"Refactor the code by extracting out EditGroupDescriptor and EditStudentDescriptor from EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":295,"deletions":275},"test-code":{"insertions":4,"deletions":4}}},{"hash":"95f400b437cc5aab89dc4d5c65a724f95852a4fa","isMergeCommit":false,"messageTitle":"Add test cases to CreateTodoCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":75,"deletions":16}}},{"hash":"0e2ea66f67548cf7aab62d472905a70f27ba98ce","isMergeCommit":false,"messageTitle":"Add test cases to MoveStudentToGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":70,"deletions":0}}},{"hash":"30bf1f996143effeb65e0543d06f600523488f68","isMergeCommit":false,"messageTitle":"Add test cases to CreateGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"21c17def4642949d9283f1f177fa4f3df6a68a77","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"22fe4d2c101997039af507451c7b972a784f3ef7","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c44b673c131f54b6e6b5d046a5e20b44648a8311","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f06be11689cd6234688b1400b082f845fd5a989f","isMergeCommit":false,"messageTitle":"Add testcases for MoveStudentToGroupCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":35}}},{"hash":"8e36e78ece569e3af482291a2ee455813e921abf","isMergeCommit":true,"messageTitle":"Solve Merge Conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"abcea1f70de52272dbc874f7696dd742b2fc3557","isMergeCommit":false,"messageTitle":"Edit error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"af2089d37e8bdab774cf2f65e95aeb2a99abb946","isMergeCommit":false,"messageTitle":"Edit error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"8cd8f7d9c1cae3b63c3025e9faa6725fec5b4716","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Test-Case-to-CreateGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"28711363a744edc1db44dbb3d55dfc069abd53eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Test-Case-to-MoveStudentToGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{}}]}],"zannloo":[{"date":"2023-09-27","commitResults":[{"hash":"580e0ea5b98921d9f17b2293c512f89f1b16e10e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Add details and images of team members.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":25}}},{"hash":"7c0211aafb706dba51a365158e17033532722712","isMergeCommit":false,"messageTitle":"Edit to include email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"071764812046a671065eb2c29dcfc2af3a449e24","isMergeCommit":false,"messageTitle":"Add a skeletal PPP","messageBody":"Include only the headings for the skeletal PPP.\n\"to be added soon\" are placeholders for content.\n","fileTypesAndContributionMap":{"docs":{"insertions":210,"deletions":0}}}]},{"date":"2023-10-01","commitResults":[{"hash":"755aa27b1d3728cc7889788ba24d0effc5ccca48","isMergeCommit":false,"messageTitle":"Create initial command class skeletons","messageBody":"Create a new package, newcommands, for the new command classes (\nCreateDeadlineForStudentCommand, CreateStudentCommand and\nCreateToDoForStudentCommand).\n\nComment out certain unused codes to fix CheckStyle errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":298,"deletions":1}}},{"hash":"50bcee892aa839accc5e78e8bc1ff197f04fc219","isMergeCommit":false,"messageTitle":"Fix CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}}]},{"date":"2023-10-03","commitResults":[{"hash":"ecd823acaa011e7efde1f49dbeea4b34b8d9ab2f","isMergeCommit":false,"messageTitle":"Remove all unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":24}}},{"hash":"3f03db8ce6119b4275f84cce97e3db2553d0ab14","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 60-create-initial-command-class-skeletons-1","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Create initial command class skeletons\n Fix checkstyle\n Fix minor bug\n Change ArrayList to List to be more general\n Remove dead code\n Implement clone method\n Fix minor bugs\n Implement updateChild method\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/newcommands/Command.java\n#\tsrc/main/java/seedu/address/logic/newcommands/CommandResult.java\n#\tsrc/main/java/seedu/address/logic/newcommands/exceptions\n\t/CommandException.java\n","fileTypesAndContributionMap":{}},{"hash":"de835641f06515531aba0f2196b2ec96f276c61e","isMergeCommit":false,"messageTitle":"Fix errors in import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"315cdd697b75fbeb88143b4163a90e1f16bc53ac","isMergeCommit":false,"messageTitle":"Remove unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-06","commitResults":[{"hash":"c146dc50c1cec145e36d8c04a72f26a99f522895","isMergeCommit":false,"messageTitle":"Implement command classes (CreateDeadlineForStudentCommand, CreateStudentCommand and CreateToDoForStudentCommand) and their respective test cases","messageBody":"Code that is depended on other methods(that are not yet implemented) are\ncommented out.\n\nOther methods such as equals method in AbsolutePath class and duplicate\nmethod in RootOperation class and GroupOperation class.\n\nTest cases for CreateStudentCommand has been commented out due to errors.\nTheequals and toString methods of CreateDeadlineForStudentCommand and\nCreateToDoForStudentCommand have test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":21},"test-code":{"insertions":602,"deletions":1}}},{"hash":"3a925c4243df70173b469c0f642916a1aae44257","isMergeCommit":false,"messageTitle":"Solve failing check on build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-07","commitResults":[{"hash":"4d12730d7a21d49d82a6e6242dadf94367ccdea2","isMergeCommit":true,"messageTitle":"Merge pull request #92 from NereusWB922/90-implement-equals-hashCode-method","messageBody":"Implement equals and hashCode method for Path class","fileTypesAndContributionMap":{}},{"hash":"7ce76b3e532bce179ba7427f5c890836b48a8ada","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Implement equals and hashCode method\n","fileTypesAndContributionMap":{}},{"hash":"daba6c4d1e125ca62621c7137988540809a3c65f","isMergeCommit":false,"messageTitle":"Include methods that require the equals method from Absolute Path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":38,"deletions":32}}}]},{"date":"2023-10-11","commitResults":[{"hash":"08056164ab08c5240d14d7dfec717c609c72517d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Fix checkstyle error\n Update test for updated Id class\n Fix import from wrong package\n Refactor to use updated id class\n Remove checked exception in factory method\n Fix Resolve relative path start with ~/ #86\n Move directory related method to Path parent class\n","fileTypesAndContributionMap":{}},{"hash":"239c4d798ca014af51b1bb0d6f379b7327377abf","isMergeCommit":false,"messageTitle":"Change the Deadline command to handle cases of student and group","messageBody":"Remove all the old classes and make some edits.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":273},"other":{"insertions":48,"deletions":21},"test-code":{"insertions":6,"deletions":83}}}]},{"date":"2023-10-12","commitResults":[{"hash":"ad84dbae52eec7c368cfc6b47216ce6545f9729f","isMergeCommit":true,"messageTitle":"Merge pull request #96 from AY2324S1-CS2103T-W15-2/93-duplicate-method-for-classes","messageBody":"Implement requested functions","fileTypesAndContributionMap":{}},{"hash":"acd4e78ed80cb3a1fb650eb03d78ac136dfe7fde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Implement requested functions\n","fileTypesAndContributionMap":{}},{"hash":"a05275959bcbc4396626944378a1c05670a176f1","isMergeCommit":false,"messageTitle":"Edits to current command classes and complete test cases.","messageBody":"toString method and test cases for CreateDeadline class when is group\ndirectory is incomplete.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":41},"test-code":{"insertions":445,"deletions":213}}},{"hash":"2264a91c43c335f8379b13b9f0dfc348f39c87d1","isMergeCommit":false,"messageTitle":"Abstract out getDescription method to prevent repeated code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}},{"hash":"8a73c82268c9a8b87dd562cac7245b6a45cbb402","isMergeCommit":false,"messageTitle":"Edits and remove previous uses of Message.format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":55},"test-code":{"insertions":7,"deletions":8}}}]},{"date":"2023-10-13","commitResults":[{"hash":"02d0169282007b1ad6daddedd1876f7491dbd498","isMergeCommit":false,"messageTitle":"Include catch blocks for execute method of 2 commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":43}}},{"hash":"c78ba64f06c047330075a2c74891edd7412e9065","isMergeCommit":false,"messageTitle":"Remove unneccessary exception clauses at the methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":11}}},{"hash":"e9d1e172feef5607e52705906a159c90053d9c41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 57-implement-command-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"815ede70eafd6b86123085aeb7342bb9088ba7b1","isMergeCommit":false,"messageTitle":"Edit to use equal method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":35},"test-code":{"insertions":4,"deletions":11}}},{"hash":"0b07b26a7eef9c4da87b59671341b98d11d6d879","isMergeCommit":false,"messageTitle":"Remove unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"e054b1cef1b562a5b024d5f82939d2a71c9aabf4","isMergeCommit":false,"messageTitle":"Remove redundant getDescription method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"240b0ff60fe34e45a59af02eeede42930aad22a2","isMergeCommit":true,"messageTitle":"Merge pull request #91 from zannloo/57-implement-command-class","messageBody":"Implement command classes and their respective test cases","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"f18f1158e217ce9c50b70be592a4d52b4d82b7ce","isMergeCommit":false,"messageTitle":"Add DeleteForStudentsAndGroupsCommand and relevant test cases","messageBody":"Parser is not updated for this command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0},"test-code":{"insertions":207,"deletions":15}}},{"hash":"57b52e79f6cd0ae52c815907b36052c14bd0d027","isMergeCommit":false,"messageTitle":"Include option to add Deadline task to all Groups or Students","messageBody":"Can only add Deadline task to all Groups if targeted path is a\nRoot Directory.\nCan only add Deadline task to all Students if targeted path is a\nGroup Directory.\n\nEdits to parser are also made. Test cases are not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":19}}},{"hash":"e140959f96ac897fe3cec42afc3f8598afa87281","isMergeCommit":false,"messageTitle":"Include testcase for add deadline for all students in a group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":53,"deletions":3}}}]},{"date":"2023-10-15","commitResults":[{"hash":"69db0e937d97e492a7e602b1909d8c386ce0ed82","isMergeCommit":true,"messageTitle":"Merge pull request #114 from mingyuanc/103-refactor-state-manger","messageBody":"Refactor StateManager","fileTypesAndContributionMap":{}},{"hash":"9aaacf0d6d014b8da68b9a88d27f5304411d9dad","isMergeCommit":false,"messageTitle":"Edits to CreateDeadlineCommandParser","messageBody":"Test cases for CreateDeadlineCommandParser still does not work.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":13,"deletions":12}}},{"hash":"d514a1e9a10d96c0bf6c3048174aba889a5306d8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 106-add-delete-commmand-for-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Remove unused imports\n Update javadocs\n Fix errors as a result of refactoring\n Refactor Old operations to Task and Child Operation\n Enhance GUI\n Add ShowTaskListCommand and ShowChildrenListCommand\n Show children list after cd command\n Implement ShowTaskListCommand\n Implement ShowChildrenListCommand\n Edit message usage\n Refactor to use Displayable\n Remove exception in getAllTask\n Implement Card Ui for todo\n Implement Card Ui for Deadline\n Implement toggle children list and task list\n Refactor ItemListPanel to display Displayable\n Fix bug for resolve .\n","fileTypesAndContributionMap":{}},{"hash":"4311c93e8bcbe1e01d5c67d810bbb614860837c6","isMergeCommit":false,"messageTitle":"Edits to DeleteForStudentsAndGroupsCommand and test cases for new StateManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24},"test-code":{"insertions":11,"deletions":9}}},{"hash":"a9e1c6d132a7a1752dfa5e60cbb63b25de04adad","isMergeCommit":false,"messageTitle":"Edits to CreateStudentCommandTest and fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":14,"deletions":101}}},{"hash":"3c3c9be2460175884bc245408bc452e963e08ddb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 108-add-tasks-for-all-students","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Remove unused imports\n Update javadocs\n Fix errors as a result of refactoring\n Refactor Old operations to Task and Child Operation\n Enhance GUI\n Add ShowTaskListCommand and ShowChildrenListCommand\n Show children list after cd command\n Implement ShowTaskListCommand\n Implement ShowChildrenListCommand\n Edit message usage\n Refactor to use Displayable\n Remove exception in getAllTask\n Implement Card Ui for todo\n Implement Card Ui for Deadline\n Implement toggle children list and task list\n Refactor ItemListPanel to display Displayable\n Fix bug for resolve .\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/newcommands/CreateDeadlineCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"91e4ea89f582bae13be23da8789d605ca952c9f4","isMergeCommit":false,"messageTitle":"Update to CreateDeadline so it can create deadline for all students or groups","messageBody":"CreateDeadlineCommand is suppose to:\n- create deadlines for all students in group if user specifies \"allStu\"\nand is in a group directory.\n- create deadlines for all groups in root if user specifies \"allGrp\"\nand is in a root directory.\n\nCurrently, there are errors in the if else loop in CreateDeadlineCommand\nclass which leads to errors in CreateDeadlineCommandTest. Testcase for\nCreateDeadlineCommandParser also have errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":56},"test-code":{"insertions":55,"deletions":18}}},{"hash":"ce834d6c21dbad505074a6cc42b222c2166bf6c8","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7},"test-code":{"insertions":9,"deletions":11}}},{"hash":"8053dc995ff1ec2fdd3a722989dfeac56c70fae1","isMergeCommit":false,"messageTitle":"Comment out failed testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":27}}},{"hash":"0e834b86730cf901d5be1450b380296d7202faa0","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":27}}}]},{"date":"2023-10-16","commitResults":[{"hash":"7010f09fa6515ae33ae8142443e14a8a80d52e27","isMergeCommit":false,"messageTitle":"Implement parser for DeleteForStudentsAndGroupsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":16,"deletions":0}}},{"hash":"b892709abed079f6081276ae961a4ac59db023e4","isMergeCommit":false,"messageTitle":"Still having errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":9}}},{"hash":"d4f2f02d5cc682cfd28ca2413b77259ca844ca7b","isMergeCommit":false,"messageTitle":"Include the case for DeleteForStudentsAndGroupsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"2b9d50d1b6e7ee4c17a5815a0b3802e237402de3","isMergeCommit":false,"messageTitle":"Add test cases for CreateDeadlineCommand to test the categories","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":11},"test-code":{"insertions":91,"deletions":62}}},{"hash":"af44cca220647c4c24b015eb8054f276956c535b","isMergeCommit":false,"messageTitle":"Fix CreateDeadlineCommandParserTest errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":8,"deletions":8}}},{"hash":"a04913f8253338f44c62af7d476f45210499df97","isMergeCommit":false,"messageTitle":"Edit to CreateTodo Command to be able to add all students and group","messageBody":"Updates to parser and test cases accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":15},"test-code":{"insertions":110,"deletions":0}}},{"hash":"5f57f36ca38c509bc7e8f4ae89657c4e21b25bfe","isMergeCommit":false,"messageTitle":"Edits to CreateDeadlineCommandParser and CreateTodoCommandParser to remove usage of set","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":36},"test-code":{"insertions":6,"deletions":4}}},{"hash":"e9379848aa5eb76ebd5e9fbf46a7257a456c44b9","isMergeCommit":false,"messageTitle":"Edits to DeleteForStudentsAndGroupsCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"d08f533d8e051a52ea11a282c1f9c541b58d2ba0","isMergeCommit":true,"messageTitle":"Merge pull request #113 from zannloo/106-add-delete-commmand-for-command-class","messageBody":"Add DeleteForStudentsAndGroupsCommand and relevant test cases","fileTypesAndContributionMap":{}},{"hash":"6ccb1db323fa845886059e71202ea059c0245ca7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 108-add-tasks-for-all-students","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Edits to DeleteForStudentsAndGroupsCommandParser class\n Include the case for DeleteForStudentsAndGroupsCommand\n Implement parser for DeleteForStudentsAndGroupsCommand\n Edits to CreateStudentCommandTest and fix checkstyle\n Edits to DeleteForStudentsAndGroupsCommand and test cases for new StateManager\n Add DeleteForStudentsAndGroupsCommand and relevant test cases\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/model/statemanager/StateManager.java\n#\tsrc/test/java/seedu/address/testutil/GroupBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"519591ddb9b066638af3d6d7af70745d0a229b1a","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9e5131107aa1cfccaaa9697e44243b6fb5c5ade0","isMergeCommit":true,"messageTitle":"Merge pull request #115 from zannloo/108-add-tasks-for-all-students","messageBody":"Add tasks for all students and groups","fileTypesAndContributionMap":{}}]}],"NereusWB922":[{"date":"2023-09-27","commitResults":[{"hash":"a717d4b22967319e908e4d37abee2b535526cf5d","isMergeCommit":false,"messageTitle":"Update source link for CI status and codecov","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ce04751d9a19f4d28c0df8a117be3f75b4564af9","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zannloo/38-update-aboutus-page","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"c9db007632cca4d3c5b0aa6e5d616573e09e94ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 40-update-site-wide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc7bf2a06c754f21a7db56a5e0971522c15d125d","isMergeCommit":true,"messageTitle":"Merge pull request #44 from NereusWB922/40-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"109fa82ee75f1141625a0230d745e2db04ab43e9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from mingyuanc/41-update-userguide-page","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"75b71a547fbe1e2f0954eb3109a8efa1efc0056c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from zannloo/42-create-skeletal-PPP","messageBody":"Add a skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"a8bb21595feed7afeff6f57c1034bef80688ec7d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Nid21cs/43-Update-Developer_Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"da074a20ee0bb8c2b0c8a51a14d96caff525afa4","isMergeCommit":true,"messageTitle":"Merge pull request #49 from NgChunMan/39-Update-README-page","messageBody":"Update UI mockup image and contents","fileTypesAndContributionMap":{}},{"hash":"d24d64e02926307649af2b4d8dc261697f361f89","isMergeCommit":false,"messageTitle":"Sync index.md with README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":4}}},{"hash":"4622a83d696c5545f94f11443d7694ac1a5f44d2","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"5c3c7c8d365996ed8bf6fe0a05a917fa0d0f590d","isMergeCommit":true,"messageTitle":"Merge branch \u002750-update-indexmd\u0027 of github.com:NereusWB922/tp into 50-update-indexmd","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73d45b5a367aae87bba898584349e903fe05db2d","isMergeCommit":false,"messageTitle":"Edit index.md title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1ae6ef0f455b102d6889d983fa68930ea13271bb","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NereusWB922/50-update-indexmd","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"39dd79a0c1c5aa9b7ecd257d926a95d926e83a68","isMergeCommit":false,"messageTitle":"Update link to release","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"69c62130ab110a77d15989411ab1efea7cf6771f","isMergeCommit":true,"messageTitle":"Merge pull request #64 from mingyuanc/41-update-userguide-page","messageBody":"Remove AddressBook from UserGuide","tags":["v1.1"],"fileTypesAndContributionMap":{}},{"hash":"7a5799f29e0aef294ac8bee603788cf91dc1b03e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from mingyuanc/63-Create-Skeleton","messageBody":"Generate skeleton code for required class","fileTypesAndContributionMap":{}},{"hash":"f5ee69b055120aa87b8daa1319b4e830aa36cb4c","isMergeCommit":false,"messageTitle":"Implement PathElement class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":0}}},{"hash":"8cce660d83c95d52db77e28422bfe8aed6238d48","isMergeCommit":false,"messageTitle":"Implement absolute path class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":0}}},{"hash":"4c45308235d8abc0c18a72ff7bf2260836900bd9","isMergeCommit":false,"messageTitle":"Create unit test for AbsolutePath","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":0}}},{"hash":"081441394eb7538ee1a38376cabb1cc5ac9c9b59","isMergeCommit":false,"messageTitle":"Abstract the constructor to parent class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":57}}},{"hash":"4ebc41b4155fd0d543fe993906f1ba16ee84307e","isMergeCommit":false,"messageTitle":"Create RelativePath class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"ff277e4139badc1494fc796220c951d5e46883d4","isMergeCommit":false,"messageTitle":"Abstract element appending logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":28}}},{"hash":"691cc647c74526a588a196846a7634520bc37447","isMergeCommit":false,"messageTitle":"Add resolve method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"97177d794ab6835493dc62a7b5cfb3c4ed9f4718","isMergeCommit":false,"messageTitle":"Add unit test for resolve method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":5}}},{"hash":"5ddc5f8d196543c40c5dbe0bf864c5a33ddcd894","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":7}}},{"hash":"bd841e601121188503b9c18410604eb032920ad9","isMergeCommit":false,"messageTitle":"Refactor path element to store under package path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}},{"hash":"d745381397c5640d0e2ab2a196d36df13cc93f8d","isMergeCommit":false,"messageTitle":"Add method to check directory type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"8bff8b0251d4422518a545032a334cb92ccf4b9e","isMergeCommit":false,"messageTitle":"Add javadoc comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"d78a1177fad8853eaa6dc3931a9b58111a87b0df","isMergeCommit":false,"messageTitle":"Create Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"9a83eac06a90751988969fd7eaf23aad82f19f3c","isMergeCommit":false,"messageTitle":"Create IdValidator class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"b58fb7f38713b0d43ac78063559c8ffcf0acf9b5","isMergeCommit":false,"messageTitle":"Create InvalidIdException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"e610d09ead1682e32a6c80562388bae74f5182ba","isMergeCommit":false,"messageTitle":"Add GroupId and StudentId class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":0}}},{"hash":"e3beaa615fcf30014888c067947849ab899166c2","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":8}}},{"hash":"9a76291792290c8ecd24a7de635fad57e01fb257","isMergeCommit":false,"messageTitle":"Change Id factory method to static method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ea1878f71308e56c46b18b3bb445954d933b90b9","isMergeCommit":true,"messageTitle":"Merge pull request #68 from NgChunMan/Update-index.md-and-README.md-content","messageBody":"Update README.md and index.md","fileTypesAndContributionMap":{}},{"hash":"a6ed62f0385a3f27b3a38e715ad81bfc71461ec8","isMergeCommit":false,"messageTitle":"Add unsupportedPathOperationException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"61e42289cdb03a577d681c605d680b48da7b2657","isMergeCommit":false,"messageTitle":"Add student ID and group ID getter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":0}}},{"hash":"3f6e37ac6d293bcdb77917bb05634f6a03b98448","isMergeCommit":false,"messageTitle":"Refactor parsing logic to use id validator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"83d2baabdb190da6db41a948c2df65cc607eeb83","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"9d6d59118c806b4ba8787fab1c83d636c8849eab","isMergeCommit":false,"messageTitle":"Edit test cases for AbsolutePath class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":17}}},{"hash":"2f6624e3589e5bf079b2d887db528b9c1c3f3139","isMergeCommit":false,"messageTitle":"Create unit tests for IdValidator class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"427201754ab0a3552dd24c975651a08cd3ea5c72","isMergeCommit":false,"messageTitle":"Add tests to cover all methods","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":117,"deletions":0}}},{"hash":"78a888ea089fd70c51da2be74a60f5e40150b869","isMergeCommit":false,"messageTitle":"Fix index out of bounds error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6cc80bc8c1fff6e8685ccf47020b2535caf967b3","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":20}}},{"hash":"6921432eec060763dbbac17dbaef4030bc8600d9","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":17}}}]},{"date":"2023-09-30","commitResults":[{"hash":"ff327464d5767e9c9a0419f1f9f338edd882b376","isMergeCommit":true,"messageTitle":"Merge pull request #69 from NereusWB922/62-create-path-class","messageBody":"Create path class #62","fileTypesAndContributionMap":{}},{"hash":"19b7627be00ef8ac5e859595754b5391abe1f592","isMergeCommit":true,"messageTitle":"Merge pull request #66 from mingyuanc/58-implement-profbook-and-related-classes","messageBody":"Create StateManager.java and required logic","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"66b9eaf30cfd59d87223f6678cf58a30fce2ed69","isMergeCommit":true,"messageTitle":"Merge pull request #79 from NgChunMan/Update-README","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"f700fe49eeac9ca8966c048525c2e21bed8d0ac6","isMergeCommit":true,"messageTitle":"Merge pull request #71 from Nid21cs/54-Create-Task-Class","messageBody":"Add List of Task objects including ToDo and Deadline as well as Excep…","fileTypesAndContributionMap":{}}]},{"date":"2023-10-07","commitResults":[{"hash":"99f663ffde002e5bee562a533b89ce03a7fc70bb","isMergeCommit":false,"messageTitle":"Implement equals and hashCode method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":0}}}]},{"date":"2023-10-11","commitResults":[{"hash":"5092682e3e0cb2e00411e7cb37b2b121fad8cbf3","isMergeCommit":false,"messageTitle":"Move directory related method to Path parent class","messageBody":"These methods shared within Path subclasses.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":71}}},{"hash":"fa94eceee00db8c42d446bedd94414374172e942","isMergeCommit":false,"messageTitle":"Fix Resolve relative path start with ~/ #86","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"00e1cce997407d3a793346534969c3e5c8fcca2e","isMergeCommit":false,"messageTitle":"Remove checked exception in factory method","messageBody":"Instead, we should check if valid before construct.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":61}}},{"hash":"46202bb38367ca78655aeaf75f039dda92397aca","isMergeCommit":false,"messageTitle":"Refactor to use updated id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":24}}},{"hash":"bb3500c7867e287505277accb7384a9e0057f515","isMergeCommit":false,"messageTitle":"Fix import from wrong package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"b21f576a2c8bf441398452c549e1628c36696c68","isMergeCommit":false,"messageTitle":"Update test for updated Id class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"ba8ac9eaee2753888ec394ebc5d8e204ae5e1eb0","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"e0f0e88f3fac6b31493a9e620fcba09413101674","isMergeCommit":true,"messageTitle":"Merge pull request #95 from NereusWB922/94-fix-path-and-id-class","messageBody":"Fix #86 #94","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"0e017af263bb57a68feec2c6e5f553f599b708e8","isMergeCommit":true,"messageTitle":"Merge pull request #100 from NgChunMan/60-create-initial-command-class-skeletons-2","messageBody":"Implement CreateTodoCommand, CreateGroupCommand, MoveStudentToGroupCommand and test case for these classes.","fileTypesAndContributionMap":{}},{"hash":"16ad3e146ca55de546f8ae8be538f84b5069d4c5","isMergeCommit":false,"messageTitle":"Add Option class to replace Prefix class","messageBody":"Include both long name and short name of the option.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"5eeba74ad3709cfe5af8b1ff3055387f69ca73b4","isMergeCommit":false,"messageTitle":"Refactor to use Option class","messageBody":"Add logic to check for occurance of short name.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":68}}},{"hash":"41443569173272294fb590f759230066066c75e7","isMergeCommit":false,"messageTitle":"Refactor to use Option class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":97},"test-code":{"insertions":70,"deletions":70}}},{"hash":"c08e1c5808bb6f1a4ff8f859d8a128b439b50b34","isMergeCommit":false,"messageTitle":"Modify test for ArgumentTokenizer","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":80,"deletions":54}}},{"hash":"7363732f91364d7dada7cf13c4c32aee44478638","isMergeCommit":false,"messageTitle":"Fix #86","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"e03031792999df782aae7fadacbbfae67a2d3f76","isMergeCommit":false,"messageTitle":"Add more test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}},{"hash":"b788ed4f0d04c3172d6334611b9cf57e7aee49b9","isMergeCommit":false,"messageTitle":"Create Parser interface for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"89e16efd8f0b60052d55dbb00426c5fb723b083d","isMergeCommit":false,"messageTitle":"Create ParserUtil for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0}}},{"hash":"6623d10c98b048ea84dcbd0ba15d6fd963a33c21","isMergeCommit":false,"messageTitle":"Create ProfBookParser with minimal implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":0}}},{"hash":"9d51d75eb74c2fc8d73a7c101a0ad3f05860450d","isMergeCommit":false,"messageTitle":"Implement CreateStudentCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":0}}},{"hash":"a83df1f3b52fd661f6323852d25683711917ee40","isMergeCommit":false,"messageTitle":"Add option for id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"379669a15872079dfdd82b3660d3b2c08a85ffef","isMergeCommit":false,"messageTitle":"Add some field parsing method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"b06bb41e987b18f4bdb7d6620f9dc7332f489073","isMergeCommit":false,"messageTitle":"Add description option","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"8e5f35f1bcc6c41762f34a0b9d570a1bc234e327","isMergeCommit":false,"messageTitle":"Implement CreateStudentCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":24}}},{"hash":"5749f671185e7acbf7517914dc973287972a1823","isMergeCommit":false,"messageTitle":"Implement CreateGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":0}}},{"hash":"bbb8e86dc3549aa1c75a0e1af890702f17f427d6","isMergeCommit":false,"messageTitle":"Implement CreateTodoForGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":0}}},{"hash":"e35580c8ffba22cb4adfd9d1672ac1b3ce8069d4","isMergeCommit":false,"messageTitle":"Create test for some command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":0}}},{"hash":"a16b6981789eaafd9e2529ab5f8760803beb45a4","isMergeCommit":false,"messageTitle":"Add new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"9733169a29a94a8eafa9fcc73e95ccd43ceb25e2","isMergeCommit":false,"messageTitle":"Refactor to use update id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":47}}},{"hash":"2594ca62c1336f74a29c054129eabecd5ce8ac1e","isMergeCommit":false,"messageTitle":"Edit test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"4181a33ae9c65df950366ce97986f991894f7352","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":11}}},{"hash":"2f1630a1077934e7bd67f5559b894aaca3eee48a","isMergeCommit":false,"messageTitle":"Fix wrong return type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"f893e36a94b315a5a5a554535cb1f05c4917736b","isMergeCommit":false,"messageTitle":"Implement CreateDeadlineForGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":9}}},{"hash":"663c0584507995f0539cc9b521a808742ca2bc48","isMergeCommit":false,"messageTitle":"Add test for create deadline and todo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}},{"hash":"9ca58c68fb5b8e90babfeb2bc4d09cd2bd04d1aa","isMergeCommit":false,"messageTitle":"Implement MoveStudentToGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":27,"deletions":0}}},{"hash":"0220ce0ae504e4e6d8886b7601cdaaa88605a782","isMergeCommit":false,"messageTitle":"Add more commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"6739e383c2b25677cf09e2c02e667e4a23d2fae8","isMergeCommit":false,"messageTitle":"Add javadoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":10}}},{"hash":"20efad56b29c3e7c4b076053c9fb4165e8edbaea","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"eb197508173abe98af6c200387abfe310bac334c","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":15}}},{"hash":"4657707bfed6304c8ffc888e6b9eabc227750fc0","isMergeCommit":false,"messageTitle":"Refactor command test case to use new format","messageBody":"Old: n/nameValue\nNew: -n nameValue\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":25}}},{"hash":"72cea06f4c2ffdb9910c727b3d9d98ff7d956a90","isMergeCommit":false,"messageTitle":"Fix checkstyle error in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":16}}},{"hash":"052922e8c20a3716d1326341024eb68abe2eb118","isMergeCommit":false,"messageTitle":"Refactor to implement parser for deadline and todo command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":2,"deletions":2}}},{"hash":"536b7a87c85df520bfe9914687c8ccce9df405e5","isMergeCommit":false,"messageTitle":"Fix null object error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bf0d51d8a6fdf460d1dd16ec5a1374c1d61eea62","isMergeCommit":false,"messageTitle":"Pass command format as CommandException msg","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6}}},{"hash":"d330d41cfa22f11301ee526f3f18b444480b702d","isMergeCommit":false,"messageTitle":"Fix bug caused by trailing slash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"aaf594895ee2060557c118637dc769bd6fbbe954","isMergeCommit":false,"messageTitle":"Consider RelativePath id retrieving","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4}}},{"hash":"b35f742d7c7bcde8d6eff2de59889fb797128d69","isMergeCommit":false,"messageTitle":"Implement equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":0}}},{"hash":"8992779fb7d23e23cc940c7e565afa18869b2907","isMergeCommit":false,"messageTitle":"Add unit test for command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":212,"deletions":96}}},{"hash":"dcc8706fc74295bace8485ab75ad639594001d06","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":75,"deletions":49}}}]},{"date":"2023-10-14","commitResults":[{"hash":"fe65d0609576de9c3665dc3ba3c6eab86fa0edc3","isMergeCommit":true,"messageTitle":"Merge pull request #97 from NereusWB922/53-update-parser-class","messageBody":"53-update-parser-class","fileTypesAndContributionMap":{}},{"hash":"8b319c1ef0fedf63d6771fbe41634565d5bd80a4","isMergeCommit":false,"messageTitle":"Create State class to store current app state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":0}}},{"hash":"60812a81c41345b398d762e2c2afaab8f016d658","isMergeCommit":false,"messageTitle":"Create logic manager for profbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":0}}},{"hash":"9a1d70fd0e7d71758c1d120b73aa6a67f56bbcf8","isMergeCommit":false,"messageTitle":"Use ObservableList to store children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"4b3b3c0bfbd5466cc555493d7b50ec0fd96f70ba","isMergeCommit":false,"messageTitle":"Create generic ItemListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":0}}},{"hash":"95f0e9e60b45e9fcffeecedc3aab6ce26147900f","isMergeCommit":false,"messageTitle":"Create Card UI for Group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"109589d38010ba21eaf676d1e8d4106bf7233fe1","isMergeCommit":false,"messageTitle":"Create Card UI for Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"797925647e78ac29d5eb526b1c916d49cdd98067","isMergeCommit":false,"messageTitle":"Add getter for Name field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"052d135e1ce5e9555761fbc9785ff2ae6d510639","isMergeCommit":false,"messageTitle":"Initialize root before creating manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cb37b90ff8673afff51157d69a579c728357416a","isMergeCommit":false,"messageTitle":"Rename getFilteredList method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"88fcbf4b2720cc431e6dcbc1378587e366be501c","isMergeCommit":false,"messageTitle":"Refactor with using newcommands class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"15dab511bbc342f94be56b427d970981a0a61e03","isMergeCommit":false,"messageTitle":"Refactor with new item list panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13}}},{"hash":"647f919f2c6f14b59a2db6e2df89e58860ef6562","isMergeCommit":false,"messageTitle":"Refactor with ProfBook Logic Manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b3b97949707ee77d023e0e4404c968d42a4374db","isMergeCommit":false,"messageTitle":"Refactor Main App with minimal functionality","messageBody":"Need to implement storage in the future.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":71}}},{"hash":"f71e71c72cc6ba6e4c086d3eb34fe0f24494ff19","isMergeCommit":false,"messageTitle":"Add change dir and update list method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":4}}},{"hash":"27351589a35963d40dca753c1bbe682a7a453a19","isMergeCommit":false,"messageTitle":"Refactor command to utilitze State class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":20}}},{"hash":"260cab865dbe3cc59331d64e8f8cb598a1250312","isMergeCommit":false,"messageTitle":"Refactor logic manager to use new command execute","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a6d47b0d166400edfc5d0eb273430378406191be","isMergeCommit":false,"messageTitle":"Implement change directory command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0}}},{"hash":"0b74d577e4787d716779054bb58396ed49697eef","isMergeCommit":false,"messageTitle":"Refactor test cases for updated execute method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":6}}},{"hash":"0d98b8bb6c5044b7acae7c67046ab5490fce8561","isMergeCommit":true,"messageTitle":"Merge pull request #110 from NereusWB922/105-gui-refactor","messageBody":"Refactor GUI","fileTypesAndContributionMap":{}},{"hash":"6dbd3875726b17abdbfecb92a4c9fcca9176d243","isMergeCommit":false,"messageTitle":"Fix bug for resolve .","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"4f5a3309dd77c102c43aec252d0806ae7d173b50","isMergeCommit":false,"messageTitle":"Refactor ItemListPanel to display Displayable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":46}}},{"hash":"619a82657de1c9eba90a35639778e35c2f010f78","isMergeCommit":false,"messageTitle":"Implement toggle children list and task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":16}}},{"hash":"32dea0d52796a6e24ae370f68cc6414030fc2552","isMergeCommit":false,"messageTitle":"Implement Card Ui for Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}},{"hash":"5e9174cefca523df54e42ce7491c026e92024ddc","isMergeCommit":false,"messageTitle":"Implement Card Ui for todo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":0}}},{"hash":"2e1e2371e38863962437265d205642b8ead8648d","isMergeCommit":false,"messageTitle":"Remove exception in getAllTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5}}},{"hash":"3a27f98e5432e8ac4b38be99d25fd643bbe450a6","isMergeCommit":false,"messageTitle":"Refactor to use Displayable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":28}}},{"hash":"0ad565445764dd4071038c479e055277e22ab0f3","isMergeCommit":false,"messageTitle":"Edit message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b7f807e5d8e883d9437b68b7a0e9a149b9ab214c","isMergeCommit":false,"messageTitle":"Implement ShowChildrenListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0}}},{"hash":"de548f698cf2c8f3b2fc0449b93dc1f85ede4a9f","isMergeCommit":false,"messageTitle":"Implement ShowTaskListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0}}},{"hash":"0bb37b80b8a5157b132cd0ced7a47da8872a2b0d","isMergeCommit":false,"messageTitle":"Show children list after cd command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"88029fb11b3b61564287bbfea20b9abf89cec21d","isMergeCommit":false,"messageTitle":"Add ShowTaskListCommand and ShowChildrenListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"fb4b58619dcdc192801ccae5a8c7b43b50e0db55","isMergeCommit":false,"messageTitle":"Enhance GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":37}}},{"hash":"3e569dc3314e250db7faf4a2e0599f0f50c286c6","isMergeCommit":true,"messageTitle":"Merge pull request #112 from NereusWB922/111-enhance-gui","messageBody":"Enhance GUI","fileTypesAndContributionMap":{}},{"hash":"bd61c6b587d4c3bf4c7a25a8272d1e01c45af454","isMergeCommit":false,"messageTitle":"Add default constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":13}}},{"hash":"2bbe730aff2d8df56d8cbbbece1125447ae30254","isMergeCommit":false,"messageTitle":"Throw error for cd to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"60ff19991b73edb9c3b34f62ef180ecdcd704942","isMergeCommit":false,"messageTitle":"Use sample date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}},{"hash":"e37076bbade78907315be33a646f7097d5f0d55f","isMergeCommit":false,"messageTitle":"Add default constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"99ac71f5446f8be817ca60d1a37a64ec6bbf65ce","isMergeCommit":false,"messageTitle":"Add sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":0}}},{"hash":"8817b2bab1b9753d97f7a5d5f2a4af5151d19ec8","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"80d4c5c9480007205527e5928c97a4af045dc473","isMergeCommit":false,"messageTitle":"Add profbook icon","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"d5c2388c4d154c482841edc135907bd8a05ba592","isMergeCommit":false,"messageTitle":"Add design for the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":36}}},{"hash":"d14d39eac3b535e61c90f40d29ea68d6e6d85bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"97f6102a7a2607c25a0ae81f6c4841115b329d65","isMergeCommit":false,"messageTitle":"Fix type error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-16","commitResults":[{"hash":"0ddcb4a57ee50687c169ff49470878f68ffe665c","isMergeCommit":false,"messageTitle":"Refactor children manager and children class","messageBody":"Use a ChildrenAndTaskListManager to represent heirarchy class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":31},"test-code":{"insertions":1,"deletions":10}}},{"hash":"c91c14e0e815847a810c3238788c5003c4e92981","isMergeCommit":false,"messageTitle":"Refactor State an State Manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":388,"deletions":203},"test-code":{"insertions":4,"deletions":2}}},{"hash":"17f1cc75e7c53bfeb5c7bd546d9dc97ef94bdee9","isMergeCommit":false,"messageTitle":"Update command class with updated state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":140}}},{"hash":"a3f60cf10e51bff78f0c9781ca4fe180176779ff","isMergeCommit":false,"messageTitle":"Implement logic for ls command with target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":9}}},{"hash":"8cdb64b4f01911983b63135e4c4eebf4d1e7c685","isMergeCommit":false,"messageTitle":"Implement logic for cat command with target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":9}}},{"hash":"898e190150776989bc6592a53193266c9bc2593e","isMergeCommit":false,"messageTitle":"Add style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":41},"test-code":{"insertions":108,"deletions":112}}}]},{"date":"2023-10-17","commitResults":[{"hash":"49d3ce1db3386bdba97936a20d69d1855f664741","isMergeCommit":true,"messageTitle":"Merge pull request #117 from NgChunMan/109-Update-Help-Command","messageBody":"109 Add HelpCommand, HelpCommandTest and HelpCommandParser","fileTypesAndContributionMap":{}},{"hash":"798fb808d7af626fe4dad9c00d0e1600602285f3","isMergeCommit":false,"messageTitle":"Add style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"aa679b3a36b109477793c8ee8d90d02a851b7c74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ba7058c56fab9b04836bf22d2a2a69275a1df13","isMergeCommit":false,"messageTitle":"Add clone method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"c4b6b4fa101b2f1d7a9af0e780e0fd8bed0a3798","isMergeCommit":false,"messageTitle":"Implement add task to all children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":66}}},{"hash":"88a359bee307c972eb899d26c278f189f3c783ee","isMergeCommit":false,"messageTitle":"Refactor with updated state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":34}}},{"hash":"80f9fc2a43e24cb0f8a450e50a29739291f91e18","isMergeCommit":false,"messageTitle":"Check existance of target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"959afcc29932c0ff14e130a21afdea70ddc82a7a","isMergeCommit":false,"messageTitle":"Refactor test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":12}}},{"hash":"250e7014994ab54bb6d84b23de4281c2509b6502","isMergeCommit":true,"messageTitle":"Merge pull request #118 from NgChunMan/107-Add-EditCommand-to-Command-class","messageBody":"107 Add EditCommand, EditCommandTest, EditCommandParser, HelpCommand, HelpCommandTest","fileTypesAndContributionMap":{}},{"hash":"a962d358e059eb5fb3e93d8871a4d5a86c7cd0be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0478682437334fb9df965feae25b7e7328c9a13","isMergeCommit":false,"messageTitle":"Refactor with updated state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":43}}},{"hash":"9e389f5491b14457351157407f3465670e26b1cd","isMergeCommit":true,"messageTitle":"Merge pull request #120 from NgChunMan/Add-Test-Case-for-CreateTodoCommandTest","messageBody":"Add test cases for CreateTodoCommandTest","fileTypesAndContributionMap":{}},{"hash":"a9c4699fa447caf0711467759cf4fb6487ac8935","isMergeCommit":true,"messageTitle":"Merge pull request #121 from NgChunMan/Add-Test-Case-to-CreateGroupCommandTest","messageBody":"Add test cases to CreateGroupCommandTest","fileTypesAndContributionMap":{}},{"hash":"d7b9ec23e721311e0950fb6262e638c83dd8c3a5","isMergeCommit":true,"messageTitle":"Merge pull request #122 from NgChunMan/Add-Test-Case-to-MoveStudentToGroupCommandTest","messageBody":"Add testcase for MoveStudentToGroupCommand","fileTypesAndContributionMap":{}},{"hash":"3df0d5967fda3769dc35887fd6ff83bd126b4596","isMergeCommit":true,"messageTitle":"Merge pull request #119 from mingyuanc/103-refactor-state-manager","messageBody":"Add testcases for StateManager.java","fileTypesAndContributionMap":{}},{"hash":"ef1e1791a412b2ab5689a4b4c1e2410179d6b62f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c8b9b103d3e617cce5ab56707738cd9ea3d10b5","isMergeCommit":false,"messageTitle":"Remove unuse import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"7c5338e76111b7b7126eff1436e7b8d982719733","isMergeCommit":false,"messageTitle":"Add isValidIndex method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":58}}},{"hash":"d25f055bd4b8ad900411c9575e64ee717a2620de","isMergeCommit":false,"messageTitle":"Change to run time exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9246d13fe13affc0fe5af277e28a43a44b0d43d8","isMergeCommit":false,"messageTitle":"Refactor with updated class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":96,"deletions":188}}},{"hash":"3e0a4bec7b919967b5fc5f1ed854fcab206d4172","isMergeCommit":false,"messageTitle":"Fix command error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"520197411b74d56233ca5fb1dcf27ccc016fcd29","isMergeCommit":false,"messageTitle":"Update list after modification","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"1faf15305b6b79b6f730898dd28271349ed79289","isMergeCommit":false,"messageTitle":"Edit argument check for groupChildOperation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"27db52c2415ee65a6f6e36adad4f608b4bc198b2","isMergeCommit":true,"messageTitle":"Merge pull request #124 from NereusWB922/hotfix-groupChildOperation-checkArgument","messageBody":"Edit argument check for groupChildOperation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"1663649b9402d595924f15ef77fbb89a95c102e7","isMergeCommit":true,"messageTitle":"Merge pull request #126 from mingyuanc/74-release-1.2","messageBody":"V1.2 Release","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"b6a92a643f0f48bf5f592695a83330b6768113bf","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"test-code":{"insertions":0,"deletions":35}}},{"hash":"2758b63c34a9b759fc8fff86849a1abfcfdfe1ed","isMergeCommit":false,"messageTitle":"Close Add matriculation number of students #31","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"fce12f9cbc69c7c10a3d9da3d7cedfe705a25a08","isMergeCommit":false,"messageTitle":"Add getDisplayPath method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"fd5a36b329bac207a10a8b59e47b4ee94335f2ef","isMergeCommit":false,"messageTitle":"Remove dir type related method from relative path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":79}}},{"hash":"4950a4b6ca9468e3552bd46f118177138b237a65","isMergeCommit":false,"messageTitle":"Revert \"Close Add matriculation number of students #31\"","messageBody":"This reverts commit 2758b63c34a9b759fc8fff86849a1abfcfdfe1ed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"294242ad99d236567204ae562124af527d9eb581","isMergeCommit":false,"messageTitle":"Refactor parser to parse path as absolute path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":82},"test-code":{"insertions":23,"deletions":14}}},{"hash":"96e4b1ce28363ce5c90a83a4a1cc171c87f99b94","isMergeCommit":false,"messageTitle":"Refactor command to take in absolute path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":253},"test-code":{"insertions":107,"deletions":88}}}]},{"date":"2023-10-21","commitResults":[{"hash":"43af695dd5a100734da0c8f44081bb0ab65d42f0","isMergeCommit":false,"messageTitle":"Add isShowTaskList method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"06a8f5f2f18e6843907bb03ac963b434ca36317d","isMergeCommit":true,"messageTitle":"Merge pull request #135 from NereusWB922/133-refactor-parser-absolute-target-path","messageBody":"Refactor parser and command class","fileTypesAndContributionMap":{}},{"hash":"8725f4bfeff7492e745c0b3003660cae5dd4788f","isMergeCommit":false,"messageTitle":"Edit id format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"docs":{"insertions":18,"deletions":18},"test-code":{"insertions":86,"deletions":86}}},{"hash":"d93cbdd3970ac0b41a6db40cb828c486dd60c4c2","isMergeCommit":false,"messageTitle":"Edit toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"7eb87af5fd0645bc765e5da70f82e3ce4fcb6ad6","isMergeCommit":false,"messageTitle":"Add new delete task command (rmt)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":0}}},{"hash":"7091e838b9665ca4ffa7599a46e776a37ae92587","isMergeCommit":false,"messageTitle":"Implement getTaskListSize","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"02d7da8f3db28044b3a3b50d06bddad6a6baa2a9","isMergeCommit":false,"messageTitle":"Implement toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"0fdc26d4ceb60cdaedb84b98e6291731796287a9","isMergeCommit":false,"messageTitle":"Add test for deleteTaskCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":146,"deletions":0}}},{"hash":"bf0e4f5983cf70dda4267bbcd2cce7f099acc29e","isMergeCommit":false,"messageTitle":"Add logging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"0ecbc1db67475ab4776bf909a7a20a8124f953cd","isMergeCommit":false,"messageTitle":"Add test for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"624454cd2d9ae508d276c768b4face454cf1f5a3","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-23","commitResults":[{"hash":"8a5962d1f4b0b98593dd93d8cd3ab465d8a9bea3","isMergeCommit":true,"messageTitle":"Merge pull request #136 from NereusWB922/31-add-matriculation-number-for-student","messageBody":"Edit id format","fileTypesAndContributionMap":{}},{"hash":"ced18497fb8744360e177d4f99c73e0c9d3231dc","isMergeCommit":true,"messageTitle":"Merge pull request #137 from NereusWB922/89-remove-task-command","messageBody":"Implement delete task command","fileTypesAndContributionMap":{}}]}],"mingyuanc":[{"date":"2023-09-27","commitResults":[{"hash":"bfad44cef6e36c8d30671f36b4656e370f806e44","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":256,"deletions":65}}},{"hash":"07a0f2c6cd937034f8a77bc36813961e167bd6e7","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2023-09-29","commitResults":[{"hash":"9d9657c1f8ed655b2b99930328ed66882d6b4cc1","isMergeCommit":false,"messageTitle":"Remove AddressBook from UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":45}}},{"hash":"5c91fe95d432f43284164515b96178cb4f61446e","isMergeCommit":false,"messageTitle":"Generate skeleton code for required class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"f922295640ba23b9092092b8afa1feb64e2c8ea8","isMergeCommit":false,"messageTitle":"Add javadoc comments for skeleton code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0}}},{"hash":"47638985b56eee3329c70cc463f7e4aa79d3b5bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 63-Create-Skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1cf37bb5f1b276559bf8d11224cf782c0bda98f","isMergeCommit":false,"messageTitle":"Create boilerplate for class to implement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":193,"deletions":0}}},{"hash":"ae6e6f3a200681d8e2b20447f01fab07c148feb5","isMergeCommit":false,"messageTitle":"Create required exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5}}},{"hash":"3c117918f0a706355fdfc310657df513a6779355","isMergeCommit":false,"messageTitle":"Create parent class for model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":51}}},{"hash":"82f1aa8d2690e27a78a08c92853cdf0641c60d18","isMergeCommit":false,"messageTitle":"Create Group.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":1}}},{"hash":"3d337fbffbfbe672334979c75752c46842415b6b","isMergeCommit":false,"messageTitle":"Create ProfBook.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"1c646acf12065fc83aaea2e1b4e80133140f5d12","isMergeCommit":false,"messageTitle":"Created Student.java with a Name class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":2}}},{"hash":"0c15c647d7c3a3832063766bbd69529f63f5efc1","isMergeCommit":false,"messageTitle":"Create StateManager.java and required logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"2bfadec6e1ea5dd1d62c17449fed37a2a4e5db3f","isMergeCommit":false,"messageTitle":"Update boilerplate for tasklist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8520a92eed9f2ea99be5bd19735011dda0959f49","isMergeCommit":false,"messageTitle":"Add relevant fields to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":242,"deletions":6}}}]},{"date":"2023-09-30","commitResults":[{"hash":"108ddf4c634c8aed5786517d82a47fc02b1bbcb1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 58-implement-profbook-and-related-classes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"63fbc65fd1dfa5478c1c13182fc2b637fca406b0","isMergeCommit":false,"messageTitle":"Rename class to more accurately represent role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":57},"other":{"insertions":14,"deletions":14}}},{"hash":"6a9a001c68a5825822be2831d211a94c06b4893d","isMergeCommit":false,"messageTitle":"Add relevant fields and getters for student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}},{"hash":"e5c7aad2fa0e7355f4d1a12d6f75b3b1cff907c6","isMergeCommit":false,"messageTitle":"Add checks for duplicate child","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"7c7add8a31cc188547e54bd08fbb703d1eac3fab","isMergeCommit":false,"messageTitle":"Refactor code to use Nereus\u0027s Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"444a460ce3347f759ba6b7d15fe66afdbb4edfc7","isMergeCommit":false,"messageTitle":"Implement StateManage to handle changes in state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":372,"deletions":0}}},{"hash":"cb00d22c1e006da19c8cbd2a8ab9b01039e0a68b","isMergeCommit":false,"messageTitle":"Add interfaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":124,"deletions":1}}},{"hash":"d4794c80bf17141edc58c8af5cbe1c1899c7c23c","isMergeCommit":false,"messageTitle":"Fix Checkstyle warnings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":29}}},{"hash":"25ed4387e00e14eff9b3693ad4be5d79e05060de","isMergeCommit":false,"messageTitle":"Update tostring representation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":3}}},{"hash":"cd9155fcc9188e0b005e15141df7ee9788db504d","isMergeCommit":false,"messageTitle":"Add logging for state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"f73844ea594912beffe20110cb61d7f6669096ea","isMergeCommit":false,"messageTitle":"Add Equals to Id.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"7a73c5b036efb2aa4ea3e2fdbda56c7e5d357e73","isMergeCommit":false,"messageTitle":"Add logging and checks for null param","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"939db3cd6a7a775740ef841dfeb1c67ab615da6e","isMergeCommit":false,"messageTitle":"Add operation for num of children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":0}}},{"hash":"9381cdb3bf041c633951abdb18f78590c746ec66","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-01","commitResults":[{"hash":"f9dc7bfcfa8c1e76a11ac8cf8ac5f5c6be6b2759","isMergeCommit":false,"messageTitle":"Implement updateChild method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":0}}},{"hash":"da7a001be3089b59af967cdd822beabe0eed0875","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"b274891fb6b7372f5c5b38e284969180ecde1caa","isMergeCommit":false,"messageTitle":"Implement clone method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":6}}},{"hash":"9b51c9798a767e45de4d7cb7c943764f69de5f66","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":29}}},{"hash":"63de76729cad9108d5599727522297c970e8d1fa","isMergeCommit":false,"messageTitle":"Change ArrayList to List to be more general","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3c17d95f3e4412751a5d4e8dcaa8572bb5676b33","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"97bfd89606d8496cc5d5d180bbd2b9299114b7d6","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"5bcaedc459ebb846f4f6d8edbea293f2660a424f","isMergeCommit":true,"messageTitle":"Merge pull request #85 from mingyuanc/82-add-updateChild-clone","messageBody":"82-add-updateChild-clone","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"65cd324b8c44da2089d87cfbc4604cb702d1c4ee","isMergeCommit":true,"messageTitle":"Merge pull request #88 from NgChunMan/60-create-initial-command-class-skeletons-2","messageBody":"Create initial command class skeletons","fileTypesAndContributionMap":{}},{"hash":"7148f3e573c10c4c57491a91aa35fd70a9309c7e","isMergeCommit":true,"messageTitle":"Merge pull request #87 from zannloo/60-create-initial-command-class-skeletons-1","messageBody":"Fully create initial command class skeletons","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"2eb397c3cac3d89aa128fc646148b1a179d8c867","isMergeCommit":false,"messageTitle":"Implement requested functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"b3d307a64b8e6369dd915329eeb29faa30dd5d20","isMergeCommit":false,"messageTitle":"Refactor Old operations to Task and Child Operation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":171,"deletions":311},"other":{"insertions":26,"deletions":26}}},{"hash":"783e86f0348ff88cebe5bb20d4e8d9730635e193","isMergeCommit":false,"messageTitle":"Fix errors as a result of refactoring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":103},"test-code":{"insertions":27,"deletions":92}}},{"hash":"927f6cf890e99ed8fdde5447078de3f91c2490b4","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2}}},{"hash":"8e27be0073cfddea9f08dd93681e96db239490c0","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}}]},{"date":"2023-10-16","commitResults":[{"hash":"ce6bc031af637ed81a6f3704fdf4d9d789c287f7","isMergeCommit":false,"messageTitle":"Add testcases for StateManager.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":10},"other":{"insertions":2,"deletions":0},"test-code":{"insertions":322,"deletions":0}}},{"hash":"37e56e0c324528d2d5e36c1764690abb3a5076da","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3},"other":{"insertions":0,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"6f00625d05c3c1f2c46eea21968732b34f82a4f1","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f7c2b529ccbe43183e7e85560b5a04afc453f18","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-18","commitResults":[{"hash":"f84537435537d169ce091016d731d498b78ece1c","isMergeCommit":false,"messageTitle":"Amend output jar name","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]}],"Nid21cs":[{"date":"2023-09-27","commitResults":[{"hash":"31dda5f2f676db4aee97f812d9bd9b9f98d50d61","isMergeCommit":false,"messageTitle":"Update DeveleporGuide.md","messageBody":"Updated to add user stories, Glossary, and the use cases as well as the NFRs.\n","fileTypesAndContributionMap":{"docs":{"insertions":76,"deletions":24}}}]},{"date":"2023-09-30","commitResults":[{"hash":"2193240c1cc26ecce1dbc2da112bf53608c70193","isMergeCommit":false,"messageTitle":"Add List of Task objects including ToDo and Deadline as well as Exception class to handle invalid inputs","messageBody":"Added abstract parent class Task with ToDo and Deadline extending from it.\n\nTask objects are stored in an ArrayList within TaskList class.\nSome methods such as Mark, Unmark, Delete, Find and creation of each kind of task is added as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":320,"deletions":0}}},{"hash":"5696eaaf496880d4361bc2e97e87a2915740c828","isMergeCommit":true,"messageTitle":"Merge branch \u002754-Create-Task-Class\u0027","messageBody":"* 54-Create-Task-Class:\n Add List of Task objects including ToDo and Deadline as well as Exception class to handle invalid inputs\n","fileTypesAndContributionMap":{}},{"hash":"cc2114653cba151ccf5feea4dbb742bed1046d0a","isMergeCommit":false,"messageTitle":"Add Task Logic","messageBody":"Added abstract parent class Task with ToDo and Deadline extending from it.\n\nTask objects are stored in an ArrayList within TaskList class.\n\nSome methods such as Mark, Unmark, Delete, Find and creation of each kind of task is added as well\n\nException class created to handle invalid user inputs\n","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":324},"other":{"insertions":1,"deletions":1}}},{"hash":"afea4e4e83eefec6a48cdf8b8e4de0be63d620fe","isMergeCommit":true,"messageTitle":"Merge commit \u002719b7627be00ef8ac5e859595754b5391abe1f592\u0027","messageBody":"* commit \u002719b7627be00ef8ac5e859595754b5391abe1f592\u0027: (22 commits)\n Fix checkstyle\n Add operation for num of children\n Add logging and checks for null param\n Add Equals to Id.java\n Add logging for state manager\n Update tostring representation\n Fix Checkstyle warnings\n Add interfaces\n Implement StateManage to handle changes in state\n Refactor code to use Nereus\u0027s Id class\n Add checks for duplicate child\n Add relevant fields and getters for student\n Rename class to more accurately represent role\n Add relevant fields to student\n Update boilerplate for tasklist\n Create StateManager.java and required logic\n Created Student.java with a Name class\n Create ProfBook.java\n Create Group.java\n Create parent class for model\n ...\n","fileTypesAndContributionMap":{}},{"hash":"e450d3a127f3bccbb90fa34c3b8794a8da128521","isMergeCommit":true,"messageTitle":"Merge commit \u00279badd396d060f98535e77d3553433739f2af2137\u0027","messageBody":"* commit \u00279badd396d060f98535e77d3553433739f2af2137\u0027:\n Update README.md\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"db1905d73a46302f5d889e48ee873bf79f3197bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 54-Create-Task-Class","messageBody":"* master: (52 commits)\n Update README.md\n Update README.md\n Fix checkstyle\n Add operation for num of children\n Add logging and checks for null param\n Add Equals to Id.java\n Add logging for state manager\n Update tostring representation\n Fix Checkstyle warnings\n Add interfaces\n Implement StateManage to handle changes in state\n Refactor code to use Nereus\u0027s Id class\n Add checks for duplicate child\n Add relevant fields and getters for student\n Rename class to more accurately represent role\n Remove dead code\n Fix checkstyle error\n Fix index out of bounds error\n Add tests to cover all methods\n Create unit tests for IdValidator class\n ...\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/model/taskmanager/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"d2bc9375b50e59c7f4fa1a639ca9392be3382c87","isMergeCommit":false,"messageTitle":"Update Exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":43},"other":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-01","commitResults":[{"hash":"0d0ebb5c6f54e6d4ac460106652698cc49f249dc","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb67b67542612b076c2ebfecf38755ac402ee582","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 54-Create-Task-Class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b34cd3587471941e1225fa54d7f02e87ba751490","isMergeCommit":false,"messageTitle":"Update NoSuchTaskException.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"63ba39592c0d753ef9f54d3149c6c18f48494911","isMergeCommit":false,"messageTitle":"Update Task.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"5cf5bc8adb94edf863635f50c708eb58e403bada","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"Added required exception handling as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":30}}}]},{"date":"2023-10-12","commitResults":[{"hash":"8c745f18a6a9c35a22210e8162903b93bd21b576","isMergeCommit":false,"messageTitle":"Add Junit Testing for TaskList","messageBody":"Add testing for TaskList methods and added size method into TaskList for testing purposes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":57,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"6218dc52ed689708b3208be769ce486d9a2faecd","isMergeCommit":false,"messageTitle":"Add Equals method to TaskList","messageBody":"- Checks equality of every object in List both deadline and ToDo\n-\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":0}}},{"hash":"14ab5647bff2f8c9bb283083d438739664fb5f8c","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"Corrected indentation\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"de9ed47f2e482a25834624403e4260e98dfc2c00","isMergeCommit":false,"messageTitle":"Added Duplicate Check method","messageBody":"- remove unnecessary method\n- add method to check for duplicates in a task\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"77d48e1c4b2fc3b2e91873119b223a9540ee7ff0","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"fix checkstyle erros\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7aeffd8a6d998b65fb0672390fffeba287d4cd00","isMergeCommit":true,"messageTitle":"Merge pull request #99 from Nid21cs/98-add-junit-test-to-task-class","messageBody":"98-Add-Junit-Testing-for-TaskList","fileTypesAndContributionMap":{}},{"hash":"618f9c291a62ff0e2a68fda84165421db214194a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into 101-Equals_method-Tasklist","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba0bf3e81f0f5e9e1de044900f24472222659e5b","isMergeCommit":true,"messageTitle":"Merge pull request #102 from Nid21cs/101-Equals_method-Tasklist","messageBody":"Add Equals method to TaskList and related classes","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"2f21cd86cbd2e4fd0f6a8bef5354650936bf55f9","isMergeCommit":true,"messageTitle":"Merge pull request #123 from NereusWB922/111-enhance-gui-2","messageBody":"111-enhance-gui-2","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"NgChunMan":{"docs":31,"functional-code":895,"test-code":286},"zannloo":{"docs":237,"functional-code":474,"test-code":918},"NereusWB922":{"docs":26,"functional-code":4307,"test-code":1132,"other":1},"mingyuanc":{"docs":297,"functional-code":1161,"test-code":240,"other":1},"Nid21cs":{"docs":69,"functional-code":302,"test-code":57}},"authorContributionVariance":{"NgChunMan":102519.625,"zannloo":65841.06,"NereusWB922":390473.44,"mingyuanc":72963.64,"Nid21cs":27238.668},"authorDisplayNameMap":{"NgChunMan":"CS2103T-W15-2 NG C.. MAN","zannloo":"CS2103T-W15-2 LOO ..ZANN","NereusWB922":"CS2103T-W15-2 NERE.. BIN","mingyuanc":"CS2103T-W15-2 CHIN..YUAN","Nid21cs":"CS2103T-W15-2 NIDH..HNAN"}} +{"authorDailyContributionsMap":{"NgChunMan":[{"date":"2023-09-27","commitResults":[{"hash":"faa4a61c00b43c3adb6a77257a385521c205865b","isMergeCommit":false,"messageTitle":"Update UI mockup image and contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"6cf1a4c849133200d531b15c5cf08316aa5a120e","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2023-09-29","commitResults":[{"hash":"d97a38718e0ca3f5e25669b53039ef04d1b4b902","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"36bc60fcb1ecf7911a4764e87d54e40915e21823","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":5}}},{"hash":"d4d5bc63bf0ff462fd5af7925ebdbf9eaeac6241","isMergeCommit":false,"messageTitle":"Update README.md and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}}]},{"date":"2023-09-30","commitResults":[{"hash":"5b7a88a860215616241bbb7319adb954fc23ec1e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"4a44f16c552b41274a2c087e2fcb21979cf2df5b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"9badd396d060f98535e77d3553433739f2af2137","isMergeCommit":true,"messageTitle":"Merge pull request #72 from NgChunMan/Update-README","messageBody":"Update README","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"0a07aa5a6948d3658b4dc279eb0ecf5ff21fde70","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}}]},{"date":"2023-10-02","commitResults":[{"hash":"982fbf9c51c5623e143df3a39f20ab2e2e11515d","isMergeCommit":false,"messageTitle":"Create initial command class skeletons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":363,"deletions":0}}}]},{"date":"2023-10-12","commitResults":[{"hash":"4f4be7710b76274fe7c2b178d8b38326c07b3020","isMergeCommit":false,"messageTitle":"Implement CreateTodoCommand, CreateGroupCommand, MoveStudentToGroupCommand and test cases for these classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":121},"test-code":{"insertions":134,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"1dd50804b55202ca88e10ccf86d73b6186fd7c83","isMergeCommit":false,"messageTitle":"Add catch block to handle exception that may be thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":96}}},{"hash":"0bdb22f16d3e2d756b2bb2508269f3464c2a962e","isMergeCommit":true,"messageTitle":"Merge with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a9c1d06b0333e83febcc8eacbb8ddc394e6cd47f","isMergeCommit":false,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":187}}},{"hash":"b0dfb7033ed80339033be90b50ad79fc1c083849","isMergeCommit":false,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":8}}},{"hash":"4a1daee27f66be5ca107ec72d89af5c56986a606","isMergeCommit":true,"messageTitle":"Update exception message","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c38713dd75ed63a49720940900457955d7ea6092","isMergeCommit":false,"messageTitle":"Update test case file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":13},"test-code":{"insertions":12,"deletions":7}}},{"hash":"2908c9537ceb0bd4cf225d2a00c0787e2053c8b5","isMergeCommit":false,"messageTitle":"Throw CommandException in catch block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":38}}},{"hash":"533944aedef73fd555ac1ea8b2bfb94956b72f63","isMergeCommit":false,"messageTitle":"Throw CommandException in catch block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"341748eff7cb8445c7430b190a72ac1202cfd67a","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"aa2fbde8636985cf1f2896a172443d5ad2b0b6fa","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":13}}},{"hash":"d031619fe08451717197a88a4a1d878c0a15e9b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 60-create-initial-command-class-skeletons-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9800d31f2311a377edabfb0f5301b967a947d1dd","isMergeCommit":false,"messageTitle":"Add deleted method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"65eb8ace2ac6303e49aef2981d2cfe4ca5a0b8f4","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}}]},{"date":"2023-10-14","commitResults":[{"hash":"43d70a6e6bfc3c222936a77d565c21825dc76d8c","isMergeCommit":false,"messageTitle":"Update the implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"22b97ba9a0624925dfb9a2d65763a10f693d46e4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-code","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-15","commitResults":[{"hash":"1d18721a43f953a929dbb7574861f9ddf3466221","isMergeCommit":true,"messageTitle":"Refactor StateManager","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"330f5c24bdcd3bfe6db297dc8ee87a4ccf3c927f","isMergeCommit":false,"messageTitle":"Update the error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":25}}},{"hash":"32d41f79918a74e1cf1d082f0f0b89264df38469","isMergeCommit":false,"messageTitle":"Update HelpCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}}]},{"date":"2023-10-16","commitResults":[{"hash":"062d86346252ed6016dd985ee2eb9f7da46b973f","isMergeCommit":false,"messageTitle":"Add EditCommand and EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":483,"deletions":0},"test-code":{"insertions":93,"deletions":0}}},{"hash":"f96d247ae260d29b98929472cb3a5ea4d2dcb42a","isMergeCommit":false,"messageTitle":"Add HelpCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0}}},{"hash":"0b36393fdc64af4da734fbd5c414cf89ca500efe","isMergeCommit":false,"messageTitle":"Add EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"a47b2e0267b34d790ca85e1d65ca519e28b2348e","isMergeCommit":false,"messageTitle":"Add EditCommandParser to ProfBookParser and javadoc for EditStudentDescriptor and EditGroupDescriptor classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":12}}},{"hash":"2070294d90aa69c778c612a4de213e6b1636f85f","isMergeCommit":false,"messageTitle":"Add HelpCommandTest and update HelpCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":36,"deletions":0}}},{"hash":"9c30e4d5f60ed4d03ae44d7aa9b03c6bcbcc55fa","isMergeCommit":false,"messageTitle":"Remove HelpCommandParser from ProfBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"30c304f4188078c33053ecffe79019d3b9910fa1","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":8}}},{"hash":"0fac334199b9162f9cca4ffaf143928f63059073","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f991eaba905f79849d34d700be72550b8e73e028","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":16}}},{"hash":"6190c79e9cc7ec448dfc3267b6cda334cf125626","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3600651e50703d21200479f6dc434d9403399040","isMergeCommit":false,"messageTitle":"Update error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f7890c6c4c29b12ca0cb468198a8d717bb172b23","isMergeCommit":false,"messageTitle":"Refactor the code by extracting out EditGroupDescriptor and EditStudentDescriptor from EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":295,"deletions":275},"test-code":{"insertions":4,"deletions":4}}},{"hash":"95f400b437cc5aab89dc4d5c65a724f95852a4fa","isMergeCommit":false,"messageTitle":"Add test cases to CreateTodoCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":75,"deletions":16}}},{"hash":"0e2ea66f67548cf7aab62d472905a70f27ba98ce","isMergeCommit":false,"messageTitle":"Add test cases to MoveStudentToGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":70,"deletions":0}}},{"hash":"30bf1f996143effeb65e0543d06f600523488f68","isMergeCommit":false,"messageTitle":"Add test cases to CreateGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"21c17def4642949d9283f1f177fa4f3df6a68a77","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"22fe4d2c101997039af507451c7b972a784f3ef7","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c44b673c131f54b6e6b5d046a5e20b44648a8311","isMergeCommit":true,"messageTitle":"Solve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f06be11689cd6234688b1400b082f845fd5a989f","isMergeCommit":false,"messageTitle":"Add testcases for MoveStudentToGroupCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":35}}},{"hash":"8e36e78ece569e3af482291a2ee455813e921abf","isMergeCommit":true,"messageTitle":"Solve Merge Conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"abcea1f70de52272dbc874f7696dd742b2fc3557","isMergeCommit":false,"messageTitle":"Edit error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"af2089d37e8bdab774cf2f65e95aeb2a99abb946","isMergeCommit":false,"messageTitle":"Edit error message thrown","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"8cd8f7d9c1cae3b63c3025e9faa6725fec5b4716","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Test-Case-to-CreateGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"28711363a744edc1db44dbb3d55dfc069abd53eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Test-Case-to-MoveStudentToGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{}}]}],"zannloo":[{"date":"2023-09-27","commitResults":[{"hash":"580e0ea5b98921d9f17b2293c512f89f1b16e10e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Add details and images of team members.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":25}}},{"hash":"7c0211aafb706dba51a365158e17033532722712","isMergeCommit":false,"messageTitle":"Edit to include email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"071764812046a671065eb2c29dcfc2af3a449e24","isMergeCommit":false,"messageTitle":"Add a skeletal PPP","messageBody":"Include only the headings for the skeletal PPP.\n\"to be added soon\" are placeholders for content.\n","fileTypesAndContributionMap":{"docs":{"insertions":210,"deletions":0}}}]},{"date":"2023-10-01","commitResults":[{"hash":"755aa27b1d3728cc7889788ba24d0effc5ccca48","isMergeCommit":false,"messageTitle":"Create initial command class skeletons","messageBody":"Create a new package, newcommands, for the new command classes (\nCreateDeadlineForStudentCommand, CreateStudentCommand and\nCreateToDoForStudentCommand).\n\nComment out certain unused codes to fix CheckStyle errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":298,"deletions":1}}},{"hash":"50bcee892aa839accc5e78e8bc1ff197f04fc219","isMergeCommit":false,"messageTitle":"Fix CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}}]},{"date":"2023-10-03","commitResults":[{"hash":"ecd823acaa011e7efde1f49dbeea4b34b8d9ab2f","isMergeCommit":false,"messageTitle":"Remove all unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":24}}},{"hash":"3f03db8ce6119b4275f84cce97e3db2553d0ab14","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 60-create-initial-command-class-skeletons-1","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Create initial command class skeletons\n Fix checkstyle\n Fix minor bug\n Change ArrayList to List to be more general\n Remove dead code\n Implement clone method\n Fix minor bugs\n Implement updateChild method\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/newcommands/Command.java\n#\tsrc/main/java/seedu/address/logic/newcommands/CommandResult.java\n#\tsrc/main/java/seedu/address/logic/newcommands/exceptions\n\t/CommandException.java\n","fileTypesAndContributionMap":{}},{"hash":"de835641f06515531aba0f2196b2ec96f276c61e","isMergeCommit":false,"messageTitle":"Fix errors in import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"315cdd697b75fbeb88143b4163a90e1f16bc53ac","isMergeCommit":false,"messageTitle":"Remove unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2023-10-06","commitResults":[{"hash":"c146dc50c1cec145e36d8c04a72f26a99f522895","isMergeCommit":false,"messageTitle":"Implement command classes (CreateDeadlineForStudentCommand, CreateStudentCommand and CreateToDoForStudentCommand) and their respective test cases","messageBody":"Code that is depended on other methods(that are not yet implemented) are\ncommented out.\n\nOther methods such as equals method in AbsolutePath class and duplicate\nmethod in RootOperation class and GroupOperation class.\n\nTest cases for CreateStudentCommand has been commented out due to errors.\nTheequals and toString methods of CreateDeadlineForStudentCommand and\nCreateToDoForStudentCommand have test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":21},"test-code":{"insertions":602,"deletions":1}}},{"hash":"3a925c4243df70173b469c0f642916a1aae44257","isMergeCommit":false,"messageTitle":"Solve failing check on build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-07","commitResults":[{"hash":"4d12730d7a21d49d82a6e6242dadf94367ccdea2","isMergeCommit":true,"messageTitle":"Merge pull request #92 from NereusWB922/90-implement-equals-hashCode-method","messageBody":"Implement equals and hashCode method for Path class","fileTypesAndContributionMap":{}},{"hash":"7ce76b3e532bce179ba7427f5c890836b48a8ada","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Implement equals and hashCode method\n","fileTypesAndContributionMap":{}},{"hash":"daba6c4d1e125ca62621c7137988540809a3c65f","isMergeCommit":false,"messageTitle":"Include methods that require the equals method from Absolute Path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":38,"deletions":32}}}]},{"date":"2023-10-11","commitResults":[{"hash":"08056164ab08c5240d14d7dfec717c609c72517d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Fix checkstyle error\n Update test for updated Id class\n Fix import from wrong package\n Refactor to use updated id class\n Remove checked exception in factory method\n Fix Resolve relative path start with ~/ #86\n Move directory related method to Path parent class\n","fileTypesAndContributionMap":{}},{"hash":"239c4d798ca014af51b1bb0d6f379b7327377abf","isMergeCommit":false,"messageTitle":"Change the Deadline command to handle cases of student and group","messageBody":"Remove all the old classes and make some edits.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":273},"other":{"insertions":48,"deletions":21},"test-code":{"insertions":6,"deletions":83}}}]},{"date":"2023-10-12","commitResults":[{"hash":"ad84dbae52eec7c368cfc6b47216ce6545f9729f","isMergeCommit":true,"messageTitle":"Merge pull request #96 from AY2324S1-CS2103T-W15-2/93-duplicate-method-for-classes","messageBody":"Implement requested functions","fileTypesAndContributionMap":{}},{"hash":"acd4e78ed80cb3a1fb650eb03d78ac136dfe7fde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 57-implement-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Implement requested functions\n","fileTypesAndContributionMap":{}},{"hash":"a05275959bcbc4396626944378a1c05670a176f1","isMergeCommit":false,"messageTitle":"Edits to current command classes and complete test cases.","messageBody":"toString method and test cases for CreateDeadline class when is group\ndirectory is incomplete.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":41},"test-code":{"insertions":445,"deletions":213}}},{"hash":"2264a91c43c335f8379b13b9f0dfc348f39c87d1","isMergeCommit":false,"messageTitle":"Abstract out getDescription method to prevent repeated code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}},{"hash":"8a73c82268c9a8b87dd562cac7245b6a45cbb402","isMergeCommit":false,"messageTitle":"Edits and remove previous uses of Message.format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":55},"test-code":{"insertions":7,"deletions":8}}}]},{"date":"2023-10-13","commitResults":[{"hash":"02d0169282007b1ad6daddedd1876f7491dbd498","isMergeCommit":false,"messageTitle":"Include catch blocks for execute method of 2 commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":43}}},{"hash":"c78ba64f06c047330075a2c74891edd7412e9065","isMergeCommit":false,"messageTitle":"Remove unneccessary exception clauses at the methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":11}}},{"hash":"e9d1e172feef5607e52705906a159c90053d9c41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 57-implement-command-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"815ede70eafd6b86123085aeb7342bb9088ba7b1","isMergeCommit":false,"messageTitle":"Edit to use equal method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":35},"test-code":{"insertions":4,"deletions":11}}},{"hash":"0b07b26a7eef9c4da87b59671341b98d11d6d879","isMergeCommit":false,"messageTitle":"Remove unused import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"e054b1cef1b562a5b024d5f82939d2a71c9aabf4","isMergeCommit":false,"messageTitle":"Remove redundant getDescription method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"240b0ff60fe34e45a59af02eeede42930aad22a2","isMergeCommit":true,"messageTitle":"Merge pull request #91 from zannloo/57-implement-command-class","messageBody":"Implement command classes and their respective test cases","fileTypesAndContributionMap":{}}]},{"date":"2023-10-14","commitResults":[{"hash":"f18f1158e217ce9c50b70be592a4d52b4d82b7ce","isMergeCommit":false,"messageTitle":"Add DeleteForStudentsAndGroupsCommand and relevant test cases","messageBody":"Parser is not updated for this command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0},"test-code":{"insertions":207,"deletions":15}}},{"hash":"57b52e79f6cd0ae52c815907b36052c14bd0d027","isMergeCommit":false,"messageTitle":"Include option to add Deadline task to all Groups or Students","messageBody":"Can only add Deadline task to all Groups if targeted path is a\nRoot Directory.\nCan only add Deadline task to all Students if targeted path is a\nGroup Directory.\n\nEdits to parser are also made. Test cases are not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":19}}},{"hash":"e140959f96ac897fe3cec42afc3f8598afa87281","isMergeCommit":false,"messageTitle":"Include testcase for add deadline for all students in a group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":53,"deletions":3}}}]},{"date":"2023-10-15","commitResults":[{"hash":"69db0e937d97e492a7e602b1909d8c386ce0ed82","isMergeCommit":true,"messageTitle":"Merge pull request #114 from mingyuanc/103-refactor-state-manger","messageBody":"Refactor StateManager","fileTypesAndContributionMap":{}},{"hash":"9aaacf0d6d014b8da68b9a88d27f5304411d9dad","isMergeCommit":false,"messageTitle":"Edits to CreateDeadlineCommandParser","messageBody":"Test cases for CreateDeadlineCommandParser still does not work.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":13,"deletions":12}}},{"hash":"d514a1e9a10d96c0bf6c3048174aba889a5306d8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 106-add-delete-commmand-for-command-class","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Remove unused imports\n Update javadocs\n Fix errors as a result of refactoring\n Refactor Old operations to Task and Child Operation\n Enhance GUI\n Add ShowTaskListCommand and ShowChildrenListCommand\n Show children list after cd command\n Implement ShowTaskListCommand\n Implement ShowChildrenListCommand\n Edit message usage\n Refactor to use Displayable\n Remove exception in getAllTask\n Implement Card Ui for todo\n Implement Card Ui for Deadline\n Implement toggle children list and task list\n Refactor ItemListPanel to display Displayable\n Fix bug for resolve .\n","fileTypesAndContributionMap":{}},{"hash":"4311c93e8bcbe1e01d5c67d810bbb614860837c6","isMergeCommit":false,"messageTitle":"Edits to DeleteForStudentsAndGroupsCommand and test cases for new StateManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":24},"test-code":{"insertions":11,"deletions":9}}},{"hash":"a9e1c6d132a7a1752dfa5e60cbb63b25de04adad","isMergeCommit":false,"messageTitle":"Edits to CreateStudentCommandTest and fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":14,"deletions":101}}},{"hash":"3c3c9be2460175884bc245408bc452e963e08ddb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 108-add-tasks-for-all-students","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Remove unused imports\n Update javadocs\n Fix errors as a result of refactoring\n Refactor Old operations to Task and Child Operation\n Enhance GUI\n Add ShowTaskListCommand and ShowChildrenListCommand\n Show children list after cd command\n Implement ShowTaskListCommand\n Implement ShowChildrenListCommand\n Edit message usage\n Refactor to use Displayable\n Remove exception in getAllTask\n Implement Card Ui for todo\n Implement Card Ui for Deadline\n Implement toggle children list and task list\n Refactor ItemListPanel to display Displayable\n Fix bug for resolve .\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/newcommands/CreateDeadlineCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"91e4ea89f582bae13be23da8789d605ca952c9f4","isMergeCommit":false,"messageTitle":"Update to CreateDeadline so it can create deadline for all students or groups","messageBody":"CreateDeadlineCommand is suppose to:\n- create deadlines for all students in group if user specifies \"allStu\"\nand is in a group directory.\n- create deadlines for all groups in root if user specifies \"allGrp\"\nand is in a root directory.\n\nCurrently, there are errors in the if else loop in CreateDeadlineCommand\nclass which leads to errors in CreateDeadlineCommandTest. Testcase for\nCreateDeadlineCommandParser also have errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":56},"test-code":{"insertions":55,"deletions":18}}},{"hash":"ce834d6c21dbad505074a6cc42b222c2166bf6c8","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7},"test-code":{"insertions":9,"deletions":11}}},{"hash":"8053dc995ff1ec2fdd3a722989dfeac56c70fae1","isMergeCommit":false,"messageTitle":"Comment out failed testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":27}}},{"hash":"0e834b86730cf901d5be1450b380296d7202faa0","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":27}}}]},{"date":"2023-10-16","commitResults":[{"hash":"7010f09fa6515ae33ae8142443e14a8a80d52e27","isMergeCommit":false,"messageTitle":"Implement parser for DeleteForStudentsAndGroupsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":16,"deletions":0}}},{"hash":"b892709abed079f6081276ae961a4ac59db023e4","isMergeCommit":false,"messageTitle":"Still having errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":9}}},{"hash":"d4f2f02d5cc682cfd28ca2413b77259ca844ca7b","isMergeCommit":false,"messageTitle":"Include the case for DeleteForStudentsAndGroupsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"2b9d50d1b6e7ee4c17a5815a0b3802e237402de3","isMergeCommit":false,"messageTitle":"Add test cases for CreateDeadlineCommand to test the categories","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":11},"test-code":{"insertions":91,"deletions":62}}},{"hash":"af44cca220647c4c24b015eb8054f276956c535b","isMergeCommit":false,"messageTitle":"Fix CreateDeadlineCommandParserTest errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":8,"deletions":8}}},{"hash":"a04913f8253338f44c62af7d476f45210499df97","isMergeCommit":false,"messageTitle":"Edit to CreateTodo Command to be able to add all students and group","messageBody":"Updates to parser and test cases accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":15},"test-code":{"insertions":110,"deletions":0}}},{"hash":"5f57f36ca38c509bc7e8f4ae89657c4e21b25bfe","isMergeCommit":false,"messageTitle":"Edits to CreateDeadlineCommandParser and CreateTodoCommandParser to remove usage of set","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":36},"test-code":{"insertions":6,"deletions":4}}},{"hash":"e9379848aa5eb76ebd5e9fbf46a7257a456c44b9","isMergeCommit":false,"messageTitle":"Edits to DeleteForStudentsAndGroupsCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"d08f533d8e051a52ea11a282c1f9c541b58d2ba0","isMergeCommit":true,"messageTitle":"Merge pull request #113 from zannloo/106-add-delete-commmand-for-command-class","messageBody":"Add DeleteForStudentsAndGroupsCommand and relevant test cases","fileTypesAndContributionMap":{}},{"hash":"6ccb1db323fa845886059e71202ea059c0245ca7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zannloo/tp into 108-add-tasks-for-all-students","messageBody":"* \u0027master\u0027 of https://github.com/zannloo/tp:\n Edits to DeleteForStudentsAndGroupsCommandParser class\n Include the case for DeleteForStudentsAndGroupsCommand\n Implement parser for DeleteForStudentsAndGroupsCommand\n Edits to CreateStudentCommandTest and fix checkstyle\n Edits to DeleteForStudentsAndGroupsCommand and test cases for new StateManager\n Add DeleteForStudentsAndGroupsCommand and relevant test cases\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/model/statemanager/StateManager.java\n#\tsrc/test/java/seedu/address/testutil/GroupBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"519591ddb9b066638af3d6d7af70745d0a229b1a","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9e5131107aa1cfccaaa9697e44243b6fb5c5ade0","isMergeCommit":true,"messageTitle":"Merge pull request #115 from zannloo/108-add-tasks-for-all-students","messageBody":"Add tasks for all students and groups","fileTypesAndContributionMap":{}}]},{"date":"2023-10-22","commitResults":[{"hash":"77287ef4cad5f445f4030506244089b2875afbf2","isMergeCommit":false,"messageTitle":"Edit message usage format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":8}}},{"hash":"40abda0a346f60ac1e0a18797cb4cb1495e8ea75","isMergeCommit":false,"messageTitle":"Update test case for DeleteForStudentsAndGroups","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"29b0ac8be6f082438b1126cd247caab117439bfa","isMergeCommit":false,"messageTitle":"Update test case for CreateStudent","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"84bd21f36ee546647b8a44197ef15dc70a3274fc","isMergeCommit":false,"messageTitle":"Update return message for CreateDeadlineCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-24","commitResults":[{"hash":"7b060dd00ea5a16779a7bbb0c76ac8defe10ebad","isMergeCommit":true,"messageTitle":"Merge pull request #127 from mingyuanc/mingyuan-ppp","messageBody":"Update PPP","fileTypesAndContributionMap":{}}]}],"NereusWB922":[{"date":"2023-09-27","commitResults":[{"hash":"a717d4b22967319e908e4d37abee2b535526cf5d","isMergeCommit":false,"messageTitle":"Update source link for CI status and codecov","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ce04751d9a19f4d28c0df8a117be3f75b4564af9","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zannloo/38-update-aboutus-page","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"c9db007632cca4d3c5b0aa6e5d616573e09e94ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 40-update-site-wide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc7bf2a06c754f21a7db56a5e0971522c15d125d","isMergeCommit":true,"messageTitle":"Merge pull request #44 from NereusWB922/40-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"109fa82ee75f1141625a0230d745e2db04ab43e9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from mingyuanc/41-update-userguide-page","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"75b71a547fbe1e2f0954eb3109a8efa1efc0056c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from zannloo/42-create-skeletal-PPP","messageBody":"Add a skeletal PPP","fileTypesAndContributionMap":{}},{"hash":"a8bb21595feed7afeff6f57c1034bef80688ec7d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Nid21cs/43-Update-Developer_Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"da074a20ee0bb8c2b0c8a51a14d96caff525afa4","isMergeCommit":true,"messageTitle":"Merge pull request #49 from NgChunMan/39-Update-README-page","messageBody":"Update UI mockup image and contents","fileTypesAndContributionMap":{}},{"hash":"d24d64e02926307649af2b4d8dc261697f361f89","isMergeCommit":false,"messageTitle":"Sync index.md with README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":4}}},{"hash":"4622a83d696c5545f94f11443d7694ac1a5f44d2","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"5c3c7c8d365996ed8bf6fe0a05a917fa0d0f590d","isMergeCommit":true,"messageTitle":"Merge branch \u002750-update-indexmd\u0027 of github.com:NereusWB922/tp into 50-update-indexmd","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73d45b5a367aae87bba898584349e903fe05db2d","isMergeCommit":false,"messageTitle":"Edit index.md title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1ae6ef0f455b102d6889d983fa68930ea13271bb","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NereusWB922/50-update-indexmd","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2023-09-29","commitResults":[{"hash":"39dd79a0c1c5aa9b7ecd257d926a95d926e83a68","isMergeCommit":false,"messageTitle":"Update link to release","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"69c62130ab110a77d15989411ab1efea7cf6771f","isMergeCommit":true,"messageTitle":"Merge pull request #64 from mingyuanc/41-update-userguide-page","messageBody":"Remove AddressBook from UserGuide","tags":["v1.1"],"fileTypesAndContributionMap":{}},{"hash":"7a5799f29e0aef294ac8bee603788cf91dc1b03e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from mingyuanc/63-Create-Skeleton","messageBody":"Generate skeleton code for required class","fileTypesAndContributionMap":{}},{"hash":"f5ee69b055120aa87b8daa1319b4e830aa36cb4c","isMergeCommit":false,"messageTitle":"Implement PathElement class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":0}}},{"hash":"8cce660d83c95d52db77e28422bfe8aed6238d48","isMergeCommit":false,"messageTitle":"Implement absolute path class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":0}}},{"hash":"4c45308235d8abc0c18a72ff7bf2260836900bd9","isMergeCommit":false,"messageTitle":"Create unit test for AbsolutePath","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":0}}},{"hash":"081441394eb7538ee1a38376cabb1cc5ac9c9b59","isMergeCommit":false,"messageTitle":"Abstract the constructor to parent class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":57}}},{"hash":"4ebc41b4155fd0d543fe993906f1ba16ee84307e","isMergeCommit":false,"messageTitle":"Create RelativePath class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"ff277e4139badc1494fc796220c951d5e46883d4","isMergeCommit":false,"messageTitle":"Abstract element appending logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":28}}},{"hash":"691cc647c74526a588a196846a7634520bc37447","isMergeCommit":false,"messageTitle":"Add resolve method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"97177d794ab6835493dc62a7b5cfb3c4ed9f4718","isMergeCommit":false,"messageTitle":"Add unit test for resolve method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":5}}},{"hash":"5ddc5f8d196543c40c5dbe0bf864c5a33ddcd894","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":7}}},{"hash":"bd841e601121188503b9c18410604eb032920ad9","isMergeCommit":false,"messageTitle":"Refactor path element to store under package path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}},{"hash":"d745381397c5640d0e2ab2a196d36df13cc93f8d","isMergeCommit":false,"messageTitle":"Add method to check directory type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"8bff8b0251d4422518a545032a334cb92ccf4b9e","isMergeCommit":false,"messageTitle":"Add javadoc comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"d78a1177fad8853eaa6dc3931a9b58111a87b0df","isMergeCommit":false,"messageTitle":"Create Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"9a83eac06a90751988969fd7eaf23aad82f19f3c","isMergeCommit":false,"messageTitle":"Create IdValidator class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"b58fb7f38713b0d43ac78063559c8ffcf0acf9b5","isMergeCommit":false,"messageTitle":"Create InvalidIdException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"e610d09ead1682e32a6c80562388bae74f5182ba","isMergeCommit":false,"messageTitle":"Add GroupId and StudentId class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":0}}},{"hash":"e3beaa615fcf30014888c067947849ab899166c2","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":8}}},{"hash":"9a76291792290c8ecd24a7de635fad57e01fb257","isMergeCommit":false,"messageTitle":"Change Id factory method to static method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ea1878f71308e56c46b18b3bb445954d933b90b9","isMergeCommit":true,"messageTitle":"Merge pull request #68 from NgChunMan/Update-index.md-and-README.md-content","messageBody":"Update README.md and index.md","fileTypesAndContributionMap":{}},{"hash":"a6ed62f0385a3f27b3a38e715ad81bfc71461ec8","isMergeCommit":false,"messageTitle":"Add unsupportedPathOperationException","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"61e42289cdb03a577d681c605d680b48da7b2657","isMergeCommit":false,"messageTitle":"Add student ID and group ID getter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":0}}},{"hash":"3f6e37ac6d293bcdb77917bb05634f6a03b98448","isMergeCommit":false,"messageTitle":"Refactor parsing logic to use id validator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"83d2baabdb190da6db41a948c2df65cc607eeb83","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"9d6d59118c806b4ba8787fab1c83d636c8849eab","isMergeCommit":false,"messageTitle":"Edit test cases for AbsolutePath class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":17}}},{"hash":"2f6624e3589e5bf079b2d887db528b9c1c3f3139","isMergeCommit":false,"messageTitle":"Create unit tests for IdValidator class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"427201754ab0a3552dd24c975651a08cd3ea5c72","isMergeCommit":false,"messageTitle":"Add tests to cover all methods","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":117,"deletions":0}}},{"hash":"78a888ea089fd70c51da2be74a60f5e40150b869","isMergeCommit":false,"messageTitle":"Fix index out of bounds error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6cc80bc8c1fff6e8685ccf47020b2535caf967b3","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":20}}},{"hash":"6921432eec060763dbbac17dbaef4030bc8600d9","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":17}}}]},{"date":"2023-09-30","commitResults":[{"hash":"ff327464d5767e9c9a0419f1f9f338edd882b376","isMergeCommit":true,"messageTitle":"Merge pull request #69 from NereusWB922/62-create-path-class","messageBody":"Create path class #62","fileTypesAndContributionMap":{}},{"hash":"19b7627be00ef8ac5e859595754b5391abe1f592","isMergeCommit":true,"messageTitle":"Merge pull request #66 from mingyuanc/58-implement-profbook-and-related-classes","messageBody":"Create StateManager.java and required logic","fileTypesAndContributionMap":{}}]},{"date":"2023-10-01","commitResults":[{"hash":"66b9eaf30cfd59d87223f6678cf58a30fce2ed69","isMergeCommit":true,"messageTitle":"Merge pull request #79 from NgChunMan/Update-README","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"f700fe49eeac9ca8966c048525c2e21bed8d0ac6","isMergeCommit":true,"messageTitle":"Merge pull request #71 from Nid21cs/54-Create-Task-Class","messageBody":"Add List of Task objects including ToDo and Deadline as well as Excep…","fileTypesAndContributionMap":{}}]},{"date":"2023-10-07","commitResults":[{"hash":"99f663ffde002e5bee562a533b89ce03a7fc70bb","isMergeCommit":false,"messageTitle":"Implement equals and hashCode method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":0}}}]},{"date":"2023-10-11","commitResults":[{"hash":"5092682e3e0cb2e00411e7cb37b2b121fad8cbf3","isMergeCommit":false,"messageTitle":"Move directory related method to Path parent class","messageBody":"These methods shared within Path subclasses.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":71}}},{"hash":"fa94eceee00db8c42d446bedd94414374172e942","isMergeCommit":false,"messageTitle":"Fix Resolve relative path start with ~/ #86","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"00e1cce997407d3a793346534969c3e5c8fcca2e","isMergeCommit":false,"messageTitle":"Remove checked exception in factory method","messageBody":"Instead, we should check if valid before construct.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":61}}},{"hash":"46202bb38367ca78655aeaf75f039dda92397aca","isMergeCommit":false,"messageTitle":"Refactor to use updated id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":24}}},{"hash":"bb3500c7867e287505277accb7384a9e0057f515","isMergeCommit":false,"messageTitle":"Fix import from wrong package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"b21f576a2c8bf441398452c549e1628c36696c68","isMergeCommit":false,"messageTitle":"Update test for updated Id class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"ba8ac9eaee2753888ec394ebc5d8e204ae5e1eb0","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"e0f0e88f3fac6b31493a9e620fcba09413101674","isMergeCommit":true,"messageTitle":"Merge pull request #95 from NereusWB922/94-fix-path-and-id-class","messageBody":"Fix #86 #94","fileTypesAndContributionMap":{}}]},{"date":"2023-10-13","commitResults":[{"hash":"0e017af263bb57a68feec2c6e5f553f599b708e8","isMergeCommit":true,"messageTitle":"Merge pull request #100 from NgChunMan/60-create-initial-command-class-skeletons-2","messageBody":"Implement CreateTodoCommand, CreateGroupCommand, MoveStudentToGroupCommand and test case for these classes.","fileTypesAndContributionMap":{}},{"hash":"16ad3e146ca55de546f8ae8be538f84b5069d4c5","isMergeCommit":false,"messageTitle":"Add Option class to replace Prefix class","messageBody":"Include both long name and short name of the option.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"5eeba74ad3709cfe5af8b1ff3055387f69ca73b4","isMergeCommit":false,"messageTitle":"Refactor to use Option class","messageBody":"Add logic to check for occurance of short name.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":68}}},{"hash":"41443569173272294fb590f759230066066c75e7","isMergeCommit":false,"messageTitle":"Refactor to use Option class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":97},"test-code":{"insertions":70,"deletions":70}}},{"hash":"c08e1c5808bb6f1a4ff8f859d8a128b439b50b34","isMergeCommit":false,"messageTitle":"Modify test for ArgumentTokenizer","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":80,"deletions":54}}},{"hash":"7363732f91364d7dada7cf13c4c32aee44478638","isMergeCommit":false,"messageTitle":"Fix #86","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"e03031792999df782aae7fadacbbfae67a2d3f76","isMergeCommit":false,"messageTitle":"Add more test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}},{"hash":"b788ed4f0d04c3172d6334611b9cf57e7aee49b9","isMergeCommit":false,"messageTitle":"Create Parser interface for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"89e16efd8f0b60052d55dbb00426c5fb723b083d","isMergeCommit":false,"messageTitle":"Create ParserUtil for new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0}}},{"hash":"6623d10c98b048ea84dcbd0ba15d6fd963a33c21","isMergeCommit":false,"messageTitle":"Create ProfBookParser with minimal implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":0}}},{"hash":"9d51d75eb74c2fc8d73a7c101a0ad3f05860450d","isMergeCommit":false,"messageTitle":"Implement CreateStudentCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":0}}},{"hash":"a83df1f3b52fd661f6323852d25683711917ee40","isMergeCommit":false,"messageTitle":"Add option for id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"379669a15872079dfdd82b3660d3b2c08a85ffef","isMergeCommit":false,"messageTitle":"Add some field parsing method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"b06bb41e987b18f4bdb7d6620f9dc7332f489073","isMergeCommit":false,"messageTitle":"Add description option","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"8e5f35f1bcc6c41762f34a0b9d570a1bc234e327","isMergeCommit":false,"messageTitle":"Implement CreateStudentCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":24}}},{"hash":"5749f671185e7acbf7517914dc973287972a1823","isMergeCommit":false,"messageTitle":"Implement CreateGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":0}}},{"hash":"bbb8e86dc3549aa1c75a0e1af890702f17f427d6","isMergeCommit":false,"messageTitle":"Implement CreateTodoForGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":0}}},{"hash":"e35580c8ffba22cb4adfd9d1672ac1b3ce8069d4","isMergeCommit":false,"messageTitle":"Create test for some command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":0}}},{"hash":"a16b6981789eaafd9e2529ab5f8760803beb45a4","isMergeCommit":false,"messageTitle":"Add new commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"9733169a29a94a8eafa9fcc73e95ccd43ceb25e2","isMergeCommit":false,"messageTitle":"Refactor to use update id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":47}}},{"hash":"2594ca62c1336f74a29c054129eabecd5ce8ac1e","isMergeCommit":false,"messageTitle":"Edit test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"4181a33ae9c65df950366ce97986f991894f7352","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":11}}},{"hash":"2f1630a1077934e7bd67f5559b894aaca3eee48a","isMergeCommit":false,"messageTitle":"Fix wrong return type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"f893e36a94b315a5a5a554535cb1f05c4917736b","isMergeCommit":false,"messageTitle":"Implement CreateDeadlineForGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":9}}},{"hash":"663c0584507995f0539cc9b521a808742ca2bc48","isMergeCommit":false,"messageTitle":"Add test for create deadline and todo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}},{"hash":"9ca58c68fb5b8e90babfeb2bc4d09cd2bd04d1aa","isMergeCommit":false,"messageTitle":"Implement MoveStudentToGroupCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":27,"deletions":0}}},{"hash":"0220ce0ae504e4e6d8886b7601cdaaa88605a782","isMergeCommit":false,"messageTitle":"Add more commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"6739e383c2b25677cf09e2c02e667e4a23d2fae8","isMergeCommit":false,"messageTitle":"Add javadoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":10}}},{"hash":"20efad56b29c3e7c4b076053c9fb4165e8edbaea","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"eb197508173abe98af6c200387abfe310bac334c","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":15}}},{"hash":"4657707bfed6304c8ffc888e6b9eabc227750fc0","isMergeCommit":false,"messageTitle":"Refactor command test case to use new format","messageBody":"Old: n/nameValue\nNew: -n nameValue\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":25}}},{"hash":"72cea06f4c2ffdb9910c727b3d9d98ff7d956a90","isMergeCommit":false,"messageTitle":"Fix checkstyle error in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":16}}},{"hash":"052922e8c20a3716d1326341024eb68abe2eb118","isMergeCommit":false,"messageTitle":"Refactor to implement parser for deadline and todo command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":2,"deletions":2}}},{"hash":"536b7a87c85df520bfe9914687c8ccce9df405e5","isMergeCommit":false,"messageTitle":"Fix null object error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bf0d51d8a6fdf460d1dd16ec5a1374c1d61eea62","isMergeCommit":false,"messageTitle":"Pass command format as CommandException msg","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6}}},{"hash":"d330d41cfa22f11301ee526f3f18b444480b702d","isMergeCommit":false,"messageTitle":"Fix bug caused by trailing slash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"aaf594895ee2060557c118637dc769bd6fbbe954","isMergeCommit":false,"messageTitle":"Consider RelativePath id retrieving","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4}}},{"hash":"b35f742d7c7bcde8d6eff2de59889fb797128d69","isMergeCommit":false,"messageTitle":"Implement equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":0}}},{"hash":"8992779fb7d23e23cc940c7e565afa18869b2907","isMergeCommit":false,"messageTitle":"Add unit test for command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":212,"deletions":96}}},{"hash":"dcc8706fc74295bace8485ab75ad639594001d06","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":75,"deletions":49}}}]},{"date":"2023-10-14","commitResults":[{"hash":"fe65d0609576de9c3665dc3ba3c6eab86fa0edc3","isMergeCommit":true,"messageTitle":"Merge pull request #97 from NereusWB922/53-update-parser-class","messageBody":"53-update-parser-class","fileTypesAndContributionMap":{}},{"hash":"8b319c1ef0fedf63d6771fbe41634565d5bd80a4","isMergeCommit":false,"messageTitle":"Create State class to store current app state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":0}}},{"hash":"60812a81c41345b398d762e2c2afaab8f016d658","isMergeCommit":false,"messageTitle":"Create logic manager for profbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":0}}},{"hash":"9a1d70fd0e7d71758c1d120b73aa6a67f56bbcf8","isMergeCommit":false,"messageTitle":"Use ObservableList to store children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"4b3b3c0bfbd5466cc555493d7b50ec0fd96f70ba","isMergeCommit":false,"messageTitle":"Create generic ItemListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":0}}},{"hash":"95f0e9e60b45e9fcffeecedc3aab6ce26147900f","isMergeCommit":false,"messageTitle":"Create Card UI for Group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"109589d38010ba21eaf676d1e8d4106bf7233fe1","isMergeCommit":false,"messageTitle":"Create Card UI for Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"797925647e78ac29d5eb526b1c916d49cdd98067","isMergeCommit":false,"messageTitle":"Add getter for Name field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"052d135e1ce5e9555761fbc9785ff2ae6d510639","isMergeCommit":false,"messageTitle":"Initialize root before creating manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cb37b90ff8673afff51157d69a579c728357416a","isMergeCommit":false,"messageTitle":"Rename getFilteredList method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"88fcbf4b2720cc431e6dcbc1378587e366be501c","isMergeCommit":false,"messageTitle":"Refactor with using newcommands class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"15dab511bbc342f94be56b427d970981a0a61e03","isMergeCommit":false,"messageTitle":"Refactor with new item list panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13}}},{"hash":"647f919f2c6f14b59a2db6e2df89e58860ef6562","isMergeCommit":false,"messageTitle":"Refactor with ProfBook Logic Manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"b3b97949707ee77d023e0e4404c968d42a4374db","isMergeCommit":false,"messageTitle":"Refactor Main App with minimal functionality","messageBody":"Need to implement storage in the future.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":71}}},{"hash":"f71e71c72cc6ba6e4c086d3eb34fe0f24494ff19","isMergeCommit":false,"messageTitle":"Add change dir and update list method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":4}}},{"hash":"27351589a35963d40dca753c1bbe682a7a453a19","isMergeCommit":false,"messageTitle":"Refactor command to utilitze State class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":20}}},{"hash":"260cab865dbe3cc59331d64e8f8cb598a1250312","isMergeCommit":false,"messageTitle":"Refactor logic manager to use new command execute","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a6d47b0d166400edfc5d0eb273430378406191be","isMergeCommit":false,"messageTitle":"Implement change directory command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0}}},{"hash":"0b74d577e4787d716779054bb58396ed49697eef","isMergeCommit":false,"messageTitle":"Refactor test cases for updated execute method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":6}}},{"hash":"0d98b8bb6c5044b7acae7c67046ab5490fce8561","isMergeCommit":true,"messageTitle":"Merge pull request #110 from NereusWB922/105-gui-refactor","messageBody":"Refactor GUI","fileTypesAndContributionMap":{}},{"hash":"6dbd3875726b17abdbfecb92a4c9fcca9176d243","isMergeCommit":false,"messageTitle":"Fix bug for resolve .","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"4f5a3309dd77c102c43aec252d0806ae7d173b50","isMergeCommit":false,"messageTitle":"Refactor ItemListPanel to display Displayable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":46}}},{"hash":"619a82657de1c9eba90a35639778e35c2f010f78","isMergeCommit":false,"messageTitle":"Implement toggle children list and task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":16}}},{"hash":"32dea0d52796a6e24ae370f68cc6414030fc2552","isMergeCommit":false,"messageTitle":"Implement Card Ui for Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}},{"hash":"5e9174cefca523df54e42ce7491c026e92024ddc","isMergeCommit":false,"messageTitle":"Implement Card Ui for todo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":0}}},{"hash":"2e1e2371e38863962437265d205642b8ead8648d","isMergeCommit":false,"messageTitle":"Remove exception in getAllTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":5}}},{"hash":"3a27f98e5432e8ac4b38be99d25fd643bbe450a6","isMergeCommit":false,"messageTitle":"Refactor to use Displayable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":28}}},{"hash":"0ad565445764dd4071038c479e055277e22ab0f3","isMergeCommit":false,"messageTitle":"Edit message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b7f807e5d8e883d9437b68b7a0e9a149b9ab214c","isMergeCommit":false,"messageTitle":"Implement ShowChildrenListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0}}},{"hash":"de548f698cf2c8f3b2fc0449b93dc1f85ede4a9f","isMergeCommit":false,"messageTitle":"Implement ShowTaskListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":0}}},{"hash":"0bb37b80b8a5157b132cd0ced7a47da8872a2b0d","isMergeCommit":false,"messageTitle":"Show children list after cd command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"88029fb11b3b61564287bbfea20b9abf89cec21d","isMergeCommit":false,"messageTitle":"Add ShowTaskListCommand and ShowChildrenListCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"fb4b58619dcdc192801ccae5a8c7b43b50e0db55","isMergeCommit":false,"messageTitle":"Enhance GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":37}}},{"hash":"3e569dc3314e250db7faf4a2e0599f0f50c286c6","isMergeCommit":true,"messageTitle":"Merge pull request #112 from NereusWB922/111-enhance-gui","messageBody":"Enhance GUI","fileTypesAndContributionMap":{}},{"hash":"bd61c6b587d4c3bf4c7a25a8272d1e01c45af454","isMergeCommit":false,"messageTitle":"Add default constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":13}}},{"hash":"2bbe730aff2d8df56d8cbbbece1125447ae30254","isMergeCommit":false,"messageTitle":"Throw error for cd to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"60ff19991b73edb9c3b34f62ef180ecdcd704942","isMergeCommit":false,"messageTitle":"Use sample date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}},{"hash":"e37076bbade78907315be33a646f7097d5f0d55f","isMergeCommit":false,"messageTitle":"Add default constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"99ac71f5446f8be817ca60d1a37a64ec6bbf65ce","isMergeCommit":false,"messageTitle":"Add sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":0}}},{"hash":"8817b2bab1b9753d97f7a5d5f2a4af5151d19ec8","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"80d4c5c9480007205527e5928c97a4af045dc473","isMergeCommit":false,"messageTitle":"Add profbook icon","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-15","commitResults":[{"hash":"d5c2388c4d154c482841edc135907bd8a05ba592","isMergeCommit":false,"messageTitle":"Add design for the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":36}}},{"hash":"d14d39eac3b535e61c90f40d29ea68d6e6d85bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"97f6102a7a2607c25a0ae81f6c4841115b329d65","isMergeCommit":false,"messageTitle":"Fix type error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2023-10-16","commitResults":[{"hash":"0ddcb4a57ee50687c169ff49470878f68ffe665c","isMergeCommit":false,"messageTitle":"Refactor children manager and children class","messageBody":"Use a ChildrenAndTaskListManager to represent heirarchy class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":31},"test-code":{"insertions":1,"deletions":10}}},{"hash":"c91c14e0e815847a810c3238788c5003c4e92981","isMergeCommit":false,"messageTitle":"Refactor State an State Manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":388,"deletions":203},"test-code":{"insertions":4,"deletions":2}}},{"hash":"17f1cc75e7c53bfeb5c7bd546d9dc97ef94bdee9","isMergeCommit":false,"messageTitle":"Update command class with updated state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":140}}},{"hash":"a3f60cf10e51bff78f0c9781ca4fe180176779ff","isMergeCommit":false,"messageTitle":"Implement logic for ls command with target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":9}}},{"hash":"8cdb64b4f01911983b63135e4c4eebf4d1e7c685","isMergeCommit":false,"messageTitle":"Implement logic for cat command with target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":9}}},{"hash":"898e190150776989bc6592a53193266c9bc2593e","isMergeCommit":false,"messageTitle":"Add style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":41},"test-code":{"insertions":108,"deletions":112}}}]},{"date":"2023-10-17","commitResults":[{"hash":"49d3ce1db3386bdba97936a20d69d1855f664741","isMergeCommit":true,"messageTitle":"Merge pull request #117 from NgChunMan/109-Update-Help-Command","messageBody":"109 Add HelpCommand, HelpCommandTest and HelpCommandParser","fileTypesAndContributionMap":{}},{"hash":"798fb808d7af626fe4dad9c00d0e1600602285f3","isMergeCommit":false,"messageTitle":"Add style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"aa679b3a36b109477793c8ee8d90d02a851b7c74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ba7058c56fab9b04836bf22d2a2a69275a1df13","isMergeCommit":false,"messageTitle":"Add clone method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"c4b6b4fa101b2f1d7a9af0e780e0fd8bed0a3798","isMergeCommit":false,"messageTitle":"Implement add task to all children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":66}}},{"hash":"88a359bee307c972eb899d26c278f189f3c783ee","isMergeCommit":false,"messageTitle":"Refactor with updated state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":34}}},{"hash":"80f9fc2a43e24cb0f8a450e50a29739291f91e18","isMergeCommit":false,"messageTitle":"Check existance of target path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"959afcc29932c0ff14e130a21afdea70ddc82a7a","isMergeCommit":false,"messageTitle":"Refactor test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":12}}},{"hash":"250e7014994ab54bb6d84b23de4281c2509b6502","isMergeCommit":true,"messageTitle":"Merge pull request #118 from NgChunMan/107-Add-EditCommand-to-Command-class","messageBody":"107 Add EditCommand, EditCommandTest, EditCommandParser, HelpCommand, HelpCommandTest","fileTypesAndContributionMap":{}},{"hash":"a962d358e059eb5fb3e93d8871a4d5a86c7cd0be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0478682437334fb9df965feae25b7e7328c9a13","isMergeCommit":false,"messageTitle":"Refactor with updated state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":43}}},{"hash":"9e389f5491b14457351157407f3465670e26b1cd","isMergeCommit":true,"messageTitle":"Merge pull request #120 from NgChunMan/Add-Test-Case-for-CreateTodoCommandTest","messageBody":"Add test cases for CreateTodoCommandTest","fileTypesAndContributionMap":{}},{"hash":"a9c4699fa447caf0711467759cf4fb6487ac8935","isMergeCommit":true,"messageTitle":"Merge pull request #121 from NgChunMan/Add-Test-Case-to-CreateGroupCommandTest","messageBody":"Add test cases to CreateGroupCommandTest","fileTypesAndContributionMap":{}},{"hash":"d7b9ec23e721311e0950fb6262e638c83dd8c3a5","isMergeCommit":true,"messageTitle":"Merge pull request #122 from NgChunMan/Add-Test-Case-to-MoveStudentToGroupCommandTest","messageBody":"Add testcase for MoveStudentToGroupCommand","fileTypesAndContributionMap":{}},{"hash":"3df0d5967fda3769dc35887fd6ff83bd126b4596","isMergeCommit":true,"messageTitle":"Merge pull request #119 from mingyuanc/103-refactor-state-manager","messageBody":"Add testcases for StateManager.java","fileTypesAndContributionMap":{}},{"hash":"ef1e1791a412b2ab5689a4b4c1e2410179d6b62f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 111-enhance-gui-2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c8b9b103d3e617cce5ab56707738cd9ea3d10b5","isMergeCommit":false,"messageTitle":"Remove unuse import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"7c5338e76111b7b7126eff1436e7b8d982719733","isMergeCommit":false,"messageTitle":"Add isValidIndex method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":58}}},{"hash":"d25f055bd4b8ad900411c9575e64ee717a2620de","isMergeCommit":false,"messageTitle":"Change to run time exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9246d13fe13affc0fe5af277e28a43a44b0d43d8","isMergeCommit":false,"messageTitle":"Refactor with updated class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":96,"deletions":188}}},{"hash":"3e0a4bec7b919967b5fc5f1ed854fcab206d4172","isMergeCommit":false,"messageTitle":"Fix command error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"520197411b74d56233ca5fb1dcf27ccc016fcd29","isMergeCommit":false,"messageTitle":"Update list after modification","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"1faf15305b6b79b6f730898dd28271349ed79289","isMergeCommit":false,"messageTitle":"Edit argument check for groupChildOperation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"27db52c2415ee65a6f6e36adad4f608b4bc198b2","isMergeCommit":true,"messageTitle":"Merge pull request #124 from NereusWB922/hotfix-groupChildOperation-checkArgument","messageBody":"Edit argument check for groupChildOperation","fileTypesAndContributionMap":{}}]},{"date":"2023-10-18","commitResults":[{"hash":"366ca7508c720a507526942e1d4c454a64f4d4cb","isMergeCommit":false,"messageTitle":"Update PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":25}}},{"hash":"57d366361b17421c39151d7993721a807419c2e3","isMergeCommit":false,"messageTitle":"Add new line to EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1663649b9402d595924f15ef77fbb89a95c102e7","isMergeCommit":true,"messageTitle":"Merge pull request #126 from mingyuanc/74-release-1.2","messageBody":"V1.2 Release","fileTypesAndContributionMap":{}}]},{"date":"2023-10-20","commitResults":[{"hash":"b6a92a643f0f48bf5f592695a83330b6768113bf","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"test-code":{"insertions":0,"deletions":35}}},{"hash":"2758b63c34a9b759fc8fff86849a1abfcfdfe1ed","isMergeCommit":false,"messageTitle":"Close Add matriculation number of students #31","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"fce12f9cbc69c7c10a3d9da3d7cedfe705a25a08","isMergeCommit":false,"messageTitle":"Add getDisplayPath method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"fd5a36b329bac207a10a8b59e47b4ee94335f2ef","isMergeCommit":false,"messageTitle":"Remove dir type related method from relative path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":79}}},{"hash":"4950a4b6ca9468e3552bd46f118177138b237a65","isMergeCommit":false,"messageTitle":"Revert \"Close Add matriculation number of students #31\"","messageBody":"This reverts commit 2758b63c34a9b759fc8fff86849a1abfcfdfe1ed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"294242ad99d236567204ae562124af527d9eb581","isMergeCommit":false,"messageTitle":"Refactor parser to parse path as absolute path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":82},"test-code":{"insertions":23,"deletions":14}}},{"hash":"96e4b1ce28363ce5c90a83a4a1cc171c87f99b94","isMergeCommit":false,"messageTitle":"Refactor command to take in absolute path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":253},"test-code":{"insertions":107,"deletions":88}}}]},{"date":"2023-10-21","commitResults":[{"hash":"43af695dd5a100734da0c8f44081bb0ab65d42f0","isMergeCommit":false,"messageTitle":"Add isShowTaskList method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"06a8f5f2f18e6843907bb03ac963b434ca36317d","isMergeCommit":true,"messageTitle":"Merge pull request #135 from NereusWB922/133-refactor-parser-absolute-target-path","messageBody":"Refactor parser and command class","fileTypesAndContributionMap":{}},{"hash":"8725f4bfeff7492e745c0b3003660cae5dd4788f","isMergeCommit":false,"messageTitle":"Edit id format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"docs":{"insertions":18,"deletions":18},"test-code":{"insertions":86,"deletions":86}}},{"hash":"d93cbdd3970ac0b41a6db40cb828c486dd60c4c2","isMergeCommit":false,"messageTitle":"Edit toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"7eb87af5fd0645bc765e5da70f82e3ce4fcb6ad6","isMergeCommit":false,"messageTitle":"Add new delete task command (rmt)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":0}}},{"hash":"7091e838b9665ca4ffa7599a46e776a37ae92587","isMergeCommit":false,"messageTitle":"Implement getTaskListSize","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}},{"hash":"02d7da8f3db28044b3a3b50d06bddad6a6baa2a9","isMergeCommit":false,"messageTitle":"Implement toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"0fdc26d4ceb60cdaedb84b98e6291731796287a9","isMergeCommit":false,"messageTitle":"Add test for deleteTaskCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":146,"deletions":0}}},{"hash":"bf0e4f5983cf70dda4267bbcd2cce7f099acc29e","isMergeCommit":false,"messageTitle":"Add logging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"0ecbc1db67475ab4776bf909a7a20a8124f953cd","isMergeCommit":false,"messageTitle":"Add test for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"624454cd2d9ae508d276c768b4face454cf1f5a3","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2023-10-23","commitResults":[{"hash":"8a5962d1f4b0b98593dd93d8cd3ab465d8a9bea3","isMergeCommit":true,"messageTitle":"Merge pull request #136 from NereusWB922/31-add-matriculation-number-for-student","messageBody":"Edit id format","fileTypesAndContributionMap":{}},{"hash":"ced18497fb8744360e177d4f99c73e0c9d3231dc","isMergeCommit":true,"messageTitle":"Merge pull request #137 from NereusWB922/89-remove-task-command","messageBody":"Implement delete task command","fileTypesAndContributionMap":{}}]}],"mingyuanc":[{"date":"2023-09-27","commitResults":[{"hash":"bfad44cef6e36c8d30671f36b4656e370f806e44","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":256,"deletions":65}}},{"hash":"07a0f2c6cd937034f8a77bc36813961e167bd6e7","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2023-09-29","commitResults":[{"hash":"9d9657c1f8ed655b2b99930328ed66882d6b4cc1","isMergeCommit":false,"messageTitle":"Remove AddressBook from UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":45}}},{"hash":"5c91fe95d432f43284164515b96178cb4f61446e","isMergeCommit":false,"messageTitle":"Generate skeleton code for required class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"f922295640ba23b9092092b8afa1feb64e2c8ea8","isMergeCommit":false,"messageTitle":"Add javadoc comments for skeleton code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0}}},{"hash":"47638985b56eee3329c70cc463f7e4aa79d3b5bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 63-Create-Skeleton","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1cf37bb5f1b276559bf8d11224cf782c0bda98f","isMergeCommit":false,"messageTitle":"Create boilerplate for class to implement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":193,"deletions":0}}},{"hash":"ae6e6f3a200681d8e2b20447f01fab07c148feb5","isMergeCommit":false,"messageTitle":"Create required exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5}}},{"hash":"3c117918f0a706355fdfc310657df513a6779355","isMergeCommit":false,"messageTitle":"Create parent class for model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":51}}},{"hash":"82f1aa8d2690e27a78a08c92853cdf0641c60d18","isMergeCommit":false,"messageTitle":"Create Group.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":1}}},{"hash":"3d337fbffbfbe672334979c75752c46842415b6b","isMergeCommit":false,"messageTitle":"Create ProfBook.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"1c646acf12065fc83aaea2e1b4e80133140f5d12","isMergeCommit":false,"messageTitle":"Created Student.java with a Name class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":2}}},{"hash":"0c15c647d7c3a3832063766bbd69529f63f5efc1","isMergeCommit":false,"messageTitle":"Create StateManager.java and required logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"2bfadec6e1ea5dd1d62c17449fed37a2a4e5db3f","isMergeCommit":false,"messageTitle":"Update boilerplate for tasklist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8520a92eed9f2ea99be5bd19735011dda0959f49","isMergeCommit":false,"messageTitle":"Add relevant fields to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":242,"deletions":6}}}]},{"date":"2023-09-30","commitResults":[{"hash":"108ddf4c634c8aed5786517d82a47fc02b1bbcb1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 58-implement-profbook-and-related-classes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"63fbc65fd1dfa5478c1c13182fc2b637fca406b0","isMergeCommit":false,"messageTitle":"Rename class to more accurately represent role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":57},"other":{"insertions":14,"deletions":14}}},{"hash":"6a9a001c68a5825822be2831d211a94c06b4893d","isMergeCommit":false,"messageTitle":"Add relevant fields and getters for student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}},{"hash":"e5c7aad2fa0e7355f4d1a12d6f75b3b1cff907c6","isMergeCommit":false,"messageTitle":"Add checks for duplicate child","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"7c7add8a31cc188547e54bd08fbb703d1eac3fab","isMergeCommit":false,"messageTitle":"Refactor code to use Nereus\u0027s Id class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"444a460ce3347f759ba6b7d15fe66afdbb4edfc7","isMergeCommit":false,"messageTitle":"Implement StateManage to handle changes in state","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":372,"deletions":0}}},{"hash":"cb00d22c1e006da19c8cbd2a8ab9b01039e0a68b","isMergeCommit":false,"messageTitle":"Add interfaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":124,"deletions":1}}},{"hash":"d4794c80bf17141edc58c8af5cbe1c1899c7c23c","isMergeCommit":false,"messageTitle":"Fix Checkstyle warnings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":29}}},{"hash":"25ed4387e00e14eff9b3693ad4be5d79e05060de","isMergeCommit":false,"messageTitle":"Update tostring representation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":3}}},{"hash":"cd9155fcc9188e0b005e15141df7ee9788db504d","isMergeCommit":false,"messageTitle":"Add logging for state manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"f73844ea594912beffe20110cb61d7f6669096ea","isMergeCommit":false,"messageTitle":"Add Equals to Id.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"7a73c5b036efb2aa4ea3e2fdbda56c7e5d357e73","isMergeCommit":false,"messageTitle":"Add logging and checks for null param","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"939db3cd6a7a775740ef841dfeb1c67ab615da6e","isMergeCommit":false,"messageTitle":"Add operation for num of children","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":0}}},{"hash":"9381cdb3bf041c633951abdb18f78590c746ec66","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-01","commitResults":[{"hash":"f9dc7bfcfa8c1e76a11ac8cf8ac5f5c6be6b2759","isMergeCommit":false,"messageTitle":"Implement updateChild method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":0}}},{"hash":"da7a001be3089b59af967cdd822beabe0eed0875","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"b274891fb6b7372f5c5b38e284969180ecde1caa","isMergeCommit":false,"messageTitle":"Implement clone method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":6}}},{"hash":"9b51c9798a767e45de4d7cb7c943764f69de5f66","isMergeCommit":false,"messageTitle":"Remove dead code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":29}}},{"hash":"63de76729cad9108d5599727522297c970e8d1fa","isMergeCommit":false,"messageTitle":"Change ArrayList to List to be more general","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3c17d95f3e4412751a5d4e8dcaa8572bb5676b33","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"97bfd89606d8496cc5d5d180bbd2b9299114b7d6","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"5bcaedc459ebb846f4f6d8edbea293f2660a424f","isMergeCommit":true,"messageTitle":"Merge pull request #85 from mingyuanc/82-add-updateChild-clone","messageBody":"82-add-updateChild-clone","fileTypesAndContributionMap":{}}]},{"date":"2023-10-03","commitResults":[{"hash":"65cd324b8c44da2089d87cfbc4604cb702d1c4ee","isMergeCommit":true,"messageTitle":"Merge pull request #88 from NgChunMan/60-create-initial-command-class-skeletons-2","messageBody":"Create initial command class skeletons","fileTypesAndContributionMap":{}},{"hash":"7148f3e573c10c4c57491a91aa35fd70a9309c7e","isMergeCommit":true,"messageTitle":"Merge pull request #87 from zannloo/60-create-initial-command-class-skeletons-1","messageBody":"Fully create initial command class skeletons","fileTypesAndContributionMap":{}}]},{"date":"2023-10-12","commitResults":[{"hash":"2eb397c3cac3d89aa128fc646148b1a179d8c867","isMergeCommit":false,"messageTitle":"Implement requested functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":0}}}]},{"date":"2023-10-15","commitResults":[{"hash":"b3d307a64b8e6369dd915329eeb29faa30dd5d20","isMergeCommit":false,"messageTitle":"Refactor Old operations to Task and Child Operation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":171,"deletions":311},"other":{"insertions":26,"deletions":26}}},{"hash":"783e86f0348ff88cebe5bb20d4e8d9730635e193","isMergeCommit":false,"messageTitle":"Fix errors as a result of refactoring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":103},"test-code":{"insertions":27,"deletions":92}}},{"hash":"927f6cf890e99ed8fdde5447078de3f91c2490b4","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2}}},{"hash":"8e27be0073cfddea9f08dd93681e96db239490c0","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}}]},{"date":"2023-10-16","commitResults":[{"hash":"ce6bc031af637ed81a6f3704fdf4d9d789c287f7","isMergeCommit":false,"messageTitle":"Add testcases for StateManager.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":10},"other":{"insertions":2,"deletions":0},"test-code":{"insertions":322,"deletions":0}}},{"hash":"37e56e0c324528d2d5e36c1764690abb3a5076da","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3},"other":{"insertions":0,"deletions":2}}}]},{"date":"2023-10-17","commitResults":[{"hash":"6f00625d05c3c1f2c46eea21968732b34f82a4f1","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f7c2b529ccbe43183e7e85560b5a04afc453f18","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3f2a4575bf36c824332ba220e2d872c31e6e38d2","isMergeCommit":false,"messageTitle":"Update PPP","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":21}}}]},{"date":"2023-10-18","commitResults":[{"hash":"f84537435537d169ce091016d731d498b78ece1c","isMergeCommit":false,"messageTitle":"Amend output jar name","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"0d431aebd40d3856bd8daa4177af428c6eaae2b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mingyuan-ppp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c3a90e685c804a65ccf0c14f585b4fe8d500134b","isMergeCommit":false,"messageTitle":"Update mingyuanc.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":17}}}]},{"date":"2023-10-24","commitResults":[{"hash":"69e64de5de4c221531e2716aa306551a7b913287","isMergeCommit":true,"messageTitle":"Merge pull request #125 from NereusWB922/73-update-ppp","messageBody":"Update PPP","fileTypesAndContributionMap":{}},{"hash":"47446d6ed94c4400cb2a708b47c29d28692ff18c","isMergeCommit":true,"messageTitle":"Merge pull request #138 from zannloo/131-update-error-message-zann","messageBody":"131 Update error message","fileTypesAndContributionMap":{}}]}],"Nid21cs":[{"date":"2023-09-27","commitResults":[{"hash":"31dda5f2f676db4aee97f812d9bd9b9f98d50d61","isMergeCommit":false,"messageTitle":"Update DeveleporGuide.md","messageBody":"Updated to add user stories, Glossary, and the use cases as well as the NFRs.\n","fileTypesAndContributionMap":{"docs":{"insertions":76,"deletions":24}}}]},{"date":"2023-09-30","commitResults":[{"hash":"2193240c1cc26ecce1dbc2da112bf53608c70193","isMergeCommit":false,"messageTitle":"Add List of Task objects including ToDo and Deadline as well as Exception class to handle invalid inputs","messageBody":"Added abstract parent class Task with ToDo and Deadline extending from it.\n\nTask objects are stored in an ArrayList within TaskList class.\nSome methods such as Mark, Unmark, Delete, Find and creation of each kind of task is added as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":320,"deletions":0}}},{"hash":"5696eaaf496880d4361bc2e97e87a2915740c828","isMergeCommit":true,"messageTitle":"Merge branch \u002754-Create-Task-Class\u0027","messageBody":"* 54-Create-Task-Class:\n Add List of Task objects including ToDo and Deadline as well as Exception class to handle invalid inputs\n","fileTypesAndContributionMap":{}},{"hash":"cc2114653cba151ccf5feea4dbb742bed1046d0a","isMergeCommit":false,"messageTitle":"Add Task Logic","messageBody":"Added abstract parent class Task with ToDo and Deadline extending from it.\n\nTask objects are stored in an ArrayList within TaskList class.\n\nSome methods such as Mark, Unmark, Delete, Find and creation of each kind of task is added as well\n\nException class created to handle invalid user inputs\n","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":324},"other":{"insertions":1,"deletions":1}}},{"hash":"afea4e4e83eefec6a48cdf8b8e4de0be63d620fe","isMergeCommit":true,"messageTitle":"Merge commit \u002719b7627be00ef8ac5e859595754b5391abe1f592\u0027","messageBody":"* commit \u002719b7627be00ef8ac5e859595754b5391abe1f592\u0027: (22 commits)\n Fix checkstyle\n Add operation for num of children\n Add logging and checks for null param\n Add Equals to Id.java\n Add logging for state manager\n Update tostring representation\n Fix Checkstyle warnings\n Add interfaces\n Implement StateManage to handle changes in state\n Refactor code to use Nereus\u0027s Id class\n Add checks for duplicate child\n Add relevant fields and getters for student\n Rename class to more accurately represent role\n Add relevant fields to student\n Update boilerplate for tasklist\n Create StateManager.java and required logic\n Created Student.java with a Name class\n Create ProfBook.java\n Create Group.java\n Create parent class for model\n ...\n","fileTypesAndContributionMap":{}},{"hash":"e450d3a127f3bccbb90fa34c3b8794a8da128521","isMergeCommit":true,"messageTitle":"Merge commit \u00279badd396d060f98535e77d3553433739f2af2137\u0027","messageBody":"* commit \u00279badd396d060f98535e77d3553433739f2af2137\u0027:\n Update README.md\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"db1905d73a46302f5d889e48ee873bf79f3197bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 54-Create-Task-Class","messageBody":"* master: (52 commits)\n Update README.md\n Update README.md\n Fix checkstyle\n Add operation for num of children\n Add logging and checks for null param\n Add Equals to Id.java\n Add logging for state manager\n Update tostring representation\n Fix Checkstyle warnings\n Add interfaces\n Implement StateManage to handle changes in state\n Refactor code to use Nereus\u0027s Id class\n Add checks for duplicate child\n Add relevant fields and getters for student\n Rename class to more accurately represent role\n Remove dead code\n Fix checkstyle error\n Fix index out of bounds error\n Add tests to cover all methods\n Create unit tests for IdValidator class\n ...\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/model/taskmanager/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"d2bc9375b50e59c7f4fa1a639ca9392be3382c87","isMergeCommit":false,"messageTitle":"Update Exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":43},"other":{"insertions":1,"deletions":1}}}]},{"date":"2023-10-01","commitResults":[{"hash":"0d0ebb5c6f54e6d4ac460106652698cc49f249dc","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb67b67542612b076c2ebfecf38755ac402ee582","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 54-Create-Task-Class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b34cd3587471941e1225fa54d7f02e87ba751490","isMergeCommit":false,"messageTitle":"Update NoSuchTaskException.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"63ba39592c0d753ef9f54d3149c6c18f48494911","isMergeCommit":false,"messageTitle":"Update Task.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"5cf5bc8adb94edf863635f50c708eb58e403bada","isMergeCommit":false,"messageTitle":"Fixed checkstyle errors","messageBody":"Added required exception handling as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":30}}}]},{"date":"2023-10-12","commitResults":[{"hash":"8c745f18a6a9c35a22210e8162903b93bd21b576","isMergeCommit":false,"messageTitle":"Add Junit Testing for TaskList","messageBody":"Add testing for TaskList methods and added size method into TaskList for testing purposes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":57,"deletions":0}}}]},{"date":"2023-10-13","commitResults":[{"hash":"6218dc52ed689708b3208be769ce486d9a2faecd","isMergeCommit":false,"messageTitle":"Add Equals method to TaskList","messageBody":"- Checks equality of every object in List both deadline and ToDo\n-\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":0}}},{"hash":"14ab5647bff2f8c9bb283083d438739664fb5f8c","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"Corrected indentation\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"de9ed47f2e482a25834624403e4260e98dfc2c00","isMergeCommit":false,"messageTitle":"Added Duplicate Check method","messageBody":"- remove unnecessary method\n- add method to check for duplicates in a task\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"77d48e1c4b2fc3b2e91873119b223a9540ee7ff0","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"fix checkstyle erros\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7aeffd8a6d998b65fb0672390fffeba287d4cd00","isMergeCommit":true,"messageTitle":"Merge pull request #99 from Nid21cs/98-add-junit-test-to-task-class","messageBody":"98-Add-Junit-Testing-for-TaskList","fileTypesAndContributionMap":{}},{"hash":"618f9c291a62ff0e2a68fda84165421db214194a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into 101-Equals_method-Tasklist","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba0bf3e81f0f5e9e1de044900f24472222659e5b","isMergeCommit":true,"messageTitle":"Merge pull request #102 from Nid21cs/101-Equals_method-Tasklist","messageBody":"Add Equals method to TaskList and related classes","fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"2f21cd86cbd2e4fd0f6a8bef5354650936bf55f9","isMergeCommit":true,"messageTitle":"Merge pull request #123 from NereusWB922/111-enhance-gui-2","messageBody":"111-enhance-gui-2","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"NgChunMan":{"docs":31,"functional-code":895,"test-code":286},"zannloo":{"docs":188,"functional-code":545,"test-code":920},"NereusWB922":{"docs":91,"functional-code":4304,"test-code":1132,"other":1},"mingyuanc":{"docs":382,"functional-code":1160,"test-code":240,"other":1},"Nid21cs":{"docs":69,"functional-code":302,"test-code":57}},"authorContributionVariance":{"NgChunMan":99762.07,"zannloo":63916.234,"NereusWB922":380152.53,"mingyuanc":70504.49,"Nid21cs":26459.46},"authorDisplayNameMap":{"NgChunMan":"CS2103T-W15-2 NG C.. MAN","zannloo":"CS2103T-W15-2 LOO ..ZANN","NereusWB922":"CS2103T-W15-2 NERE.. BIN","mingyuanc":"CS2103T-W15-2 CHIN..YUAN","Nid21cs":"CS2103T-W15-2 NIDH..HNAN"}} diff --git a/archive.zip b/archive.zip index e9d26c88..36ae7411 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 b744481b..95d12c9c 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,76 +1,76 @@ -Oct 24, 2023 12:51:50 AM reposense.system.LogsManager addFileHandler +Oct 24, 2023 3:33:14 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 24, 2023 12:51:50 AM reposense.parser.CsvParser validateHeader +Oct 24, 2023 3:33:14 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 24, 2023 12:51:51 AM reposense.parser.CsvParser validateHeader +Oct 24, 2023 3:33:15 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 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias cxo05 found. The alias will belong to the last author - cxo05 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias inez kok found. The alias will belong to the last author - inezkok -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias inez kok found. The alias will belong to the last author - inezkok -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias cxo05 found. The alias will belong to the last author - cxo05 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Oct 24, 2023 12:51:51 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 24, 2023 3:33:15 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Oct 24, 2023 12:51:51 AM reposense.parser.CsvParser validateHeader +Oct 24, 2023 3:33:15 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 24, 2023 12:51:51 AM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 24, 2023 3:33:15 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 @@ -86,1771 +86,1771 @@ 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 24, 2023 12:51:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W16-1/tp.git... +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F12-3/tp.git... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F12-4/tp.git... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W16-1/tp.git... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W16-2/tp.git... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W16-1/tp.git to complete... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F12-3/tp.git to complete... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F12-4/tp.git to complete... -Oct 24, 2023 12:51:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W16-2/tp.git to complete... -Oct 24, 2023 12:51:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F12-4/tp.git to complete... +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F12-4/tp.git completed! -Oct 24, 2023 12:51:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W10-1/tp.git... -Oct 24, 2023 12:51:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:33:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... -Oct 24, 2023 12:51:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W10-1/tp.git to complete... -Oct 24, 2023 12:51:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:33:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:51:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W16-1/tp.git completed! -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W10-2/tp.git... -Oct 24, 2023 12:51:54 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:33:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [2/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W10-2/tp.git to complete... -Oct 24, 2023 12:51:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:51:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F12-3/tp.git completed! -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W10-3/tp.git... -Oct 24, 2023 12:51:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W10-3/tp.git to complete... -Oct 24, 2023 12:51:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... +Oct 24, 2023 3:33:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W16-2/tp.git completed! -Oct 24, 2023 12:51:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W16-4/tp.git... -Oct 24, 2023 12:51:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W16-4/tp.git to complete... -Oct 24, 2023 12:51:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-1/tp.git completed! -Oct 24, 2023 12:51:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W16-3/tp.git... -Oct 24, 2023 12:51:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W16-3/tp.git to complete... -Oct 24, 2023 12:51:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W16-4/tp.git completed! -Oct 24, 2023 12:51:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F12-1/tp.git... -Oct 24, 2023 12:51:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F12-1/tp.git to complete... -Oct 24, 2023 12:51:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-2/tp.git completed! -Oct 24, 2023 12:51:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-3/tp.git completed! +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F12-2/tp.git... -Oct 24, 2023 12:51:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F12-2/tp.git to complete... -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W16-3/tp.git completed! -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-2/tp.git completed! +Oct 24, 2023 3:33:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T10-4/tp.git... -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T10-4/tp.git to complete... -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F12-1/tp.git completed! -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T10-2/tp.git... -Oct 24, 2023 12:51:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T10-2/tp.git to complete... -Oct 24, 2023 12:52:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... -Oct 24, 2023 12:52:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F12-2/tp.git completed! -Oct 24, 2023 12:52:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W15-1/tp.git... -Oct 24, 2023 12:52:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W16-3/tp.git completed! +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W15-1/tp.git to complete... -Oct 24, 2023 12:52:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... -Oct 24, 2023 12:52:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master) completed! -Oct 24, 2023 12:52:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... -Oct 24, 2023 12:52:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... -Oct 24, 2023 12:52:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... -Oct 24, 2023 12:52:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-4/tp.git completed! -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W15-3/tp.git... -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W15-3/tp.git to complete... -Oct 24, 2023 12:52:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master) completed! -Oct 24, 2023 12:52:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... -Oct 24, 2023 12:52:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-2/tp.git completed! -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-4/tp.git completed! +Oct 24, 2023 3:33:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-W14-2/tp.git... -Oct 24, 2023 12:52:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-W14-2/tp.git to complete... -Oct 24, 2023 12:52:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-1/tp.git completed! -Oct 24, 2023 12:52:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... +Oct 24, 2023 3:33:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master)... +Oct 24, 2023 3:33:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-2/tp.git completed! +Oct 24, 2023 3:33:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T15-4/tp.git... -Oct 24, 2023 12:52:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T15-4/tp.git to complete... -Oct 24, 2023 12:52:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-1/tp.git (master) completed! +Oct 24, 2023 3:33:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-3/tp.git completed! -Oct 24, 2023 12:52:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T15-2/tp.git... -Oct 24, 2023 12:52:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T15-2/tp.git to complete... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-3/tp.git completed! -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-1/tp.git completed! +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W17-2/tp.git... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W17-2/tp.git to complete... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-W14-2/tp.git completed! -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F11-2/tp.git... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F11-2/tp.git to complete... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... +Oct 24, 2023 3:33:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master)... +Oct 24, 2023 3:33:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T15-4/tp.git completed! -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W08-1/tp.git... -Oct 24, 2023 12:52:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W08-1/tp.git to complete... -Oct 24, 2023 12:52:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... -Oct 24, 2023 12:52:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... -Oct 24, 2023 12:52:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-4/tp.git (master) completed! +Oct 24, 2023 3:33:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... +Oct 24, 2023 3:33:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... +Oct 24, 2023 3:33:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T15-2/tp.git completed! -Oct 24, 2023 12:52:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... -Oct 24, 2023 12:52:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F08-0/tp.git... -Oct 24, 2023 12:52:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F08-0/tp.git to complete... -Oct 24, 2023 12:52:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master) completed! -Oct 24, 2023 12:52:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... -Oct 24, 2023 12:52:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... -Oct 24, 2023 12:52:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... -Oct 24, 2023 12:52:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master) completed! -Oct 24, 2023 12:52:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... -Oct 24, 2023 12:52:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F11-2/tp.git completed! -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F11-3/tp.git... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F11-3/tp.git to complete... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W08-1/tp.git completed! -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-2/tp.git completed! +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F08-3/tp.git... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F08-3/tp.git to complete... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-2/tp.git completed! -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W08-1/tp.git completed! +Oct 24, 2023 3:33:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W11-4/tp.git... -Oct 24, 2023 12:52:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W11-4/tp.git to complete... -Oct 24, 2023 12:52:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F08-0/tp.git completed! -Oct 24, 2023 12:52:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T17-1/tp.git... -Oct 24, 2023 12:52:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T17-1/tp.git to complete... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F08-3/tp.git completed! -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W11-3/tp.git... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W11-3/tp.git to complete... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master)... +Oct 24, 2023 3:33:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-3/tp.git (master) completed! +Oct 24, 2023 3:33:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W11-4/tp.git completed! -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T17-4/tp.git... -Oct 24, 2023 12:52:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T17-4/tp.git to complete... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F11-3/tp.git completed! -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T08-3/tp.git... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T08-3/tp.git to complete... -Oct 24, 2023 12:52:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... +Oct 24, 2023 3:33:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master)... +Oct 24, 2023 3:33:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-1/tp.git completed! -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-2/tp.git (master) completed! +Oct 24, 2023 3:33:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T08-4/tp.git... -Oct 24, 2023 12:52:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T08-4/tp.git to complete... -Oct 24, 2023 12:52:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master) completed! -Oct 24, 2023 12:52:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... -Oct 24, 2023 12:52:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... -Oct 24, 2023 12:52:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... -Oct 24, 2023 12:52:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... -Oct 24, 2023 12:52:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master) completed! -Oct 24, 2023 12:52:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... -Oct 24, 2023 12:52:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-4/tp.git completed! -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... +Oct 24, 2023 3:33:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... +Oct 24, 2023 3:33:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W11-3/tp.git completed! +Oct 24, 2023 3:33:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T14-3/tp.git... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-3/tp.git completed! -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T14-3/tp.git to complete... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-4/tp.git completed! +Oct 24, 2023 3:33:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T14-4/tp.git... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T14-4/tp.git to complete... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W11-3/tp.git completed! -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-3/tp.git completed! +Oct 24, 2023 3:33:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T11-2/tp.git... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T11-2/tp.git to complete... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-4/tp.git completed! -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T11-3/tp.git... -Oct 24, 2023 12:52:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T11-3/tp.git to complete... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-2/tp.git completed! -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-3/tp.git completed! +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T10-1/tp.git... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T10-1/tp.git to complete... -Oct 24, 2023 12:52:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-3/tp.git completed! -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-2/tp.git completed! +Oct 24, 2023 3:33:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W15-2/tp.git... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W15-2/tp.git to complete... -Oct 24, 2023 12:52:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... -Oct 24, 2023 12:52:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master) completed! -Oct 24, 2023 12:52:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-3/tp.git completed! -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-4/tp.git completed! +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F10-1/tp.git... -Oct 24, 2023 12:52:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F10-1/tp.git to complete... -Oct 24, 2023 12:52:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... -Oct 24, 2023 12:52:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-4/tp.git completed! -Oct 24, 2023 12:52:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-1/tp.git completed! +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T13-2/tp.git... -Oct 24, 2023 12:52:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T13-2/tp.git to complete... -Oct 24, 2023 12:52:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-1/tp.git completed! -Oct 24, 2023 12:52:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-3/tp.git completed! +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T12-4/tp.git... -Oct 24, 2023 12:52:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T12-4/tp.git to complete... -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-1/tp.git completed! -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-2/tp.git completed! +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W12-1/tp.git... -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W12-1/tp.git to complete... -Oct 24, 2023 12:52:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-2/tp.git completed! -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... +Oct 24, 2023 3:33:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... +Oct 24, 2023 3:33:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master)... +Oct 24, 2023 3:33:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-4/tp.git (master) completed! +Oct 24, 2023 3:33:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... +Oct 24, 2023 3:33:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... +Oct 24, 2023 3:33:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master)... +Oct 24, 2023 3:33:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-1/tp.git completed! +Oct 24, 2023 3:33:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W08-4/tp.git... -Oct 24, 2023 12:52:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W08-4/tp.git to complete... -Oct 24, 2023 12:52:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... -Oct 24, 2023 12:52:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master) completed! -Oct 24, 2023 12:52:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... -Oct 24, 2023 12:52:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-1/tp.git (master) completed! +Oct 24, 2023 3:33:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... +Oct 24, 2023 3:33:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-2/tp.git completed! -Oct 24, 2023 12:52:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... +Oct 24, 2023 3:33:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-W14-1/tp.git... -Oct 24, 2023 12:52:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-W14-1/tp.git to complete... -Oct 24, 2023 12:52:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-4/tp.git completed! -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-1/tp.git completed! +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-F13-3/tp.git... -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-F13-3/tp.git to complete... -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-1/tp.git completed! -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-4/tp.git completed! +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T09-1/tp.git... -Oct 24, 2023 12:52:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T09-1/tp.git to complete... -Oct 24, 2023 12:52:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W08-4/tp.git completed! -Oct 24, 2023 12:52:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W17-1/tp.git... -Oct 24, 2023 12:52:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W17-1/tp.git to complete... -Oct 24, 2023 12:52:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... -Oct 24, 2023 12:52:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-W14-1/tp.git completed! -Oct 24, 2023 12:52:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T15-1/tp.git... -Oct 24, 2023 12:52:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T15-1/tp.git to complete... -Oct 24, 2023 12:52:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... -Oct 24, 2023 12:52:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master) completed! -Oct 24, 2023 12:52:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... -Oct 24, 2023 12:52:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... -Oct 24, 2023 12:52:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-F13-3/tp.git completed! -Oct 24, 2023 12:52:27 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W09-4/tp.git... -Oct 24, 2023 12:52:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W09-4/tp.git to complete... -Oct 24, 2023 12:52:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-1/tp.git completed! -Oct 24, 2023 12:52:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T09-1/tp.git completed! +Oct 24, 2023 3:33:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W09-2/tp.git... -Oct 24, 2023 12:52:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W09-2/tp.git to complete... -Oct 24, 2023 12:52:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T09-1/tp.git completed! -Oct 24, 2023 12:52:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-1/tp.git completed! +Oct 24, 2023 3:33:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W09-3/tp.git... -Oct 24, 2023 12:52:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W09-3/tp.git to complete... -Oct 24, 2023 12:52:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... -Oct 24, 2023 12:52:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T15-1/tp.git completed! -Oct 24, 2023 12:52:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-T16-2/tp.git... -Oct 24, 2023 12:52:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-T16-2/tp.git to complete... -Oct 24, 2023 12:52:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... -Oct 24, 2023 12:52:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master) completed! -Oct 24, 2023 12:52:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... -Oct 24, 2023 12:52:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... -Oct 24, 2023 12:52:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... +Oct 24, 2023 3:33:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... +Oct 24, 2023 3:33:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master) completed! +Oct 24, 2023 3:33:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... +Oct 24, 2023 3:33:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... +Oct 24, 2023 3:33:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W09-4/tp.git completed! -Oct 24, 2023 12:52:30 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W13-4/tp.git... -Oct 24, 2023 12:52:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W13-4/tp.git to complete... -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W09-2/tp.git completed! -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-T16-1/tp.git... -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-T16-1/tp.git to complete... -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W09-3/tp.git completed! -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-T16-3/tp.git... -Oct 24, 2023 12:52:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-T16-3/tp.git to complete... -Oct 24, 2023 12:52:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-T16-2/tp.git completed! -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W13-2/tp.git... -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W13-2/tp.git to complete... -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W13-4/tp.git completed! -Oct 24, 2023 12:52:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W13-1/tp.git... -Oct 24, 2023 12:52:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W13-1/tp.git to complete... -Oct 24, 2023 12:52:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master) completed! -Oct 24, 2023 12:52:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... -Oct 24, 2023 12:52:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... -Oct 24, 2023 12:52:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-T16-1/tp.git completed! -Oct 24, 2023 12:52:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W13-3/tp.git... -Oct 24, 2023 12:52:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W13-3/tp.git to complete... -Oct 24, 2023 12:52:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... +Oct 24, 2023 3:33:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-T16-3/tp.git completed! -Oct 24, 2023 12:52:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F10-2/tp.git... -Oct 24, 2023 12:52:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F10-2/tp.git to complete... -Oct 24, 2023 12:52:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master)... +Oct 24, 2023 3:33:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-2/tp.git (master) completed! +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W13-1/tp.git completed! -Oct 24, 2023 12:52:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F10-4/tp.git... -Oct 24, 2023 12:52:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/98] Analyzing https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F10-4/tp.git to complete... -Oct 24, 2023 12:52:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W13-2/tp.git completed! -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W09-1/tp.git... -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W09-1/tp.git to complete... -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... +Oct 24, 2023 3:33:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W13-3/tp.git completed! -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T13-3/tp.git... -Oct 24, 2023 12:52:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T13-3/tp.git to complete... -Oct 24, 2023 12:52:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... -Oct 24, 2023 12:52:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master) completed! -Oct 24, 2023 12:52:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... -Oct 24, 2023 12:52:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-4/tp.git completed! -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... +Oct 24, 2023 3:33:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W09-1/tp.git completed! -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T12-1/tp.git... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T12-3/tp.git... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T12-1/tp.git to complete... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master)... +Oct 24, 2023 3:33:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-4/tp.git completed! +Oct 24, 2023 3:33:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T12-3/tp.git... +Oct 24, 2023 3:33:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T12-3/tp.git to complete... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-1/tp.git (master) completed! +Oct 24, 2023 3:33:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/98] Analyzing https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... +Oct 24, 2023 3:33:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-2/tp.git completed! -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-F13-2/tp.git... -Oct 24, 2023 12:52:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-F13-2/tp.git to complete... -Oct 24, 2023 12:52:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-3/tp.git completed! -Oct 24, 2023 12:52:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:33:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-1/tp.git completed! +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W12-2/tp.git... -Oct 24, 2023 12:52:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W12-2/tp.git to complete... -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-1/tp.git completed! -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-3/tp.git completed! +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W12-4/tp.git... -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:33:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W12-4/tp.git to complete... -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-F13-2/tp.git completed! -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-F13-4/tp.git... -Oct 24, 2023 12:52:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-F13-4/tp.git to complete... -Oct 24, 2023 12:52:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-3/tp.git completed! -Oct 24, 2023 12:52:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-4/tp.git completed! +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W08-3/tp.git... -Oct 24, 2023 12:52:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W08-3/tp.git to complete... -Oct 24, 2023 12:52:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... -Oct 24, 2023 12:52:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... -Oct 24, 2023 12:52:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master) completed! -Oct 24, 2023 12:52:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-2/tp.git completed! -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-3/tp.git completed! +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T09-2/tp.git... -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T09-2/tp.git to complete... -Oct 24, 2023 12:52:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-4/tp.git completed! -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master)... +Oct 24, 2023 3:34:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F12-2/tp.git (master) completed! +Oct 24, 2023 3:34:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... +Oct 24, 2023 3:34:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-2/tp.git completed! +Oct 24, 2023 3:34:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T09-4/tp.git... -Oct 24, 2023 12:52:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T09-4/tp.git to complete... -Oct 24, 2023 12:52:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... +Oct 24, 2023 3:34:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-F13-4/tp.git completed! -Oct 24, 2023 12:52:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W17-3/tp.git... -Oct 24, 2023 12:52:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W17-3/tp.git to complete... -Oct 24, 2023 12:52:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W08-3/tp.git completed! -Oct 24, 2023 12:52:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F11-1/tp.git... -Oct 24, 2023 12:52:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F11-1/tp.git to complete... -Oct 24, 2023 12:52:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... -Oct 24, 2023 12:52:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... -Oct 24, 2023 12:52:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master) completed! -Oct 24, 2023 12:52:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/98] Analyzing https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... -Oct 24, 2023 12:52:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103-W14-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... -Oct 24, 2023 12:52:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T09-2/tp.git completed! -Oct 24, 2023 12:52:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W17-4/tp.git... -Oct 24, 2023 12:52:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W17-4/tp.git to complete... -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... +Oct 24, 2023 3:34:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master)... +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T09-4/tp.git completed! -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W08-2/tp.git... -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W16-3/tp.git (master) completed! +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W08-2/tp.git to complete... -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... +Oct 24, 2023 3:34:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-3/tp.git completed! +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F11-1/tp.git completed! -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T14-1/tp.git... -Oct 24, 2023 12:52:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T14-1/tp.git to complete... -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-3/tp.git completed! -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T14-2/tp.git... -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T14-1/tp.git to complete... +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T14-2/tp.git to complete... -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W17-4/tp.git completed! -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T17-3/tp.git... -Oct 24, 2023 12:52:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T17-3/tp.git to complete... -Oct 24, 2023 12:52:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... -Oct 24, 2023 12:52:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master)... -Oct 24, 2023 12:52:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-3/tp.git (master) completed! -Oct 24, 2023 12:52:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... -Oct 24, 2023 12:52:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-1/tp.git completed! -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-3/tp.git completed! +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F08-2/tp.git... -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F08-2/tp.git to complete... -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W08-2/tp.git completed! -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F11-4/tp.git... -Oct 24, 2023 12:52:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F11-4/tp.git to complete... -Oct 24, 2023 12:52:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-3/tp.git completed! -Oct 24, 2023 12:52:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... +Oct 24, 2023 3:34:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master)... +Oct 24, 2023 3:34:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-4/tp.git (master) completed! +Oct 24, 2023 3:34:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-1/tp.git completed! +Oct 24, 2023 3:34:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F08-1/tp.git... -Oct 24, 2023 12:52:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F08-1/tp.git to complete... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T14-2/tp.git completed! -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T08-1/tp.git... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T08-1/tp.git to complete... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-F08-2/tp.git completed! -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T17-2/tp.git... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F11-4/tp.git completed! -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T17-2/tp.git... +Oct 24, 2023 3:34:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T17-2/tp.git to complete... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-F08-2/tp.git completed! +Oct 24, 2023 3:34:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W11-1/tp.git... -Oct 24, 2023 12:52:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W11-1/tp.git to complete... -Oct 24, 2023 12:52:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F08-1/tp.git completed! -Oct 24, 2023 12:52:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W11-2/tp.git... -Oct 24, 2023 12:52:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W11-2/tp.git to complete... -Oct 24, 2023 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-2/tp.git completed! +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-1/tp.git completed! -Oct 24, 2023 12:52:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T08-2/tp.git... -Oct 24, 2023 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T08-2/tp.git to complete... -Oct 24, 2023 12:52:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T17-2/tp.git completed! -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T11-4/tp.git... -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T11-4/tp.git to complete... -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T08-2/tp.git to complete... +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W11-1/tp.git completed! -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T11-1/tp.git... -Oct 24, 2023 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T11-1/tp.git to complete... -Oct 24, 2023 12:52:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... -Oct 24, 2023 12:52:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103-W14-2/tp.git (master) completed! -Oct 24, 2023 12:52:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... -Oct 24, 2023 12:52:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:52:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... -Oct 24, 2023 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W11-2/tp.git completed! -Oct 24, 2023 12:52:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T10-3/tp.git... -Oct 24, 2023 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T10-3/tp.git to complete... -Oct 24, 2023 12:52:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-2/tp.git completed! -Oct 24, 2023 12:52:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-4/tp.git completed! +Oct 24, 2023 3:34:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master)... +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W10-4/tp.git... -Oct 24, 2023 12:52:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W10-4/tp.git to complete... -Oct 24, 2023 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-4/tp.git completed! -Oct 24, 2023 12:52:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-2/tp.git (master) completed! +Oct 24, 2023 3:34:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T08-2/tp.git completed! +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T13-0/tp.git... -Oct 24, 2023 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T13-0/tp.git to complete... -Oct 24, 2023 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... +Oct 24, 2023 3:34:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T11-1/tp.git completed! -Oct 24, 2023 12:53:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-F10-3/tp.git... -Oct 24, 2023 12:53:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-F10-3/tp.git to complete... -Oct 24, 2023 12:53:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... +Oct 24, 2023 3:34:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W10-4/tp.git completed! -Oct 24, 2023 12:53:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T13-4/tp.git... -Oct 24, 2023 12:53:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T13-4/tp.git to complete... -Oct 24, 2023 12:53:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master)... +Oct 24, 2023 3:34:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-3/tp.git (master) completed! +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T10-3/tp.git completed! -Oct 24, 2023 12:53:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-F13-1/tp.git... -Oct 24, 2023 12:53:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/98] Analyzing https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-F13-1/tp.git to complete... -Oct 24, 2023 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103-W14-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-0/tp.git completed! -Oct 24, 2023 12:53:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W15-4/tp.git... -Oct 24, 2023 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W15-4/tp.git to complete... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-F10-3/tp.git completed! -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-W12-3/tp.git... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-W12-3/tp.git to complete... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103-F13-1/tp.git completed! -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-4/tp.git completed! +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T12-2/tp.git... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T12-2/tp.git to complete... -Oct 24, 2023 12:53:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T13-4/tp.git completed! -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103-F13-1/tp.git completed! +Oct 24, 2023 3:34:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T09-3/tp.git... -Oct 24, 2023 12:53:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T09-3/tp.git to complete... -Oct 24, 2023 12:53:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... -Oct 24, 2023 12:53:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... -Oct 24, 2023 12:53:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master) completed! -Oct 24, 2023 12:53:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... -Oct 24, 2023 12:53:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... -Oct 24, 2023 12:53:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... -Oct 24, 2023 12:53:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master) completed! -Oct 24, 2023 12:53:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/98] Analyzing https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... -Oct 24, 2023 12:53:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... -Oct 24, 2023 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-W15-4/tp.git completed! -Oct 24, 2023 12:53:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103-W14-3/tp.git... -Oct 24, 2023 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103-W14-3/tp.git to complete... -Oct 24, 2023 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-2/tp.git completed! -Oct 24, 2023 12:53:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 24, 2023 3:34:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-3/tp.git completed! +Oct 24, 2023 3:34:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2103T-T15-3/tp.git... -Oct 24, 2023 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2103T-T15-3/tp.git to complete... -Oct 24, 2023 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2103T-W12-3/tp.git completed! -Oct 24, 2023 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2103T-T12-2/tp.git completed! +Oct 24, 2023 3:34:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T09-3/tp.git completed! -Oct 24, 2023 12:53:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103-W14-3/tp.git completed! -Oct 24, 2023 12:53:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 24, 2023 3:34:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2103T-T15-3/tp.git completed! -Oct 24, 2023 12:53:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... -Oct 24, 2023 12:53:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... -Oct 24, 2023 12:53:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... -Oct 24, 2023 12:53:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master) completed! -Oct 24, 2023 12:53:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... -Oct 24, 2023 12:53:11 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-W14-2/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103-W14-2/tp.git (master) completed! +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-1/tp.git (master) completed! +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... +Oct 24, 2023 3:34:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... +Oct 24, 2023 3:34:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... +Oct 24, 2023 3:34:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master)... +Oct 24, 2023 3:34:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-2/tp.git (master) completed! +Oct 24, 2023 3:34:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... +Oct 24, 2023 3:34:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... +Oct 24, 2023 3:34:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... +Oct 24, 2023 3:34:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master)... +Oct 24, 2023 3:34:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-4/tp.git (master) completed! +Oct 24, 2023 3:34:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... +Oct 24, 2023 3:34:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... -Oct 24, 2023 12:53:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... +Oct 24, 2023 3:34:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master)... -Oct 24, 2023 12:53:11 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F11-2/tp.git (master) completed! -Oct 24, 2023 12:53:11 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/98] Analyzing https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... +Oct 24, 2023 3:34:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... +Oct 24, 2023 3:34:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... +Oct 24, 2023 3:34:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... +Oct 24, 2023 3:34:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master) completed! +Oct 24, 2023 3:34:34 AM reposense.report.ReportGenerator analyzeRepos INFO: [22/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master)... -Oct 24, 2023 12:53:11 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master)... -Oct 24, 2023 12:53:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master)... -Oct 24, 2023 12:53:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master)... -Oct 24, 2023 12:53:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-0/tp.git (master) completed! -Oct 24, 2023 12:53:13 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [23/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... -Oct 24, 2023 12:53:13 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... -Oct 24, 2023 12:53:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... -Oct 24, 2023 12:53:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... -Oct 24, 2023 12:53:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master) completed! -Oct 24, 2023 12:53:14 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... +Oct 24, 2023 3:34:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master)... +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-1/tp.git (master) completed! +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [24/98] Analyzing https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master)... -Oct 24, 2023 12:53:14 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master)... -Oct 24, 2023 12:53:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... -Oct 24, 2023 12:53:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master)... -Oct 24, 2023 12:53:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-2/tp.git (master) completed! -Oct 24, 2023 12:53:15 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... +Oct 24, 2023 3:34:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master)... +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-3/tp.git (master) completed! +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [25/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master)... -Oct 24, 2023 12:53:16 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master)... -Oct 24, 2023 12:53:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master)... -Oct 24, 2023 12:53:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master)... -Oct 24, 2023 12:53:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W11-4/tp.git (master) completed! -Oct 24, 2023 12:53:16 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [26/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master)... -Oct 24, 2023 12:53:16 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master)... -Oct 24, 2023 12:53:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master)... -Oct 24, 2023 12:53:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master)... -Oct 24, 2023 12:53:18 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F11-3/tp.git (master) completed! -Oct 24, 2023 12:53:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... -Oct 24, 2023 12:53:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... -Oct 24, 2023 12:53:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/98] Analyzing https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... +Oct 24, 2023 3:34:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-1/tp.git (master) completed! -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master) completed! +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... +Oct 24, 2023 3:34:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-4/tp.git (master) completed! -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/98] Analyzing https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... -Oct 24, 2023 12:53:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master) completed! -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator analyzeRepos INFO: [30/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W11-3/tp.git (master) completed! -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master)... -Oct 24, 2023 12:53:23 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... +Oct 24, 2023 3:34:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master)... +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-3/tp.git (master) completed! +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... +Oct 24, 2023 3:34:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... +Oct 24, 2023 3:34:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... +Oct 24, 2023 3:34:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master) completed! +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master)... +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master)... -Oct 24, 2023 12:53:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master)... -Oct 24, 2023 12:53:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master)... -Oct 24, 2023 12:53:25 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-4/tp.git (master) completed! -Oct 24, 2023 12:53:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... -Oct 24, 2023 12:53:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... -Oct 24, 2023 12:53:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... +Oct 24, 2023 3:34:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... +Oct 24, 2023 3:34:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master)... -Oct 24, 2023 12:53:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master)... -Oct 24, 2023 12:53:26 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-2/tp.git (master) completed! -Oct 24, 2023 12:53:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... -Oct 24, 2023 12:53:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... -Oct 24, 2023 12:53:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... -Oct 24, 2023 12:53:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master)... -Oct 24, 2023 12:53:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-3/tp.git (master) completed! -Oct 24, 2023 12:53:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... -Oct 24, 2023 12:53:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... -Oct 24, 2023 12:53:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... -Oct 24, 2023 12:53:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... -Oct 24, 2023 12:53:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master) completed! -Oct 24, 2023 12:53:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master)... -Oct 24, 2023 12:53:28 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master)... +Oct 24, 2023 3:34:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master)... -Oct 24, 2023 12:53:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master)... -Oct 24, 2023 12:53:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master)... -Oct 24, 2023 12:53:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-1/tp.git (master) completed! -Oct 24, 2023 12:53:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... -Oct 24, 2023 12:53:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... -Oct 24, 2023 12:53:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... -Oct 24, 2023 12:53:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... +Oct 24, 2023 3:34:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master)... -Oct 24, 2023 12:53:30 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-4/tp.git (master) completed! -Oct 24, 2023 12:53:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master)... -Oct 24, 2023 12:53:31 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master)... +Oct 24, 2023 3:34:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master)... -Oct 24, 2023 12:53:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... -Oct 24, 2023 12:53:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... -Oct 24, 2023 12:53:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master) completed! -Oct 24, 2023 12:53:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... -Oct 24, 2023 12:53:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... -Oct 24, 2023 12:53:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... +Oct 24, 2023 3:34:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master)... +Oct 24, 2023 3:34:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-3/tp.git (master) completed! +Oct 24, 2023 3:34:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... +Oct 24, 2023 3:34:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... +Oct 24, 2023 3:34:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master)... -Oct 24, 2023 12:53:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master)... -Oct 24, 2023 12:53:33 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-2/tp.git (master) completed! -Oct 24, 2023 12:53:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... -Oct 24, 2023 12:53:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... -Oct 24, 2023 12:53:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... +Oct 24, 2023 3:34:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... +Oct 24, 2023 3:34:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... -Oct 24, 2023 12:53:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... +Oct 24, 2023 3:34:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master)... -Oct 24, 2023 12:53:34 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T13-2/tp.git (master) completed! -Oct 24, 2023 12:53:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master)... -Oct 24, 2023 12:53:34 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master)... +Oct 24, 2023 3:34:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master)... +Oct 24, 2023 3:34:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master)... -Oct 24, 2023 12:53:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-1/tp.git (master) completed! +Oct 24, 2023 3:34:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... +Oct 24, 2023 3:34:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... +Oct 24, 2023 3:34:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... -Oct 24, 2023 12:53:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master)... -Oct 24, 2023 12:53:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-4/tp.git (master) completed! -Oct 24, 2023 12:53:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [41/98] Analyzing https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... -Oct 24, 2023 12:53:35 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... -Oct 24, 2023 12:53:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master)... -Oct 24, 2023 12:53:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master)... -Oct 24, 2023 12:53:36 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-1/tp.git (master) completed! -Oct 24, 2023 12:53:36 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [42/98] Analyzing https://github.com/AY2324S1-CS2103-W14-1/tp.git (master)... -Oct 24, 2023 12:53:36 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:34:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103-W14-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:34:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-W14-1/tp.git (master)... -Oct 24, 2023 12:53:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... -Oct 24, 2023 12:53:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... -Oct 24, 2023 12:53:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master) completed! -Oct 24, 2023 12:53:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/98] Analyzing https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... -Oct 24, 2023 12:53:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... -Oct 24, 2023 12:53:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-W14-1/tp.git (master)... -Oct 24, 2023 12:53:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:34:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-W14-1/tp.git (master)... -Oct 24, 2023 12:53:38 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:34:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-W14-1/tp.git (master) completed! -Oct 24, 2023 12:53:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... -Oct 24, 2023 12:53:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:34:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/98] Analyzing https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... +Oct 24, 2023 3:34:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:34:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... +Oct 24, 2023 3:34:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... +Oct 24, 2023 3:34:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master)... +Oct 24, 2023 3:34:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-4/tp.git (master) completed! +Oct 24, 2023 3:34:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/98] Analyzing https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... +Oct 24, 2023 3:35:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... +Oct 24, 2023 3:35:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-F13-3/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-F13-3/tp.git (master) completed! -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/98] Analyzing https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... +Oct 24, 2023 3:35:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... +Oct 24, 2023 3:35:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-1/tp.git (master) completed! -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... -Oct 24, 2023 12:53:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... -Oct 24, 2023 12:53:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... -Oct 24, 2023 12:53:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master)... -Oct 24, 2023 12:53:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T09-1/tp.git (master) completed! -Oct 24, 2023 12:53:42 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [47/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master)... -Oct 24, 2023 12:53:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master)... -Oct 24, 2023 12:53:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... -Oct 24, 2023 12:53:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... -Oct 24, 2023 12:53:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master) completed! -Oct 24, 2023 12:53:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... -Oct 24, 2023 12:53:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... -Oct 24, 2023 12:53:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master)... -Oct 24, 2023 12:53:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master)... -Oct 24, 2023 12:53:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W09-4/tp.git (master) completed! -Oct 24, 2023 12:53:44 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... +Oct 24, 2023 3:35:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... +Oct 24, 2023 3:35:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... +Oct 24, 2023 3:35:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master)... +Oct 24, 2023 3:35:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-1/tp.git (master) completed! +Oct 24, 2023 3:35:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [49/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master)... -Oct 24, 2023 12:53:45 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master)... -Oct 24, 2023 12:53:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... -Oct 24, 2023 12:53:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... -Oct 24, 2023 12:53:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master) completed! -Oct 24, 2023 12:53:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/98] Analyzing https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... -Oct 24, 2023 12:53:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103-T16-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... -Oct 24, 2023 12:53:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master)... -Oct 24, 2023 12:53:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master)... -Oct 24, 2023 12:53:47 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W09-3/tp.git (master) completed! -Oct 24, 2023 12:53:47 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/98] Analyzing https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... +Oct 24, 2023 3:35:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103-T16-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... +Oct 24, 2023 3:35:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... +Oct 24, 2023 3:35:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master)... +Oct 24, 2023 3:35:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W09-2/tp.git (master) completed! +Oct 24, 2023 3:35:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [51/98] Analyzing https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master)... -Oct 24, 2023 12:53:47 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master)... -Oct 24, 2023 12:53:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... -Oct 24, 2023 12:53:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-T16-2/tp.git (master)... -Oct 24, 2023 12:53:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-T16-2/tp.git (master) completed! -Oct 24, 2023 12:53:49 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [52/98] Analyzing https://github.com/AY2324S1-CS2103-T16-1/tp.git (master)... -Oct 24, 2023 12:53:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103-T16-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-T16-1/tp.git (master)... -Oct 24, 2023 12:53:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master)... -Oct 24, 2023 12:53:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master)... -Oct 24, 2023 12:53:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W13-4/tp.git (master) completed! -Oct 24, 2023 12:53:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [53/98] Analyzing https://github.com/AY2324S1-CS2103-T16-3/tp.git (master)... -Oct 24, 2023 12:53:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103-T16-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-T16-3/tp.git (master)... -Oct 24, 2023 12:53:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-T16-1/tp.git (master)... -Oct 24, 2023 12:53:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-T16-1/tp.git (master)... -Oct 24, 2023 12:53:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-T16-1/tp.git (master) completed! -Oct 24, 2023 12:53:52 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [54/98] Analyzing https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master)... -Oct 24, 2023 12:53:52 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-T16-3/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-T16-3/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103-T16-3/tp.git (master) completed! -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/98] Analyzing https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W13-1/tp.git (master) completed! -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/98] Analyzing https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... +Oct 24, 2023 3:35:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-T16-3/tp.git (master)... +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103-T16-3/tp.git (master) completed! +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [56/98] Analyzing https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master)... -Oct 24, 2023 12:53:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W13-2/tp.git (master) completed! -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... +Oct 24, 2023 3:35:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... +Oct 24, 2023 3:35:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W13-3/tp.git (master) completed! -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/98] Analyzing https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... -Oct 24, 2023 12:53:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master) completed! -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... +Oct 24, 2023 3:35:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... +Oct 24, 2023 3:35:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W09-1/tp.git (master) completed! -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... -Oct 24, 2023 12:53:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:53:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... -Oct 24, 2023 12:54:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... -Oct 24, 2023 12:54:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... -Oct 24, 2023 12:54:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master) completed! -Oct 24, 2023 12:54:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... -Oct 24, 2023 12:54:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... +Oct 24, 2023 3:35:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... +Oct 24, 2023 3:35:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... +Oct 24, 2023 3:35:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master)... +Oct 24, 2023 3:35:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-4/tp.git (master) completed! +Oct 24, 2023 3:35:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... +Oct 24, 2023 3:35:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... -Oct 24, 2023 12:54:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... +Oct 24, 2023 3:35:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... +Oct 24, 2023 3:35:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master) completed! +Oct 24, 2023 3:35:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... +Oct 24, 2023 3:35:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... +Oct 24, 2023 3:35:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... -Oct 24, 2023 12:54:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master)... -Oct 24, 2023 12:54:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-2/tp.git (master) completed! -Oct 24, 2023 12:54:03 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/98] Analyzing https://github.com/AY2324S1-CS2103-F13-2/tp.git (master)... -Oct 24, 2023 12:54:04 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-2/tp.git (master)... -Oct 24, 2023 12:54:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... -Oct 24, 2023 12:54:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master)... -Oct 24, 2023 12:54:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-1/tp.git (master) completed! -Oct 24, 2023 12:54:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... -Oct 24, 2023 12:54:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... -Oct 24, 2023 12:54:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... +Oct 24, 2023 3:35:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master)... +Oct 24, 2023 3:35:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T13-3/tp.git (master) completed! +Oct 24, 2023 3:35:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... +Oct 24, 2023 3:35:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... +Oct 24, 2023 3:35:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-F13-2/tp.git (master)... -Oct 24, 2023 12:54:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-F13-2/tp.git (master)... -Oct 24, 2023 12:54:06 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-F13-2/tp.git (master) completed! -Oct 24, 2023 12:54:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... -Oct 24, 2023 12:54:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... +Oct 24, 2023 3:35:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... +Oct 24, 2023 3:35:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... +Oct 24, 2023 3:35:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... +Oct 24, 2023 3:35:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master) completed! +Oct 24, 2023 3:35:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... +Oct 24, 2023 3:35:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... -Oct 24, 2023 12:54:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... -Oct 24, 2023 12:54:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master)... -Oct 24, 2023 12:54:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-3/tp.git (master) completed! -Oct 24, 2023 12:54:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... -Oct 24, 2023 12:54:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... -Oct 24, 2023 12:54:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... -Oct 24, 2023 12:54:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... -Oct 24, 2023 12:54:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master) completed! -Oct 24, 2023 12:54:08 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [66/98] Analyzing https://github.com/AY2324S1-CS2103-F13-4/tp.git (master)... -Oct 24, 2023 12:54:08 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103-F13-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-4/tp.git (master)... -Oct 24, 2023 12:54:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-4/tp.git (master) completed! -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... +Oct 24, 2023 3:35:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master)... +Oct 24, 2023 3:35:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-2/tp.git (master) completed! +Oct 24, 2023 3:35:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [67/98] Analyzing https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-F13-4/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-F13-4/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-F13-4/tp.git (master) completed! -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [68/98] Analyzing https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master)... -Oct 24, 2023 12:54:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master)... -Oct 24, 2023 12:54:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master)... -Oct 24, 2023 12:54:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master)... -Oct 24, 2023 12:54:12 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T09-2/tp.git (master) completed! -Oct 24, 2023 12:54:12 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [69/98] Analyzing https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master)... -Oct 24, 2023 12:54:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master)... -Oct 24, 2023 12:54:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master)... -Oct 24, 2023 12:54:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master)... -Oct 24, 2023 12:54:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-3/tp.git (master) completed! -Oct 24, 2023 12:54:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... -Oct 24, 2023 12:54:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... -Oct 24, 2023 12:54:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... +Oct 24, 2023 3:35:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... +Oct 24, 2023 3:35:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master)... -Oct 24, 2023 12:54:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master)... -Oct 24, 2023 12:54:14 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T09-4/tp.git (master) completed! -Oct 24, 2023 12:54:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... -Oct 24, 2023 12:54:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... -Oct 24, 2023 12:54:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... -Oct 24, 2023 12:54:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... -Oct 24, 2023 12:54:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master) completed! -Oct 24, 2023 12:54:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... +Oct 24, 2023 3:35:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... +Oct 24, 2023 3:35:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... -Oct 24, 2023 12:54:18 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... +Oct 24, 2023 3:35:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master) completed! +Oct 24, 2023 3:35:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [72/98] Analyzing https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master)... -Oct 24, 2023 12:54:18 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master)... -Oct 24, 2023 12:54:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master)... -Oct 24, 2023 12:54:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-3/tp.git (master) completed! -Oct 24, 2023 12:54:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... -Oct 24, 2023 12:54:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... -Oct 24, 2023 12:54:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master)... -Oct 24, 2023 12:54:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master)... -Oct 24, 2023 12:54:19 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W17-4/tp.git (master) completed! -Oct 24, 2023 12:54:19 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... +Oct 24, 2023 3:35:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... +Oct 24, 2023 3:35:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... +Oct 24, 2023 3:35:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master)... +Oct 24, 2023 3:35:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F11-1/tp.git (master) completed! +Oct 24, 2023 3:35:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [74/98] Analyzing https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master)... -Oct 24, 2023 12:54:19 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master)... -Oct 24, 2023 12:54:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... -Oct 24, 2023 12:54:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... -Oct 24, 2023 12:54:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master) completed! -Oct 24, 2023 12:54:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... -Oct 24, 2023 12:54:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... -Oct 24, 2023 12:54:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... +Oct 24, 2023 3:35:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... +Oct 24, 2023 3:35:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master) completed! +Oct 24, 2023 3:35:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [75/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... +Oct 24, 2023 3:35:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... +Oct 24, 2023 3:35:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master)... -Oct 24, 2023 12:54:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master)... -Oct 24, 2023 12:54:21 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W08-2/tp.git (master) completed! -Oct 24, 2023 12:54:21 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [76/98] Analyzing https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master)... -Oct 24, 2023 12:54:21 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master)... -Oct 24, 2023 12:54:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... -Oct 24, 2023 12:54:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master)... -Oct 24, 2023 12:54:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-3/tp.git (master) completed! -Oct 24, 2023 12:54:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... -Oct 24, 2023 12:54:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... -Oct 24, 2023 12:54:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... -Oct 24, 2023 12:54:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... -Oct 24, 2023 12:54:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master) completed! -Oct 24, 2023 12:54:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master)... -Oct 24, 2023 12:54:24 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... +Oct 24, 2023 3:35:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master)... +Oct 24, 2023 3:35:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-1/tp.git (master) completed! +Oct 24, 2023 3:35:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/98] Analyzing https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master)... +Oct 24, 2023 3:35:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master)... -Oct 24, 2023 12:54:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master)... -Oct 24, 2023 12:54:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master)... -Oct 24, 2023 12:54:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T14-2/tp.git (master) completed! -Oct 24, 2023 12:54:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... -Oct 24, 2023 12:54:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... -Oct 24, 2023 12:54:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... +Oct 24, 2023 3:35:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master)... -Oct 24, 2023 12:54:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... +Oct 24, 2023 3:35:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master)... -Oct 24, 2023 12:54:25 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F11-4/tp.git (master) completed! -Oct 24, 2023 12:54:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... -Oct 24, 2023 12:54:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... -Oct 24, 2023 12:54:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/98] Analyzing https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... +Oct 24, 2023 3:35:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... +Oct 24, 2023 3:35:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... +Oct 24, 2023 3:35:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master)... +Oct 24, 2023 3:35:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-2/tp.git (master) completed! +Oct 24, 2023 3:35:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... +Oct 24, 2023 3:35:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... +Oct 24, 2023 3:35:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... +Oct 24, 2023 3:35:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... +Oct 24, 2023 3:35:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master) completed! +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F08-1/tp.git (master) completed! -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/98] Analyzing https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master) completed! -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [82/98] Analyzing https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master)... -Oct 24, 2023 12:54:28 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... +Oct 24, 2023 3:35:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master)... -Oct 24, 2023 12:54:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master)... -Oct 24, 2023 12:54:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master)... -Oct 24, 2023 12:54:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W11-1/tp.git (master) completed! -Oct 24, 2023 12:54:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [83/98] Analyzing https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master)... -Oct 24, 2023 12:54:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master)... -Oct 24, 2023 12:54:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... -Oct 24, 2023 12:54:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master)... -Oct 24, 2023 12:54:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T17-2/tp.git (master) completed! -Oct 24, 2023 12:54:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... -Oct 24, 2023 12:54:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... -Oct 24, 2023 12:54:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... +Oct 24, 2023 3:35:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master)... +Oct 24, 2023 3:35:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-1/tp.git (master) completed! +Oct 24, 2023 3:35:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... +Oct 24, 2023 3:35:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... +Oct 24, 2023 3:35:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master)... -Oct 24, 2023 12:54:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master)... -Oct 24, 2023 12:54:32 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W11-2/tp.git (master) completed! -Oct 24, 2023 12:54:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... -Oct 24, 2023 12:54:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/98] Analyzing https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... +Oct 24, 2023 3:35:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-4/tp.git (master) completed! -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/98] Analyzing https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master) completed! -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... +Oct 24, 2023 3:35:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... +Oct 24, 2023 3:35:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master) completed! +Oct 24, 2023 3:35:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [87/98] Analyzing https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... -Oct 24, 2023 12:54:34 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... +Oct 24, 2023 3:35:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master) completed! -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master)... +Oct 24, 2023 3:35:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T08-2/tp.git (master) completed! +Oct 24, 2023 3:35:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/98] Analyzing https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T11-1/tp.git (master) completed! -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... -Oct 24, 2023 12:54:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:35:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:35:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:35:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T10-3/tp.git (master) completed! -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:35:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... +Oct 24, 2023 3:35:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:35:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... +Oct 24, 2023 3:35:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... +Oct 24, 2023 3:35:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master)... +Oct 24, 2023 3:35:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-W10-4/tp.git (master) completed! +Oct 24, 2023 3:35:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [90/98] Analyzing https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:35:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:35:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T13-0/tp.git (master) completed! -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/98] Analyzing https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... -Oct 24, 2023 12:54:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... -Oct 24, 2023 12:54:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... +Oct 24, 2023 3:36:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:36:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... +Oct 24, 2023 3:36:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master)... -Oct 24, 2023 12:54:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master)... -Oct 24, 2023 12:54:41 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-F10-3/tp.git (master) completed! -Oct 24, 2023 12:54:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/98] Analyzing https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... -Oct 24, 2023 12:54:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/98] Analyzing https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... +Oct 24, 2023 3:36:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:36:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... +Oct 24, 2023 3:36:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T13-4/tp.git (master) completed! -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103-F13-1/tp.git (master) completed! -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:36:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [93/98] Analyzing https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [94/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... -Oct 24, 2023 12:54:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:36:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:36:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master) completed! -Oct 24, 2023 12:54:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [95/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master)... -Oct 24, 2023 12:54:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master)... -Oct 24, 2023 12:54:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W15-4/tp.git (master) completed! -Oct 24, 2023 12:54:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/98] Analyzing https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:36:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... +Oct 24, 2023 3:36:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... +Oct 24, 2023 3:36:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-F13-1/tp.git (master)... +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103-F13-1/tp.git (master) completed! +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [95/98] Analyzing https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... +Oct 24, 2023 3:36:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:36:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... +Oct 24, 2023 3:36:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... +Oct 24, 2023 3:36:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master)... +Oct 24, 2023 3:36:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T12-2/tp.git (master) completed! +Oct 24, 2023 3:36:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/98] Analyzing https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... -Oct 24, 2023 12:54:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:36:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:36:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... -Oct 24, 2023 12:54:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... -Oct 24, 2023 12:54:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... -Oct 24, 2023 12:54:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master) completed! -Oct 24, 2023 12:54:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/98] Analyzing https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... -Oct 24, 2023 12:54:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2103-W14-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... -Oct 24, 2023 12:54:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... -Oct 24, 2023 12:54:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master)... -Oct 24, 2023 12:54:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-W12-3/tp.git (master) completed! -Oct 24, 2023 12:54:49 AM reposense.report.ReportGenerator analyzeRepos +Oct 24, 2023 3:36:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [97/98] Analyzing https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... +Oct 24, 2023 3:36:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2103-W14-3/tp.git (master) does not contain a standalone config file. +Oct 24, 2023 3:36:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... +Oct 24, 2023 3:36:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... +Oct 24, 2023 3:36:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master)... +Oct 24, 2023 3:36:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2103T-T09-3/tp.git (master) completed! +Oct 24, 2023 3:36:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/98] Analyzing https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master)... -Oct 24, 2023 12:54:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 24, 2023 3:36:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Oct 24, 2023 12:54:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 24, 2023 3:36:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master)... -Oct 24, 2023 12:54:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... -Oct 24, 2023 12:54:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103-W14-3/tp.git (master)... -Oct 24, 2023 12:54:51 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103-W14-3/tp.git (master) completed! -Oct 24, 2023 12:54:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 24, 2023 3:36:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master)... -Oct 24, 2023 12:54:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 24, 2023 3:36:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master)... -Oct 24, 2023 12:54:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 24, 2023 3:36:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2103T-T15-3/tp.git (master) completed! -Oct 24, 2023 12:54:52 AM reposense.report.ReportGenerator generateReposReport +Oct 24, 2023 3:36:13 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 24, 2023 12:54:54 AM reposense.RepoSense main -INFO: Elapsed processing time: 3 minute(s) 4.09 second(s) +Oct 24, 2023 3:36:15 AM reposense.RepoSense main +INFO: Elapsed processing time: 3 minute(s) 0.69 second(s) diff --git a/summary.json b/summary.json index 9d928908..d6e16207 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"0c4045d4f4","reportGeneratedTime":"Tue Oct 24 08:51:51 2023 UTC+08:00","reportGenerationTime":" 3 minute(s) 1.54 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-1/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-2/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-3/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-0/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-0","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-0/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-0_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-1/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-2/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-3/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-0/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-0","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-0/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-0_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-4_tp_master"}],"errorSet":[],"sinceDate":"2023-09-22","untilDate":"2023-10-24","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":"0c4045d4f4","reportGeneratedTime":"Tue Oct 24 11:33:15 2023 UTC+08:00","reportGenerationTime":" 2 minute(s) 58.28 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-1/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-2/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-W14-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-W14-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-W14-3/tp[master]","outputFolderName":"AY2324S1-CS2103-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W15-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W15-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W15-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W16-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W16-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W16-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-W17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-W17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-W17-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-W17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-0/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-0","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-0/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-0_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-1/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-2/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-T16-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-T16-3/tp[master]","outputFolderName":"AY2324S1-CS2103-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F08-0/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F08-0","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F08-0/tp[master]","outputFolderName":"AY2324S1-CS2103T-F08-0_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2324S1-CS2103-F13-4_tp_master"}],"errorSet":[],"sinceDate":"2023-09-22","untilDate":"2023-10-24","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"}}}